Salvar formulário PHP PDO Banco de Dados
27/11/2019
0
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.
Andre Limaverde
Posts
07/01/2021
Renato Alves
session_start();
include_once './connection.php';
$nome = filter_input(INPUT_POST,"nome",FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST,"email",FILTER_SANITIZE_STRING);
$senha = filter_input(INPUT_POST,"senha",FILTER_SANITIZE_STRING);
var_dump($_POST);
//Insere os dados no banco
$get_data = "INSERT INTO users (nome, email,senha,created) VALUES (:nome, :email, :senha, NOW())";
$insert_data = $conn->prepare($get_data);
$insert_data->bindParam(':nome', $nome);
$insert_data->bindParam(':email', $email);
$insert_data->bindParam(':senha', $senha);
if($insert_data->execute()){
header("listar.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:inserir.php"); //Se não apresenta o erro
}
07/01/2021
Renato Alves
Listar Usuários PHP
ID:1
Nome:Cesar
Email:cesar@celke.com.br
Senha:123456
Nível de Acesso:1
Data Cadastro2020-04-23 00:00:00
ID:2
Nome:Kelly
Email:kelly@celk.com.br
Senha:123456
Nível de Acesso:2
Data Cadastro2020-04-23 00:00:00
ID:3
Nome:Jessica
Email:jessica@celke.com.br
Senha:123456
Nível de Acesso:3
Data Cadastro2020-04-23 00:00:00
ID:4
Nome:Marcos
Email:marcos@celke.com.br
Senha:123456
Nível de Acesso:3
Data Cadastro2020-04-23 00:00:00
ID:5
Nome:Gabrielly
Email:gabrielly@celke.com.br
Senha:123456
Nível de Acesso:3
Data Cadastro2020-04-23 00:00:00
ID:22
Nome:CREUZA ALVES GONÇALVES
Email:creuza071@gmail.com
Senha:078800
Nível de Acesso:0
Data Cadastro2021-01-07 14:24:56
ID:23
Nome:CREUZA ALVES GONÇALVES
Email:creuza071@gmail.com
Senha:078800
Nível de Acesso:0
Data Cadastro2021-01-07 14:27:13
ID:24
Nome:CREUZA ALVES GONÇALVES
Email:creuza071@gmail.com
Senha:078800
Nível de Acesso:0
Data Cadastro2021-01-07 14:32:40
ID:26
Nome:CREUZA ALVES GONÇALVES
Email:renatoguara2020@gmail.com
Senha:078800
Nível de Acesso:0
Data Cadastro2021-01-07 14:55:29
07/01/2021
Renato Alves
/* ######################CREDENCIAIS DO SERVIDOR PHP###################### */
$servidor= 'localhost';
$user = 'root';
$password = '';
$dbName = 'celke_php';
$port = 3306;
try{
$conn = new PDO("mysql:host=$servidor;port=$port;dbname=" .$dbName, $user,$password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "<h1>Successfully Connected</h1>";
}catch(PDOException $ex){
echo "<h1>Erro ao Conectar</h1>".$ex->getMessage();
}
Clique aqui para fazer login e interagir na Comunidade :)