Ir para conteúdo

andrelimaverde

Members
  • Total de itens

    6
  • Registro em

  • Última visita

Posts postados por andrelimaverde


  1. 2 horas atrás, Omar~ disse:

    No primeiro arquivo normalmente você vai fazer o INSERT, salvando os dados e tal.

     

    Já na página 2 você terá que resgatar qual foi o último registro salvo pode usar no caso $insert_data->lastInsertId.

    Onde você terá o último ID registrado.

    Então nesse segundo arquivo você pode tanto criar um input hidden com essa informação ou armazenar esse valor em cessão.

    Para que quando submeter novamente possa usar o valor do input ou da cessão para fazer UPDATE.

     

    No caso de um terceiro segue o mesmo conceito, bastando continuar usando a informação do último ID que foi dada no INSERT.

     

     

    No entanto acho melhor que apenas registre o usuário, e coloque uma opção já com o usuário logado para alterar as demais coisas que forem necessárias.

     

    Além de usar o ID do usuário você pode criar um hash para cada usuário salvando esse valor em uma coluna. E usar a info do hash ao invés do ID (Eu sempre adoto esse recurso, para evitar conflitos no SQL)

    Omar, teria uma dica de como implementar esse código de uma melhor maneira. Por exemplo, já estou usando o UPDATE perfeitamente, mas estou com dificuldades no WHERE id= . Não consegui usar a função lastInsertId, como na primeira página fazemos o INSERT teria uma maneira de fazer o UPDATE no último ID inserido no caso pela sessão atual? Pode exemplificar?


  2. 12 minutos atrás, Omar~ disse:

    No primeiro arquivo normalmente você vai fazer o INSERT, salvando os dados e tal.

     

    Já na página 2 você terá que resgatar qual foi o último registro salvo pode usar no caso $insert_data->lastInsertId.

    Onde você terá o último ID registrado.

    Então nesse segundo arquivo você pode tanto criar um input hidden com essa informação ou armazenar esse valor em cessão.

    Para que quando submeter novamente possa usar o valor do input ou da cessão para fazer UPDATE.

     

    No caso de um terceiro segue o mesmo conceito, bastando continuar usando a informação do último ID que foi dada no INSERT.

     

     

    No entanto acho melhor que apenas registre o usuário, e coloque uma opção já com o usuário logado para alterar as demais coisas que forem necessárias.

     

    Além de usar o ID do usuário você pode criar um hash para cada usuário salvando esse valor em uma coluna. E usar a info do hash ao invés do ID (Eu sempre adoto esse recurso, para evitar conflitos no SQL)

    Certo Omar, vou testar essa função, estava tendo problemas pois estava usando o UPDATE com WHERE id=LAST_INSERT_ID(); não fazia idéia de como implementar, agora vou ver como armazeno esse valor e retorno com resultado.


  3. 2 horas atrás, Gleyson Abreu disse:

    Por que você está utilizando o INSERT com isso você realmente vai criar uma nova linha no banco de dados.

    Você deveria utilizar o UPDATE mas tem que ter o ID que foi inserido anteriomente para ele atualizar os dados que falta naquele determinado ID aí ele não criaria outro.

    https://www.w3schools.com/php/php_mysql_update.asp

    Entendi Gleyson, vou testar essa solução e volto com resultado. Encontrei essa função para obter o ultimo ID registrado SELECT LAST_INSERT_ID().


  4. Pessoal desde já agradeço a todos, e vamos lá.

    Primeiro esclareço que meu conhecimento em PHP é básico e em MYSQL praticamente nulo...
    Meu objetivo é: Salvar dados do formulário (3 páginas) no mesmo ID (mesma linha) do banco de dados.

    Tenho:
     

    <!-- PÁGINA INDEX.PHP -->
    <?php
        session_start();
    ?>
    <html>
      <form method="POST" action="1.php">
        <input type="text" name="namenome" placeholder="Nome">
        <input type="text" name="namesobrenome" placeholder="Sobrenome">
        <input type="radio" name="radio" value="Masculino">
        <input type="radio" name="radio" value="Feminino">
        <input type="submit" name="namebtn" value="Próximo Passo">
      </form>
    </html>

    E assim são as outras duas páginas, exemplificando, muito simples...

    No Index o FORM tem action="1.php" 

    Na Pagina2 o FORM tem action="2.php" e assim sucessivamente.

    1.php funcionando perfeitamente:

    <?php
    session_start();
    include_once 'conexao.php'; 
    //conexao.php somente faz a conexão com banco de dados, define as credenciais e atrubi a variável $conn
    //$conn = new PDO('mysql:host=' . HOST . ';dbname=' . DBNAME . ';', USER, PASS);
    
    $btn = filter_input(INPUT_POST, 'namebtn', FILTER_SANITIZE_STRING);
    
    if($btn){
        //Recebe os dados do form
        $nom = filter_input(INPUT_POST, 'namenome', FILTER_SANITIZE_STRING);
        $sob = filter_input(INPUT_POST, 'namesobrenome', FILTER_SANITIZE_STRING);
        $rad = filter_input(INPUT_POST, 'radio', FILTER_SANITIZE_STRING);
    
        //Insere os dados no banco
        $get_data = "INSERT INTO info_tabela (nome, sobrenome, sexo) VALUES (:namenome, :namesobrenome, :radio)";
    
        $insert_data = $conn->prepare($get_data);
        $insert_data->bindParam(':namenome', $nom);
        $insert_data->bindParam(':namesobrenome', $sob);
        $insert_data->bindParam(':radio', $rad);
    
        if($insert_data->execute()){
            header("Location:pagina2.php"); //Se enviar corretamente redireciona para segunda página
        }else{
            $_SESSION['msg'] = "<p style='color:tomato;background:#fff;'>Não foi possível enviar suas informações, verifique e tente novamente.</p>";
            header("Location:index.php"); //Se não apresenta o erro
        }
    }else{
        $_SESSION['msg'] = "<p style='color:tomato;'>Não foi possível enviar suas informações, verifique e tente novamente.</p>";
        header("Location:index.php"); 
    }

    Até ai tudo bem, insere corretamente os dados nas respectivas colunas da tabela ID=1, NOME= 'nome', SOBRENOME= 'sobrenome', SEXO= 'sexo'.

    No Banco de Dados ainda temos as colunas a serem preenchidas no mesmo ID(mesma linha) --> CIDADE= ' ', ENDEREÇO= ' ', CEP= ' ', 

    Que referem-se à pagina2.php:

    <!-- PÁGINA PAGINA2.PHP -->
    <?php
        session_start();
    ?>
    <html>
      <form method="POST" action="2.php"> <!-- ACTION 2.PHP RESPECTIVAMENTE -->
        <input type="text" name="namecidade" placeholder="Cidade">
        <input type="text" name="nameendereco" placeholder="Endereço">
        <input type="tex" name="namecep" placeholder="Cep">
        <input type="submit" name="namebtn" value="Próximo Passo">
      </form>
    </html>

    O problema, é que ao enviar o formulário com action="2.php" cujo arquivo possui o mesmo código que o "1.php" mudando somente os dados recebidos,

    No Banco de Dados é criado um novo ID(2) ou seja, uma nova linha, com os dados atuais nas colunas (cidade, endereço, cep) preenchidos, e as colunas anteriores (nome, sobrenome, sexo) vazias...

    Pessoal esta é a minha dúvida, como resolver, salvar todos os dados num mesmo id, mesma linha. O código do arquivo 2.php é o mesmo pois não faço ideia de como implementar isso, como em soluções anteriores tais dados costumava enviar com PhpMailer para e-mail então não entendo de MYSQL.
     


  5. Pessoal desde já agradeço a todos, e vamos lá.

    Primeiro esclareço que meu conhecimento em PHP é básico e em MYSQL praticamente nulo...

    Meu objetivo é: Salvar dados do formulário (3 páginas) no mesmo ID (mesma linha) do banco de dados.

    Tenho:

    <!-- PÁGINA INDEX.PHP -->
    <?php
        session_start();
    ?>
    <html>
      <form method="POST" action="1.php">
        <input type="text" name="namenome" placeholder="Nome">
        <input type="text" name="namesobrenome" placeholder="Sobrenome">
        <input type="radio" name="radio" value="Masculino">
        <input type="radio" name="radio" value="Feminino">
        <input type="submit" name="namebtn" value="Próximo Passo">
      </form>
    </html>

    E assim são as outras duas páginas, exemplificando, muito simples...

    No Index o FORM tem action="1.php

    Na Pagina2 o FORM tem action="2.php" e assim sucessivamente.

     

    1.php funcionando perfeitamente:

    <?php
    session_start();
    include_once 'conexao.php'; 
    //conexao.php somente faz a conexão com banco de dados, define as credenciais e atrubi a variável $conn
    //$conn = new PDO('mysql:host=' . HOST . ';dbname=' . DBNAME . ';', USER, PASS);
    
    $btn = filter_input(INPUT_POST, 'namebtn', FILTER_SANITIZE_STRING);
    
    if($btn){
        //Recebe os dados do form
        $nom = filter_input(INPUT_POST, 'namenome', FILTER_SANITIZE_STRING);
        $sob = filter_input(INPUT_POST, 'namesobrenome', FILTER_SANITIZE_STRING);
        $rad = filter_input(INPUT_POST, 'radio', FILTER_SANITIZE_STRING);
    
        //Insere os dados no banco
        $get_data = "INSERT INTO info_tabela (nome, sobrenome, sexo) VALUES (:namenome, :namesobrenome, :radio)";
    
        $insert_data = $conn->prepare($get_data);
        $insert_data->bindParam(':namenome', $nom);
        $insert_data->bindParam(':namesobrenome', $sob);
        $insert_data->bindParam(':radio', $rad);
    
        if($insert_data->execute()){
            header("Location:pagina2.php"); //Se enviar corretamente redireciona para segunda página
        }else{
            $_SESSION['msg'] = "<p style='color:tomato;background:#fff;'>Não foi possível enviar suas informações, verifique e tente novamente.</p>";
            header("Location:index.php"); //Se não apresenta o erro
        }
    }else{
        $_SESSION['msg'] = "<p style='color:tomato;'>Não foi possível enviar suas informações, verifique e tente novamente.</p>";
        header("Location:index.php"); 
    }

    Até ai tudo bem, insere corretamente os dados nas respectivas colunas da tabela ID=1, NOME= 'nome', SOBRENOME= 'sobrenome', SEXO= 'sexo'.

    No Banco de Dados ainda temos as colunas a serem preenchidas no mesmo ID(mesma linha) --> CIDADE= ' ', ENDEREÇO= ' ', CEP= ' ', 

    Que referem-se à pagina2.php:

    <!-- PÁGINA PAGINA2.PHP -->
    <?php
        session_start();
    ?>
    <html>
      <form method="POST" action="2.php"> <!-- ACTION 2.PHP RESPECTIVAMENTE -->
        <input type="text" name="namecidade" placeholder="Cidade">
        <input type="text" name="nameendereco" placeholder="Endereço">
        <input type="tex" name="namecep" placeholder="Cep">
        <input type="submit" name="namebtn" value="Próximo Passo">
      </form>
    </html>

    O problema, é que ao enviar o formulário com action="2.php" cujo arquivo possui o mesmo código que o "1.php" mudando somente os dados recebidos,

    No Banco de Dados é criado um novo ID(2) ou seja, uma nova linha, com os dados atuais nas colunas (cidade, endereço, cep) preenchidos, e as colunas anteriores (nome, sobrenome, sexo) vazias...

     

    Pessoal esta é a minha dúvida, como resolver, salvar todos os dados num mesmo id, mesma linha. O código do arquivo 2.php é o mesmo pois não faço ideia de como implementar isso, como em soluções anteriores tais dados costumava enviar com PhpMailer para e-mail então não entendo de MYSQL.

     

    Código simplificado e resumido ao máximo...

    Obrigado.


  6. Pessoal preciso de uma ajuda, desde já agradeço à todos.

    "Site teste, estudos..."

    Tenho um formulário com 3 etapas, ele está trabalhando em php normalmente e salvando os dados preenchidos em .txt (para testes apenas).

    Vamos lá, nas 3 etapas o form está com action="1.php" (2.php,  3.php) e method="post". [Não vou colocar muito código para simplificar, pois é um formulário básico fácil de entender]

    Exemplo:  Pagina 1 - envia para action '1.php'

    Nome: 

    Telefone:

    <input type="submit" value="Continuar">

    (

     O arquivo 1.php armazena os dados e redireciona => header( 'Location:Pagina2.php' ) ;   

     Assim como os outros php's

    )

    Pagina 2 - action 2.php armazena os dados e redireciona => header( 'Location:Pagina3.php' ) ; 

    Cidade:

    Endereço:

    <input type="submit" value="Continuar">

     

    A questão está na 3ª página

    Página 3 -

    Email:

    (Preciso que após preencher o campo da página 3 no caso "Email:",  ao clicar no botão, neste caso não sei se seria um submit ou button. O formulário não redirecionar para pagina 4, ao clicar ele enviar e salvar normalmente, mas aparecer um novo input na mesma pagina por Exemplo:"Twitter:"  ) 

    No caso preciso que ele não redirecione , gostaria de colocar um gif de carregando por 15 segundos por exemplo como se estivesse processando as informações... e em seguida ele apresentar o novo input do "Twitter:" , onde ai sim enviaria normalmente...

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.