Jump to content

Fábio.info7

Members
  • Content count

    15
  • Joined

  • Last visited

Community Reputation

0 Comum

About Fábio.info7

Recent Profile Visitors

263 profile views
  1. Olá pessoal, estou precisando de uma grande ajuda, tenho duas tabelas no postgres, são elas: PESSOA e a outra é ENDERECOS, elas estão relacionadas, oq acontece é que no php eu preciso recuperar o valor do id através da função nextval('nome_da_sequnce'), e não estou sabendo fazer, preciso recuperar o ultimo id e depois realizar o insert nas tabelas relacionadas, poderiam me dar um exemplo de como implementar isso? abaixo deixo o meu codigo php, acredito que esteja errado pois não esta gravando no banco. Minhas tabelas do banco: CREATE TABLE public.pessoa ( codigo_aluno integer NOT NULL DEFAULT nextval('pessoa_codigo_aluno_seq'::regclass), cpf character varying(11) COLLATE pg_catalog."default" NOT NULL, nome character varying(30) COLLATE pg_catalog."default" NOT NULL, sexo character varying(30) COLLATE pg_catalog."default" NOT NULL, nascimentodata date NOT NULL, email character varying(50) COLLATE pg_catalog."default" NOT NULL, endereco integer, CONSTRAINT pessoa_pkey PRIMARY KEY (codigo_aluno), CONSTRAINT pessoa_endereco_fkey FOREIGN KEY (endereco) REFERENCES public.enderecos (codigo_endereco) ) CREATE TABLE public.enderecos ( codigo_endereco integer NOT NULL DEFAULT nextval('enderecos_codigo_endereco_seq'::regclass), logradouro character varying(200) COLLATE pg_catalog."default" NOT NULL, bairro character varying(80) COLLATE pg_catalog."default" NOT NULL, cidade character varying(100) COLLATE pg_catalog."default" NOT NULL, uf character varying(2) COLLATE pg_catalog."default" NOT NULL, cep character varying(20) COLLATE pg_catalog."default" NOT NULL, CONSTRAINT enderecos_pkey PRIMARY KEY (codigo_endereco) ) ****** ABAIXO O PHP *************************************** <?php try { require_once "conexao.php"; $dados = filter_input_array(INPUT_POST, FILTER_DEFAULT); $sql = "select nextval('pessoa_codigo_aluno_seq')"; $seq = $conn->prepare($sql); $id = $seq->execute(); $id = $seq->fetchAll(PDO::FETCH_ASSOC); $sql = "insert into pessoa (cpf, nome, sexo, nascimentodata, email, endereco ) values (:cpf, :nome, :sexo, :nascimentodata, :email, :fk_endereco )"; $inserir = $conn->prepare($sql); $inserir->bindParam(":cpf", $dados["cpf"]); $inserir->bindParam(":nome", $dados["nome"]); $inserir->bindParam(":sexo", $dados["sexo"]); $inserir->bindParam(":nascimentodata", $dados["nascimentodata"]); $inserir->bindParam(":email", $dados["email"]); $inserir->bindParam(":fk_endereco", $id['codigo_endereco']); $inserir->execute(); // Gravando dados de endereço $sql_end = "insert into enderecos (codigo_endereco, logradouro, bairro, cidade, uf, cep, pessoa )values(:codigo_endereco, :logradouro,:bairro,:cidade,:uf,:cep, :pessoa)"; $end = $conn->prepare($sql_end); $end->bindParam(":codigo_endereco", $id['codigo_endereco']); $end->bindParam(":logradouro", $dados["logradouro"]); $end->bindParam(":bairro", $dados["bairro"]); $end->bindParam(":cidade", $dados["cidade"]); $end->bindParam(":uf", $dados["uf"]); $end->bindParam(":cep", $dados["cep"]); $end->execute(); echo "Dados gravados com sucesso!"; } catch (Exception $e) { echo "Mensagem: " . $e->getMessage() . "<br/>"; echo "Linha do Erro: " . $e->getLine() . "<br/>"; } PRECISO CONSEGUIR INSERIR OS DADOS NAS DUAS TABELAS INSERINDO OS IDS RECUPERADOS PELO NEXTVAL()
  2. Marcos, erro meu, as tabelas estão relacionadas, eu corrigi lá o código acima, eu preciso saber como fazer um insert no php para gravar nas duas tabelas, eu até fiz um insert mas só grava na tabela pessoa, a tabela enderecos não grava nada.
  3. Possuo um formulário com os seguintes dados, nome, idade, cpf, sexo, logradouro, bairro, cidade, eu possuo 1 banco com as seguintes tabelas, TABELA PESSOA E TABELA ENDERECO, ao enviar o formulário eu preciso gravar os dados pessoais na tabela pessoa e os dados de endereço na tabela endereco, o banco é postgres, como fazer isso? Poderiam me dar um exemplo? Só uma observação: Estou usando PDO e com relação as tabelas, elas estão relacionadas entre si pela chave primária. Acredito que a solução seja simples, mas sou iniciante em php, preciso dessa força para continuar meus estudos. nome, idade ,cpf, sexo Sege as tabelas do meu banco postgres: create table pessoa( codigo serial not null, nome varchar(30) not null, idade int not null, cpf varchar(11) not null, sexo varchar(20) not null ); CREATE TABLE public.enderecos ( codigo integer NOT NULL DEFAULT nextval('enderecos_codigo_seq'::regclass), logradouro character varying(80) COLLATE pg_catalog."default" NOT NULL, bairro character varying(80) COLLATE pg_catalog."default" NOT NULL, cidade character varying(80) COLLATE pg_catalog."default" NOT NULL, uf character varying(2) COLLATE pg_catalog."default", cep character varying(9) COLLATE pg_catalog."default", pessoa integer, CONSTRAINT codigo_end PRIMARY KEY (codigo), CONSTRAINT enderecos_pessoa_fkey FOREIGN KEY (pessoa) REFERENCES public.pessoa (codigo) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION ) WITH ( OIDS = FALSE ) TABLESPACE pg_default; ALTER TABLE public.enderecos OWNER to postgres; AQUI MEU FORMULÁRIO: <form action="grava.php" method="post"> Nome: <input type="text" name="nome"><br> CPF:<input type="text" name="cpf"><br> Sexo: <input type="text" name="sexo"><br> Idade: <input type="text" name="idade"><br> Logradouro: <input type="text" name="logradouro"><br> Bairro: <input type="text" name="bairro"><br> Cidade: <input type="text" name="cidade"><br> Cep: <input type="text" name="cep"><br> <input type="submit" value="Cadastrar"> </form> ERQUIVO enviar.php: <?php try { require_once "conexao.php"; $dados = filter_input_array(INPUT_POST, FILTER_DEFAULT); // Gravando dados pessoais $sql = "insert into pessoa (cpf, nome, sexo, nascimentodata, email ) values (:cpf, :nome, :sexo, :nascimentodata, :email )"; $inserir = $conn->prepare($sql); $inserir->bindParam(":cpf", $dados["cpf"]); $inserir->bindParam(":nome", $dados["nome"]); $inserir->bindParam(":sexo", $dados["sexo"]); $inserir->bindParam(":nascimentodata", $dados["nascimentodata"]); $inserir->bindParam(":email", $dados["email"]); $inserir->execute(); // Gravando dados de endereço $sql_end = "insert into enderecos (logradouro, bairro, cidade, uf, cep )values(:logradouro,:bairro,:cidade,:uf,:cep)"; $end = $conn->prepare($sql_end); $end->bindParam(":logradouro", $dados["logradouro"]); $end->bindParam(":bairro", $dados["bairro"]); $end->bindParam(":cidade", $dados["cidade"]); $end->bindParam(":uf", $dados["uf"]); $end->bindParam(":cep", $dados["cep"]); $end->execute(); echo "Dados gravados com sucesso!"; } catch (Exception $e) { echo "Mensagem: " . $e->getMessage() . "<br/>"; echo "Linha do Erro: " . $e->getLine() . "<br/>"; }
  4. Fábio.info7

    Recuperar Array Formulario

    Maurohpg, também sou iniciante em php, não sei se era isso que você estava precisando, tinha a mesma dúvida que você aprendi isso a pouco e foi muito útil pra mim, se eu estiver errado e alguém com mais experiência puder me corrigir eu agradeço, mas isso que eu te passei funcionou perfeitamente pra mim.
  5. Fábio.info7

    Recuperar Array Formulario

    Certo, ao invés de você fazer isso para resgatar o dados: $assunto = "Compras Online"; $nome=$_POST["nome"]; $email=$_POST["email"]; $telefone=$_POST["telefone"]; $celular=$_POST["celular"]; $endereco=$_POST["endereco"]; $horario=$_POST["horario"]; $pagamento=$_POST["pagamento"]; $produto=$_POST["produto"]; $marca=$_POST["marca"]; $quantidade=$_POST["quantidade"]; $cartao=$_POST["cartao"]; $cpf=$_POST["cpf"]; $data = date("d/m/y"); //hidden $hora = date("H:i"); //hidden $ip = $_SERVER['REMOTE_ADDR']; //hidden $navegador = $_SERVER['HTTP_USER_AGENT']; //hidden você vai fazer isso: //PEGA DADOS DE FORMULÁRIO E ARMAZENA EM UM ARRAY $dados = filter_input_array(INPUT_POST, FILTER_DEFAULT); Onde a variável "$dados" será um array onde irá conter todas a informações vindo do formulário, fazendo assim com que você não tenha mais uma variável para cada dados que vem do seu form. FILTER_DEFAULT = recebe qualquer tipo de dados (inteiro, string ...). Depois se você quiser listar os dados pode fazer assim: //PERCOREE OS DADOS DE UM ARRAY e IMPRIME OS INDICES foreach ($dados as $value) { print_r($value) . "<br>"; }
  6. Fábio.info7

    Recuperar Array Formulario

    Tente recuperar os dados do formulário utilizando o filter_input_array, com ele não é necessário você fazer um Post[] para cada name do seu form, ele já vai pegar todos os dados como um array, depois se quiser pode usar o foreach para listar dados do array. http://php.net/manual/pt_BR/function.filter-input-array.php
  7. Olá, sou iniciante em php OO, estou com uma dúvida e gostaria que alguém me ajudasse, preciso saber como eu faço pra chamar uma função "private estatic" que está eu outra classe, quando ela está na mesma classe eu consigo chamar usando o self::, mas em outra classe o self:: não funciona, como seria a forma correta? No Código abaixo eu preciso chamar a função conectaBanco(), através de outra classe. class Conexao{ private static $host = "localhost"; private static $dbname = "aluno"; private static $usuario = "root"; private static $senha = ""; private static $banco = null; private static function conectaBanco(){ try { self::$banco = new PDO('mysql:host=' . self::$host . ';dbname=' . self::$dbname, self::$usuario, self::$senha); return self::$banco; }catch (Exception $e) { echo "Mensagem de Erro:" . $e->getMessage() . '<br>'; echo "Linha do Erro:" . $e->getLine(); } } public function getBanco(){ return self::conectaBanco(); } }
  8. Gedmilson, não estou, ainda não aprendi usar padrão MVC.
  9. Boa tarde a todos, gostaria de uma ajuda, estou desenvolvendo um pequeno sistema de cadastro de clientes assinastes de um certo pacote de serviços, preciso que ao cadastrar o cliente, automaticamente o sistema grave a data do cadastro e atribui + 30 dias onde esta será a data de vencimento(após os primeiros 30 dias), até aí tudo bem, tudo funcionando, porém preciso também que o sistema liste os clientes em que a data do vencimento está se aproximando(faltando 5 dias para o vencimento), então determinei que o sistema lista os clientes que estão a 5 dias do vencimento, então então peguei a data de cadastro e atribuí + 25 dias, agora que vem o problema, na hora de listar esses clientes cuja data de vencimento se aproxima eu recebo a seguinte mensagem "Warning: Invalid argument supplied for foreach()", sou novo em php OO e não estou conseguindo resolver essa questão, vou deixar aqui a função que criei e a chamada da função também: public function proximosVencimentos(){ //DATA DA ASSINATURA/CADASTRO $dt_assinatura = $this->assinatura; //PEGA A DATA DA ASSINATURA E ACRESCENTA + 30 DIAS (VAI VIRAR A DATA DO VENCIMENTO APÓS 30 DIAS) $vencimento = date('Y-m-d', strtotime("+30 days" . strtotime($dt_assinatura))); //PEGA A DATA DA ASSINATURA E ACRESCENTA + 25 DIAS $vencimento_proximo = date('Y-m-d', strtotime("+25 days" . strtotime($dt_assinatura))); require 'conexao.php'; $sql = "select * from dados where current_date() between dt_vencimento_proximo = :dt_vencimento_proximo AND dt_vencimento = :dt_vencimento "; $stmt = $conn->prepare($sql); $stmt->bindParam(":dt_vencimento_proximo", $vencimento_proximo); $stmt->bindParam(":dt_vencimento", $vencimento); if($stmt->execute()== TRUE){ return $stmt->fetchAll(PDO :: FETCH_OBJ); }else{ $mensagem = "Não há dados a serem exibidos."; return $mensagem; } } ABAIXO O TRECHO ONDE EU CHAMO ESSA FUNÇÃO foreach ($listadados->proximosVencimentos() as $key => $valor){ echo $valor->nome; }
  10. Fábio.info7

    É errado usar HTML dentro de uma função em php OO?

    Seria possível alguém me dar um exemplo de como ficaria a função somente com códigos para listar os dados? E como eu poderia estar exibindo uma tabela com esses registros de forma que eu não precise fazer tudo dentro dessa função? Seria um novo arquivo somente com a tabela a ser exibida e chamando essa função? como seria?
  11. Fábio.info7

    É errado usar HTML dentro de uma função em php OO?

    Valeu Omar~, obrigado mesmo pelas dicas, pra mim que estou iniciando toda ajuda é super bem vinda.
  12. Fábio.info7

    É errado usar HTML dentro de uma função em php OO?

    Muito obrigado pela ajuda, a principio foi só um exercício para conhecer um pouco de OO em php, mas vou correr para aprender os padrões atuais. Abraço.
  13. Fábio.info7

    É errado usar HTML dentro de uma função em php OO?

    Matheus Tavares, te agradeço muito pelas dicas, vou dar uma pesquisada nesses tópicos que me passou, até então nunca havia feito nada com php OO, mas ja ví que o caminho é longo, vou estudar bastante, grato pela ajuda.
  14. Sou iniciante em php OO, em caráter de estudo criei uma primeira aplicação com OO em php, foi um sistema de CRUD, acontece que eu fiz a listagem dos dados através de uma função que vou postar abaixo, nela eu exibo os dados do banco em uma tabela html, minha dúvida é, posso usar essa tabela HTML, bem como todas as formatações em boostrap diretamente dentro da função como fiz abaixo? Está tudo funcionando, porém como nunca ví ninguém usar desta maneira fiquei com essa dúvida, é correto o uso desta forma ou não é uma boa prática? Entendo que exista outras formas, mas como eu disse estou iniciando e tentando entender oq é correto ou não. segue a função citada: //////// LISTANDO OS DADOS /////////////////////// public function listaDados(){ require_once './conexao.php'; $sql = "SELECT * FROM DADOS"; $stmt = $conn->prepare($sql); if($stmt->execute()== true){ ?> <table> <tr> <th>NOME</th> <th>TELEFONE</th> <th>PACOTE</th> <th>VENCIMENTO</th> <th></th> </tr> <?php $conta_registros = $stmt->rowCount(); for($I = 0; $I < $conta_registros; $I++){ $linha = $stmt->fetch(PDO::FETCH_ASSOC); ?> <tr> <td><?php echo $linha['nome'];?></td> <td><?php echo $linha['telefone'];?></td> <td><?php echo $linha['pacote'];?></td> <td><?php echo $linha['vencimento'];?></td> <td> <!-- BOTÃO EDITAR --> <a href="form-update.php?id=<?php echo $linha['iddados'];?>"> <button type="button"> <span></span> Editar </button> </a> <!-- BOTÃO EXCLUIR --> <a href="delete.php?id=<?php echo $linha['iddados'];?>"> <button type="button"> Excluir </button> </a> </td> </tr> </table> <?php } }
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.