Salvar formulário PHP PDO Banco de Dados

27/11/2019

0

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.
Andre Limaverde

Andre Limaverde

Responder

Posts

07/01/2021

Renato Alves

<?php

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
}

Responder

07/01/2021

Renato Alves

Successfully Connected
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
Responder

07/01/2021

Renato Alves

<?php
/* ######################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();

}
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar