Form data is not registered in the database

Asked

Viewed 75 times

0

Guys help me. Next: I have here an html form which I send the form data to an email through the action. Only, before sending it to the email I want that same data to be entered in the database. For this, I created a php that sends the data to the database and I have another php that sends the data to the email (in the html form I use email php and not the database. That’s right?).

<form action="contatoTeste.php" method="POST" role="form" name="contatoForm" id="contatoForm">
                            <div class="controls">
                                <div class="row">
                                    <div class="col-md-6">
                                      <div class="form-group">
                                            <div class="input-group"> 
                                                <span class="input-group-addon"><i class="fa fa-user" aria-hidden="true"></i></span> 
                                                <input class="form-control" type="text" id="nome" name="nome" required placeholder="Nome">
                                                 <span class="erro"><p id="nome_erro"></p></span>
                                                <div class="help-block with-errors"></div>
                                            </div>
                                        </div>
                                    </div>
                                    <div class="col-md-6">
                                      <div class="form-group">
                                            <div class="input-group"> 
                                                <span class="input-group-addon"><i class="fa fa-user" aria-hidden="true"></i></span> 
                                                <input class="form-control" type="text" id="sobrenome" name="sobrenome" required placeholder="Sobrenome">
                                                 <span class="erro"><p id="sobrenome_erro"></p></span>
                                                <div class="help-block with-errors"></div>
                                            </div>
                                        </div>
                                    </div>
                                    </div>

                                    <div class="row">
                                        <div class="col-md-6">
                                          <div class="form-group">
                                                <div class="input-group"> 
                                                    <span class="input-group-addon"><i class="fa fa-envelope" aria-hidden="true"></i></span> 
                                                    <input class="form-control" type="text" name="email" id="email" required placeholder="Email">
                                                     <div class="help-block with-errors"></div>
                                                      <span class="erro"><p id="email_erro"></p></span>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="col-md-6">
                                          <div class="form-group">
                                                <div class="input-group">
                                                    <span class="input-group-addon"><i class="fa fa-phone" aria-hidden="true"></i></span>
                                                    <input class="form-control" type="text" name="telefone" id="telefone" required placeholder="Telefone">
                                                    <span class="erro"><p id="telefone_erro"></p></span>
                                                    <div class="help-block with-errors"></div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>

                                <div class="row">
                                    <div class="col-md-4">
                                        <input class="form-control" type="text" name="assunto" placeholder="Assunto">
                                    </div>
                                </div>
                                <br>
                                <div class="row">
                                    <div class="col-sm-12">
                                        <textarea name="mensagem" placeholder="Digite sua mensagem aqui..." class="form-control" rows="9"></textarea>
                                    </div>
                                </div>
                           </form>

and now php from the database:

if ((isset($_POST['email']))&&(!empty($_POST['email']))){

//verifica se existe conexão com bd, caso não tenta criar uma nova
$conexao = mysql_connect("localhost","aquivaimeuusuario","aqui a senha") //porta, usuário, senha
or die("Erro na conexão com banco de dados"); //caso não consiga conectar mostra a mensagem de erro mostrada na conexão

$select_db = mysql_select_db("aqui vai o nome do meu banco"); //seleciona o banco de dados

//Abaixo atribuímos os valores provenientes do formulário pelo método POST
$nome = $_POST["nome"]; 
$sobrenome = $_POST["sobrenome"];
$telefone = $_POST["telefone"];
$email = $_POST["email"];
$assunto = $_POST["assunto"];
$mensagem = $_POST["mensagem"];

$string_sql = "INSERT INTO contatoCadastro (Nome, Sobrenome, Email, Telefone, Assunto, Mensagem) VALUES ('{$nome}','{$sobrenome}','{$email}', '{$telefone}', '{$assunto}', '{$mensagem}')"; //String com consulta SQL da inserção

mysql_query($string_sql,$conexao); //Realiza a consulta

if(mysql_affected_rows() == 1){ //verifica se foi afetada alguma linha, nesse caso inserida alguma linha
    echo "<p>Cadastro feito com sucesso</p>";
    echo '<a href="contact.html">Voltar para formulário de cadastro</a>'; //Apenas um link para retornar para o formulário de cadastro
} else {
    echo "Erro, não possível inserir no banco de dados";
}

mysql_close($conexao); //fecha conexão com banco de dados 

} else{
    echo "Por favor, preencha os dados";
}

My question is: How do I get the data to go to the bank? In my HTML form I have to call this php file that I posted here or the other php file that sends the contact data to the email? If yes, how do I send the data to the database and then send to the email?

Guys thank you so much for the help, I am beginner in php and do not know how to do these relations correctly. Thank you from now.

  • 1

    Use mysqli instead of mysql, it has been deprecated!

  • Thanks Francisco for the tip. But it did not solve my problem. I still do not save the data in the database.

  • Made a mistake...

  • Look at the error that is happening now: Warning: mysqli_query() expects Parameter 1 to be mysqli, string Given in /home/ceugo406/public_html/inserts 0 Given in /home/ceugo406/public_html/inserts

2 answers

0

I made some modifications to the file in your php code, try something like this I hope I helped.

contact.html

<form action="contatoTeste.php" method="POST" role="form" name="contatoForm" id="contatoForm">
                            <div class="controls">
                                <div class="row">
                                    <div class="col-md-6">
                                      <div class="form-group">
                                            <div class="input-group"> 
                                                <span class="input-group-addon"><i class="fa fa-user" aria-hidden="true"></i></span> 
                                                <input class="form-control" type="text" id="nome" name="nome" required placeholder="Nome">
                                                 <span class="erro"><p id="nome_erro"></p></span>
                                                <div class="help-block with-errors"></div>
                                            </div>
                                        </div>
                                    </div>
                                    <div class="col-md-6">
                                      <div class="form-group">
                                            <div class="input-group"> 
                                                <span class="input-group-addon"><i class="fa fa-user" aria-hidden="true"></i></span> 
                                                <input class="form-control" type="text" id="sobrenome" name="sobrenome" required placeholder="Sobrenome">
                                                 <span class="erro"><p id="sobrenome_erro"></p></span>
                                                <div class="help-block with-errors"></div>
                                            </div>
                                        </div>
                                    </div>
                                    </div>

                                    <div class="row">
                                        <div class="col-md-6">
                                          <div class="form-group">
                                                <div class="input-group"> 
                                                    <span class="input-group-addon"><i class="fa fa-envelope" aria-hidden="true"></i></span> 
                                                    <input class="form-control" type="text" name="email" id="email" required placeholder="Email">
                                                     <div class="help-block with-errors"></div>
                                                      <span class="erro"><p id="email_erro"></p></span>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="col-md-6">
                                          <div class="form-group">
                                                <div class="input-group">
                                                    <span class="input-group-addon"><i class="fa fa-phone" aria-hidden="true"></i></span>
                                                    <input class="form-control" type="text" name="telefone" id="telefone" required placeholder="Telefone">
                                                    <span class="erro"><p id="telefone_erro"></p></span>
                                                    <div class="help-block with-errors"></div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>

                                <div class="row">
                                    <div class="col-md-4">
                                        <input class="form-control" type="text" name="assunto" placeholder="Assunto">
                                    </div>
                                </div>
                                <br>
                                <div class="row">
                                    <div class="col-sm-12">
                                        <textarea name="mensagem" placeholder="Digite sua mensagem aqui..." class="form-control" rows="9"></textarea>
                                    </div>
                                </div>


                                <button type="submit">Enviar</button>
                           </form>

contactTeste.php

<?php 


$servidor = 'localhost';
$usuario = 'root';
$senha = '';
$banco = 'test';


if ((isset($_POST['email']))&&(!empty($_POST['email']))){

//verifica se existe conexão com bd, caso não tenta criar uma nova
$conexao = new mysqli("$servidor","$usuario","$senha","$banco"); //servidor, usuário, senha, banco
if (mysqli_connect_errno()) {
    printf("Falha na conexão: %s\n", mysqli_connect_error());
    exit();
}
 //caso não consiga conectar mostra a mensagem de erro mostrada na conexão


//Abaixo atribuímos os valores provenientes do formulário pelo método POST
$nome = $_POST["nome"]; 
$sobrenome = $_POST["sobrenome"];
$telefone = $_POST["telefone"];
$email = $_POST["email"];
$assunto = $_POST["assunto"];
$mensagem = $_POST["mensagem"];

$string_sql = "INSERT INTO contatoCadastro (Nome, Sobrenome, Email, Telefone, Assunto, Mensagem) VALUES ('{$nome}','{$sobrenome}','{$email}', '{$telefone}', '{$assunto}', '{$mensagem}')"; //String com consulta SQL da inserção

$query = $conexao->query($string_sql); //Realiza a consulta

if(mysqli_affected_rows($conexao) >= 1){ //verifica se foi afetada alguma linha, nesse caso inserida alguma linha
    echo "<p>Cadastro feito com sucesso</p>";
    echo '<a href="contact.html">Voltar para formulário de cadastro</a>'; //Apenas um link para retornar para o formulário de cadastro
} else {
    echo "Erro, não possível inserir no banco de dados";
}

mysqli_close($conexao); //fecha conexão com banco de dados
}

0


Form

The form, since it presents no errors, remains the same.

<form action="contatoTeste.php" method="POST" role="form" name="contatoForm" id="contatoForm">
..................
..................

PHP

You can only use one file to perform both operations, send email and register in the bank.

contactTeste.php (name given in the form action)

if ((isset($_POST['email']))&&(!empty($_POST['email']))){

//verifica se existe conexão com bd, caso não tenta criar uma nova
$conexao = mysql_connect("localhost","aquivaimeuusuario","aqui a senha") //porta, usuário, senha
or die("Erro na conexão com banco de dados"); //caso não consiga conectar mostra a mensagem de erro mostrada na conexão

$select_db = mysql_select_db("aqui vai o nome do meu banco"); //seleciona o banco de dados

//Abaixo atribuímos os valores provenientes do formulário pelo método POST
$nome = $_POST["nome"]; 
$sobrenome = $_POST["sobrenome"];
$telefone = $_POST["telefone"];
$email = $_POST["email"];
$assunto = $_POST["assunto"];
$mensagem = $_POST["mensagem"];

$string_sql = "INSERT INTO contatoCadastro (Nome, Sobrenome, Email, Telefone, Assunto, Mensagem) VALUES ('{$nome}','{$sobrenome}','{$email}', '{$telefone}', '{$assunto}', '{$mensagem}')"; //String com consulta SQL da inserção

mysql_query($string_sql,$conexao); //Realiza a consulta

if(mysql_affected_rows() == 1){ //verifica se foi afetada alguma linha, nesse caso inserida alguma linha
    echo "<p>Cadastro feito com sucesso</p>";
    echo '<a href="contact.html">Voltar para formulário de cadastro</a>'; //Apenas um link para retornar para o formulário de cadastro
} else {
    echo "Erro, não possível inserir no banco de dados";
}

mysql_close($conexao); //fecha conexão com banco de dados 


/******* CODIGO EMAIL *******/

// Uma dica para envio de emails
// Baixe os arquivos  PHPMailerAutoload.php  -  class.smtp.php  -  class.phpmailer.php em github - https://github.com/PHPMailer/PHPMailer
//Crie uma pasta  PHPMailer-master no mesmo diretório da sua aplicação PHP e publique os arquivos baixados nesta pasta (PHPMailer-master).

require_once('PHPMailer-master/PHPMailerAutoload.php');

$mail = new PHPMailer();

$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->Host = "smtp.kithomepage.com"; // Endereço do servidor SMTP
$mail->SMTPAuth = true; // Autenticação
$mail->Username = '[email protected]'; // Usuário do servidor SMTP
$mail->Password = 'SENHA'; // Senha da caixa postal utilizada

// Define o remetente
$mail->From = $email; 
$mail->FromName = $nome. " " .$sobrenome ;

// Define o(s) destinatário(s) 
$mail->AddAddress('[email protected]', 'Fulano');
//$mail->AddAddress('[email protected]', 'Nome do Destinatário');
//$mail->AddCC('[email protected]', 'Nome do Destinatário'); // Copia
//$mail->AddBCC('[email protected]', 'Nome do Destinatário'); // Cópia Oculta


$mail->IsHTML(true); // Define que o e-mail será enviado como HTML
$mail->CharSet = 'iso-8859-1'; // Charset da mensagem (opcional)

$mail->Subject  = $assunto; // Assunto da mensagem

$mail->Body = $mensagem;

$enviado = $mail->Send();

$mail->ClearAllRecipients();
$mail->ClearAttachments();

if ($enviado) {
echo "E-mail enviado com sucesso!";
} else {
echo "Não foi possível enviar o e-mail.";

echo "Informações do erro: 
" . $mail->ErrorInfo;
}


/******* FIM CODIGO EMAIL *******/

} else{
    echo "Por favor, preencha os dados";
}

As is well known, the mysql_connect() function has been deprecated in PHP 5.5.0 and the mysql_ * functions have been removed in PHP7! Learn more with []

With Mysqli the connection can be made as follows:

if ((isset($_POST['email']))&&(!empty($_POST['email']))){
    $servername = "localhost";
    $username = "USUARIO";
    $password = "SENHA";
    $dbname = "NOMEdoBANCO";

    $conexao = new mysqli($servername, $username, $password, $dbname);

    if (!$conexao) {
        die("Não foi possível conectar ao banco de dados" . mysqli_connect_error());
    }

    $string_sql = "INSERT INTO contatoCadastro (Nome, Sobrenome, Email, Telefone, Assunto, Mensagem) VALUES ('{$nome}','{$sobrenome}','{$email}', '{$telefone}', '{$assunto}', '{$mensagem}')";

    $result = mysqli_query($conexao,$string_sql);

    if(mysqli_affected_rows($conexao) >0){ //verifica se foi afetada alguma linha, nesse caso inserida alguma linha
      echo "<p>Cadastro feito com sucesso</p>";
      echo '<a href="contact.html">Voltar para formulário de cadastro</a>'; 
      //Apenas um link para retornar para o formulário de cadastro
    } else {
      echo "Erro, não possível inserir no banco de dados";
    }

    mysqli_close($conexao); //fecha conexão com banco de dados

    /******* CODIGO EMAIL *******/
    .............................
    .............................
  • You are f@#$#@@Oda, thank you very much. The connection to the database was made and after that the data was sent to the email. Only that I did not understand what may have happened that in the database, only shows, for example: id 1 and id 2 and the other attributes of the column do not show in the database. I made a query in the bank itself to see if the name attribute for example was saved but did not return anything, which was not found. It’s something in the code that needs to be changed?

  • When I register on the site, it sends it to the database and fills only the id and the other fields show nothing. It’s like the other data hasn’t gone, I don’t get it. Does anyone know what it might be? I’m using the server phpMyAdmin.

  • Guys, I already figured out my mistake. Before passing the data to the bank I wasn’t taking the form variables. Now it gave sure, all the data were filled correctly in the database and after that sent to the email. People, thank you EVEN ! Thanks a lot for the strength of all who came here to contribute with me. Thank you guys.

  • @Guilhermeschults, but in your question there php do banco de dados: the $_POST taking the form data. However if it is working right is what matters. Please read this post https://pt.meta.stackoverflow.com/questions/1078/como-e-por-que-aceitar-uma-resposta/1079#1079

Browser other questions tagged

You are not signed in. Login or sign up in order to post.