Sending form to database with Mysql, Html and php

Asked

Viewed 15,636 times

2

I’m trying to send a mysql database the data recorded by a form. I have created a db_provida BD and a 4-column 'testimonial' tablet. I can’t get this code to save the record. Here are the components:
Table 'testimony':

inserir a descrição da imagem aqui

Html code:

<form action="testemunho.php" method="post">
    Nome: <input type="text" name="nome"/>
    <br>
    Email: <input type="text" name="email"/>
    <br>
    Testemunho: <textarea name="testemunho" rows="10" cols="80"></textarea> <br/><br/>
    <input type="submit" value="Enviar"/>
</form>

And php code:

<?php
    //verifica se existe conexão com bd; caso não tenta, cria uma nova
    $conexao = mysql_connect('localhost','giuseppe','joanin21') //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("db_provida"); //seleciona o banco de dados

    //Abaixo atribuímos os valores provenientes do formulário pelo método POST
    $nome = $_POST['nome']; 
    $email = $_POST['email'];
    $testemunho = $_POST['testemunho'];

    $string_sql = "INSERT INTO testemunho (id,nome,email,testemunho) VALUES (null,'$nome','$email','$testemunho')"; //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>Testemunho Registrado</p>";
        echo '<a href="testimonianze.html">Voltar para formulário de cadastro</a>'; //Apenas um link para retornar para o formulário de cadastro
    } else {
        echo "Erro, não foi possível inserir no banco de dados";
    }

    mysql_close($conexao); //fecha conexão com banco de dados 
?>
  • 1

    What’s the mistake? Recommend.

  • Hi Francisco! I can’t find anything recorded in the 'testimony' table, nor does he present what error is happening. As if the form did not pass the tags of the.php testimony.

  • I edited the answer in more detail and also an example of your code running on my server

  • Hi Leo! Thank you so much for sharing your knowledge. I work in a telecommunications center of a university and, only now I realized that the environment of my machine (shared with other users) has mariaDB as a database manager and nginex as a web server. I’m still in control, but I think the problem of lack of communication with DB should be a matter of localhost environment.

  • OK Leo! In fact, I deleted everything I had in www - where I even had a Joomla installed - and, putting this code of yours, everything went back to working right, also with the recording of the strings. Thanks bro!

  • then be sure to read this post https://pt.meta.stackoverflow.com/questions/1078/como-e-por-que-aceitar-uma-resposta/1079#1079

Show 1 more comment

2 answers

0

The query you put in the variable $string_sql is considering the variables $nome, $email e $testemunho as string. The right way to do this, i.e., for variables not to be considered string, has to be done like this:

$string_sql = "INSERT INTO testemunho (id,nome,email,testemunho) VALUES (null,'{$nome}','{$email}','{$testemunho}')"; //String com consulta SQL da inserção
  • Hi! Replaces the line but is not yet writing in the table. Also, it is not showing even the connection error predicted in php.

  • Puts this at the beginning of the PHP file: ini_set('display_errors', 1);&#xA;ini_set('display_startup_errors', 1);&#xA;error_reporting(E_ALL); . Run the code again and see if it shows any errors.

  • I use values ('$name', no problem

0


I ran your script with PHP 5.4.43 and ran it right!

Only one left to go if (isset($_POST... so that there is no insert when entering the page, as it is going to insert null fields when accessing the page. Then filling the fields will insert right!

Your case should be explained below.

The functions mysql_connect, mysql_affected_rows were deprecated in PHP 5.5.0 and the mysql_ * functions were removed in PHP7! Learn more with []

Seize the occasion and catch up!

With Mysqli the connection can be made as follows:

//aqui é só um exemplo para não rodar o script abaixo sem necessidade
if ((isset($_POST['email']))&&(!empty($_POST['email']))){

   //porta, usuário, senha, nome data base
   //caso não consiga conectar mostra a mensagem de erro mostrada na conexão
   $conexao = mysqli_connect("localhost", "giuseppe", "joanin21", "db_provida") or die("Erro na conexão com banco de dados " . mysqli_error($conexao));

  //Abaixo atribuímos os valores provenientes do formulário pelo método POST
  $nome = $_POST['nome']; 
  $email = $_POST['email'];
  $testemunho = $_POST['testemunho'];

   $string_sql = "INSERT INTO testemunho (id,nome,email,testemunho) VALUES (null,'$nome','$email','$testemunho')";
   $insert_member_res = mysqli_query($conexao, $string_sql);
   if(mysqli_affected_rows($conexao)>0){ //verifica se foi afetada alguma linha, nesse caso inserida alguma linha
       echo "<p>Testemunho Registrado</p>";
       echo '<a href="testimonianze.html">Voltar para formulário de cadastro</a>'; //Apenas um link para retornar para o formulário de cadastro
   } else {
       echo "Erro, não foi possível inserir no banco de dados";
   }
   mysqli_close($conexao); //fecha conexão com banco de dados
}else{
    echo "Por favor, preencha os dados";
}

Browser other questions tagged

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