Foros del Web » Programando para Internet » PHP »

formulario de contacto

Estas en el tema de formulario de contacto en el foro de PHP en Foros del Web. Hola buenas!! Alguien de por aqui me puede decir que está mal en mi codigo ... el problema que pasa es que cuando relleno todos ...
  #1 (permalink)  
Antiguo 23/03/2012, 00:54
 
Fecha de Ingreso: octubre-2011
Mensajes: 25
Antigüedad: 13 años
Puntos: 0
formulario de contacto

Hola buenas!!

Alguien de por aqui me puede decir que está mal en mi codigo ... el problema que pasa es que cuando relleno todos los campos del formulario, los datos no se me inserta en la base de datos y siempre me envia a la pagina de failed.php aunque los campos del formulario esten lleno.

Código PHP:
Ver original
  1. <?php
  2.  
  3. if($_SERVER['REQUEST_METHOD'] == 'POST'){
  4.  
  5.     //First check that no field is empty and that all fields exist.
  6.  if(isset($_POST['name']) && !empty($_POST['name'])){
  7.  $nombre = mysql_real_escape_string($_POST['name']);
  8.  
  9.  }
  10.  
  11.  if(isset($_POST['email']) && !empty($_POST['email'])){
  12.  $email = mysql_real_escape_string($_POST['email']);
  13.  
  14.  }
  15.  
  16.  if(isset($_POST['comentario']) && !empty($_POST['comentario'])){
  17.      $enviar = mysql_real_escape_string($_POST['comentario']);
  18.  
  19.  }
  20.  
  21.  if(isset($_POST['submit']) && !empty($_POST['submit'])){
  22.      $enviar = mysql_real_escape_string($_POST['submit']);
  23. }
  24.  
  25.  // Complete error variable if necessary.
  26.  
  27.    /*
  28.    {
  29.    if ( empty($name) ) $error['name']     ='It is obligatory to enter a name';
  30.    if ( empty($email) )    $error['email']      ='It is obligatory to enter a email';
  31.    if ( empty($comentario) ) $error['comentario'] ='It is obligatory to enter a           comment';
  32. }
  33.    */
  34.  
  35.  // If you entered is that everything is done correctly
  36.  
  37.  $link = mysql_connect("localhost", "root", "");
  38.  mysql_select_db("a1118766_contact",$link);
  39.  if($link) {
  40.       //echo "Connection completed successfully.";
  41.    
  42.     header('Location:error.php');
  43.   }
  44.  
  45.  // insert data in database.
  46.  $sql = "INSERT INTO sumit(name, email, comentario)
  47. VALUES('".$name."','".$email."','".$comentario."',)";
  48.  
  49.      
  50. if($name && $email && $comentario) {
  51.    
  52.     $resultado = mysql_query($sql);
  53.        
  54.         if($resultado){
  55.        
  56.         header( 'Location:informe.php?registro=true');
  57.      // Send an email to this email.
  58.         $mail='[email protected]';
  59.          
  60.         $name = $_POST['name'];
  61.         $email = $_POST['email'];
  62.         $comentario= $_POST['comentario'];
  63.         # These data are to be seen in the mail
  64.         $commentario = "
  65.         name: ".$name."
  66.         email: ".$email."
  67.         comentario: ".$comentario."";
  68.         # asunto del mensaje
  69.         if (mail($mail,"Jose gomez",$comentario, "From: ".$nombre." <".$email.">"))
  70.         $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
  71.         $header .= "Mime-Version: 1.0 \r\n";
  72.         $header .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
  73.         mail($to,$subject,$message,$headers);
  74.        
  75.         }
  76.  
  77. }else{
  78.  
  79.     header( 'Location:failed.php?registro=false');
  80.  
  81. }
  82. }
  83.  
  84.  ?>

y esté es el formulario.
Código HTML:
Ver original
  1.    <form action="contacto.php" method="post" id="form">
  2.        <div class="form-item">
  3.             <label for="name" class="label">Your name:</label>
  4.          <input type="text" maxlength="250"  class="required" id="name" name="name"/>
  5.     </div>
  6.     <div class="form-item">
  7.         <label for="email" class="label">Your email:</label>
  8.         <input type="text" maxlength="300" class="required" id="email" name="email"/>
  9.     </div>
  10.     <div class="form-item">
  11.          <label for="comentario" class="label">Your comment:</label>
  12.         <textarea name="comentario" rows="300" cols="" class="required" id="comentario"></textarea>
  13.     </div>
  14.     <div class="botonera">
  15.          <input type="submit" class="" value="Enviar" id="submit"/>
  16.          <input type="reset" class="" value="Cancelar" id="reset"/>
  17.     </div>
  18.    </form>

Muchas gracias y saludo a todos :)
  #2 (permalink)  
Antiguo 23/03/2012, 00:56
 
Fecha de Ingreso: octubre-2011
Mensajes: 25
Antigüedad: 13 años
Puntos: 0
Respuesta: formulario de contacto

Cita:
Iniciado por szalenstwo Ver Mensaje
Hola buenas!!

Alguien de por aqui me puede decir que está mal en mi codigo ... el problema que pasa es que cuando relleno todos los campos del formulario, los datos no se me inserta en la base de datos y siempre me envia a la pagina de failed.php aunque los campos del formulario esten lleno.

Código PHP:
Ver original
  1. <?php
  2.  
  3. if($_SERVER['REQUEST_METHOD'] == 'POST'){
  4.  
  5.     //First check that no field is empty and that all fields exist.
  6.  if(isset($_POST['name']) && !empty($_POST['name'])){
  7.  $nombre = mysql_real_escape_string($_POST['name']);
  8.  
  9.  }
  10.  
  11.  if(isset($_POST['email']) && !empty($_POST['email'])){
  12.  $email = mysql_real_escape_string($_POST['email']);
  13.  
  14.  }
  15.  
  16.  if(isset($_POST['comentario']) && !empty($_POST['comentario'])){
  17.      $enviar = mysql_real_escape_string($_POST['comentario']);
  18.  
  19.  }
  20.  
  21.  if(isset($_POST['submit']) && !empty($_POST['submit'])){
  22.      $enviar = mysql_real_escape_string($_POST['submit']);
  23. }
  24.  
  25.  // Complete error variable if necessary.
  26.  
  27.    /*
  28.    {
  29.    if ( empty($name) ) $error['name']     ='It is obligatory to enter a name';
  30.    if ( empty($email) )    $error['email']      ='It is obligatory to enter a email';
  31.    if ( empty($comentario) ) $error['comentario'] ='It is obligatory to enter a           comment';
  32. }
  33.    */
  34.  
  35.  // If you entered is that everything is done correctly
  36.  
  37.  $link = mysql_connect("localhost", "root", "");
  38.  mysql_select_db("a1118766_contact",$link);
  39.  if($link) {
  40.       //echo "Connection completed successfully.";
  41.    
  42.     header('Location:error.php');
  43.   }
  44.  
  45.  // insert data in database.
  46.  $sql = "INSERT INTO sumit(name, email, comentario)
  47. VALUES('".$name."','".$email."','".$comentario."',)";
  48.  
  49.      
  50. if($name && $email && $comentario) {
  51.    
  52.     $resultado = mysql_query($sql);
  53.        
  54.         if($resultado){
  55.        
  56.         header( 'Location:informe.php?registro=true');
  57.      // Send an email to this email.
  58.         $mail='[email protected]';
  59.          
  60.         $name = $_POST['name'];
  61.         $email = $_POST['email'];
  62.         $comentario= $_POST['comentario'];
  63.         # These data are to be seen in the mail
  64.         $commentario = "
  65.         name: ".$name."
  66.         email: ".$email."
  67.         comentario: ".$comentario."";
  68.         # asunto del mensaje
  69.         if (mail($mail,"Jose gomez",$comentario, "From: ".$nombre." <".$email.">"))
  70.         $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
  71.         $header .= "Mime-Version: 1.0 \r\n";
  72.         $header .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
  73.         mail($to,$subject,$message,$headers);
  74.        
  75.         }
  76.  
  77. }else{
  78.  
  79.     header( 'Location:failed.php?registro=false');
  80.  
  81. }
  82. }
  83.  
  84.  ?>

y esté es el formulario.
Código HTML:
Ver original
  1.    <form action="contacto.php" method="post" id="form">
  2.        <div class="form-item">
  3.             <label for="name" class="label">Your name:</label>
  4.          <input type="text" maxlength="250"  class="required" id="name" name="name"/>
  5.     </div>
  6.     <div class="form-item">
  7.         <label for="email" class="label">Your email:</label>
  8.         <input type="text" maxlength="300" class="required" id="email" name="email"/>
  9.     </div>
  10.     <div class="form-item">
  11.          <label for="comentario" class="label">Your comment:</label>
  12.         <textarea name="comentario" rows="300" cols="" class="required" id="comentario"></textarea>
  13.     </div>
  14.     <div class="botonera">
  15.          <input type="submit" class="" value="Enviar" id="submit"/>
  16.          <input type="reset" class="" value="Cancelar" id="reset"/>
  17.     </div>
  18.    </form>

Muchas gracias y saludo a todos :)
la base de datos se llama prueba y aqui tiene otro nombre!! se me olvido cambiar el nombre en el mensaja.
  #3 (permalink)  
Antiguo 23/03/2012, 00:58
 
Fecha de Ingreso: octubre-2011
Mensajes: 25
Antigüedad: 13 años
Puntos: 0
Respuesta: formulario de contacto

Cita:
Iniciado por szalenstwo Ver Mensaje
la base de datos se llama prueba y aqui tiene otro nombre!! se me olvido cambiar el nombre en el mensaja.
pero bueno eso no debe ser la causa del problema....
  #4 (permalink)  
Antiguo 23/03/2012, 03:37
Avatar de apaxito  
Fecha de Ingreso: febrero-2012
Ubicación: Sevilla
Mensajes: 47
Antigüedad: 12 años, 9 meses
Puntos: 10
Respuesta: formulario de contacto

Tienes bastantes errores en el código; deberías fijarte en el nombre que le pones a las variables (se llama $nombre y luego la llamas como $name), además de algunas cosas que no entiendo muy bien como es hacer un $_POST del propio botón submit.

Ahora te adjuntaré el código funcionando.
__________________
Sígueme en el Blog que llevo con otros dos compañeros sobre PHP, HTML5, JavaScript, JQuery y noticias tecnológicas... http://www.inix.es/docevoltios
  #5 (permalink)  
Antiguo 23/03/2012, 03:41
Avatar de apaxito  
Fecha de Ingreso: febrero-2012
Ubicación: Sevilla
Mensajes: 47
Antigüedad: 12 años, 9 meses
Puntos: 10
Respuesta: formulario de contacto

Código PHP:
Ver original
  1. <?php
  2.      
  3.     if($_SERVER['REQUEST_METHOD'] == 'POST'){
  4.      
  5.         //First check that no field is empty and that all fields exist.
  6.      if(isset($_POST['name']) && !empty($_POST['name'])){
  7.      $nombre = mysql_real_escape_string($_POST['name']);
  8.      
  9.      }
  10.      
  11.      if(isset($_POST['email']) && !empty($_POST['email'])){
  12.      $email = mysql_real_escape_string($_POST['email']);
  13.      
  14.      }
  15.      
  16.      if(isset($_POST['comentario']) && !empty($_POST['comentario'])){
  17.          $comentario = mysql_real_escape_string($_POST['comentario']);
  18.      
  19.      }
  20.      
  21.      if(isset($_POST['submit']) && !empty($_POST['submit'])){
  22.          $enviar = mysql_real_escape_string($_POST['submit']);
  23.     }
  24.      
  25.      // Complete error variable if necessary.
  26.      
  27.        /*
  28.        {
  29.        if ( empty($name) ) $error['name']     ='It is obligatory to enter a name';
  30.        if ( empty($email) )    $error['email']      ='It is obligatory to enter a email';
  31.        if ( empty($comentario) ) $error['comentario'] ='It is obligatory to enter a           comment';
  32.     }
  33.        */
  34.      
  35.      // If you entered is that everything is done correctly
  36.      
  37.      $link = mysql_connect("localhost", "root", "");
  38.      mysql_select_db("a1118766_contact",$link);
  39.      if(!$link) {
  40.           //echo "Connection completed successfully.";
  41.        
  42.         header('Location:error.php');
  43.       }
  44.      
  45.      // insert data in database.
  46.      $sql = "INSERT INTO sumit (name, email, comentario)
  47.    VALUES('".$nombre."','".$email."','".$comentario."')";
  48.      
  49.          
  50.     if($nombre && $email && $comentario) {
  51.        
  52.         $resultado = mysql_query($sql);
  53.            
  54.             if($resultado){
  55.            
  56.             header( 'Location:informe.php?registro=true');
  57.          // Send an email to this email.
  58.             $mail='[email protected]';
  59.              
  60.             /*$name = $_POST['name'];
  61.             $email = $_POST['email'];
  62.             $comentario= $_POST['comentario'];*/
  63.             # These data are to be seen in the mail
  64.            $commentario = "
  65.            name: ".$nombre."
  66.            email: ".$email."
  67.            comentario: ".$comentario."";
  68.             # asunto del mensaje
  69.            if (mail($mail,"Jose gomez",$comentario, "From: ".$nombre." <".$email.">"))
  70.             $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
  71.             $header .= "Mime-Version: 1.0 \r\n";
  72.             $header .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
  73.             mail($to,$subject,$message,$headers);
  74.            
  75.             }
  76.      
  77.     }else{
  78.      
  79.         header( 'Location:failed.php?registro=false');
  80.      
  81.     }
  82.     }
  83.      
  84.      ?>

Lo he probado sin la funcionalidad del envío del correo (deberías crear una función y llamarla en lugar de "juntar todo el código ahí") y va perfectamente.
__________________
Sígueme en el Blog que llevo con otros dos compañeros sobre PHP, HTML5, JavaScript, JQuery y noticias tecnológicas... http://www.inix.es/docevoltios
  #6 (permalink)  
Antiguo 23/03/2012, 04:14
 
Fecha de Ingreso: octubre-2011
Mensajes: 25
Antigüedad: 13 años
Puntos: 0
Respuesta: formulario de contacto

pufff que mal!!!! no me habia dado cuenta sobre los nombre de las variables!!! madre mía!!

Y si lo del submit lo quite ya!!! pero lo de crear una nueva funcion para lo del correo no lo he echo. pues lo voy a probar veré si a mi me funciona perfectamente......

muchas gracias por tu repuesta apaxito!!!
  #7 (permalink)  
Antiguo 23/03/2012, 04:45
 
Fecha de Ingreso: octubre-2011
Mensajes: 25
Antigüedad: 13 años
Puntos: 0
Respuesta: formulario de contacto

Hola buenas apaxito!!

Estos son los cambios que acabo de hacer... no se lo he echo bien como lo tengo ahora.
Código PHP:
Ver original
  1. <?php
  2.  
  3.  if($_SERVER['REQUEST_METHOD'] == 'POST'){
  4.  
  5.  //First check that no field is empty and that all fields exist.
  6.  if(isset($_POST['name']) && !empty($_POST['name'])){
  7.  $name = mysql_real_escape_string($_POST['name']);
  8.  
  9.  }
  10.  
  11.  if(isset($_POST['email']) && !empty($_POST['email']))
  12.  {
  13.  $email = mysql_real_escape_string($_POST['email']);
  14.  
  15.  }
  16.  
  17.  if(isset($_POST['comment']) && !empty($_POST['comment'])){
  18.      $comment = mysql_real_escape_string($_POST['comment']);
  19.  
  20.  }
  21.  /*
  22.          // Complete error variable if necessary.
  23.          /*
  24.          {
  25.         if ( empty($nombre) ) $error['nombre']     ='It is obligatory to enter a name';
  26.         if ( empty($email) )    $error['email']      ='It is obligatory to enter a email';
  27.         if ( empty($comentario) ) $error['comentario'] ='It is obligatory to enter a comment';
  28.         }
  29.          */
  30.          
  31.  // If you entered is that everything is done correctly
  32.  
  33.  $link = mysql_connect("localhost", "root", "");
  34.  mysql_select_db("prueba",$link);
  35.  if($link) {
  36.       //echo "Connection completed successfully.";
  37.  
  38.   } else {  
  39.  
  40.     header( 'Location:error.php');
  41.  
  42.   }
  43.  
  44.  // insert data in database.
  45.  $sql = "INSERT INTO sumit(name, email, comment)
  46. VALUES('".$name."','".$email."','".$comment."',)";
  47.  
  48.      
  49.     if($name && $email && $comment) {
  50.    
  51.     $resultado = mysql_query($sql);
  52.        
  53.         if($resultado){
  54.        
  55.        
  56.         mandaMail($name, $email, $comment);
  57.        
  58.        
  59.         header( 'Location:informe.php?registro=true');
  60.         }
  61.  
  62. }else{
  63.  
  64.     header( 'Location:failed.php?registro=false');
  65.  
  66. }
  67. }
  68.  
  69.  function mandaMail ($name, $email, $comment){
  70.  
  71.     $mail='[email protected]';
  72.          
  73.        
  74.         # These data are to be seen in the mail
  75.         $cuerpo = "
  76.         name: ".$name."
  77.         email: ".$email."
  78.         comentario: ".$comment."";
  79.         # asunto del mensaje
  80.         if (mail($mail,"Oliver Arthur Webmaster",$cuerpo, "From: ".$name." <".$email.">"))
  81.         $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
  82.         $header .= "Mime-Version: 1.0 \r\n";
  83.         $header .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
  84.         mail($to,$subject,$message,$headers);
  85.  }
  86.  ?>
  #8 (permalink)  
Antiguo 23/03/2012, 05:02
Avatar de apaxito  
Fecha de Ingreso: febrero-2012
Ubicación: Sevilla
Mensajes: 47
Antigüedad: 12 años, 9 meses
Puntos: 10
Respuesta: formulario de contacto

¿Te funciona? Fíjate primero si te introduce los datos en la base de datos, y luego comprueba que te manda el correo.

En cuanto lo tengas avísame si te da algún fallo.
__________________
Sígueme en el Blog que llevo con otros dos compañeros sobre PHP, HTML5, JavaScript, JQuery y noticias tecnológicas... http://www.inix.es/docevoltios
  #9 (permalink)  
Antiguo 23/03/2012, 05:03
Avatar de apaxito  
Fecha de Ingreso: febrero-2012
Ubicación: Sevilla
Mensajes: 47
Antigüedad: 12 años, 9 meses
Puntos: 10
Respuesta: formulario de contacto

Por cierto, no has copiado todas las sentencias que te modifiqué, me he fijado que sigues poniendo una coma al final de la sentencia INSERT INTO, eso es erróneo, copia las líneas que te puse que modifiqué más de una cosa aunque no te lo pusiera aquí (pensé que copiarías todo el código).
__________________
Sígueme en el Blog que llevo con otros dos compañeros sobre PHP, HTML5, JavaScript, JQuery y noticias tecnológicas... http://www.inix.es/docevoltios

Etiquetas: contacto, formulario, mysql, registro, sql, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:48.