Comunidad de diseño web y desarrollo en internet online

Validación de formulario y envió de datos

Citar            
MensajeEscrito el 03 Ago 2016 07:45 pm
Buen día con todos, tengo un problema con el siguiente formulario, pasa que cuando solo lleno los campos que no requieren validación, e intento mandar el formulario, alerta los campos requeridos pero se borra la información de los campos llenados, igualmente si lleno todo el formulario, realiza el envió y la inserción en mysql pero solo de los campos validados, agradecería vuestra ayuda para encontrar y corregir el error o una solución alternativa

tome como base el formulario de

http://www.w3schools.com/php/showphp.asp?filename=demo_form_validation_complete



Código :

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formulario de Contacto</title>


</head>

<body>


<div class="formulario_imc">

<?php

               // define variables and set to empty values
               $apellido = $nombre = $telefono = $email = $distrito = $objetivo = $mensaje = $form_ok = "";
               $telefono_Err = $email_Err = "";
               $telefonoclass = $email_class = "";
               
               
               if ($_SERVER["REQUEST_METHOD"] == "POST") {
                  
                  $form_ok = TRUE; //verifica que el formulario esta ok
                  
            
                  if (empty($_POST["telefono"])) {
                  $telefono_Err = "Ingresa tu número telefónico";
                  $telefono_class = "has-error";
                  $form_ok = FALSE;
                  } else {     
                  $telefono = test_input($_POST["telefono"]);
                  // check if phone only contains numbers
                  if (!preg_match("/^[0-9]*$/",$telefono)) {
                  $telefono_Err = "Solo se permiten números"; 
                  $telefono_class = "has-error";
                  $form_ok = FALSE;
                  }
                  }
                  
                  
                   if (empty($_POST["email"])) {
                  $emailErr = "Ingresa tu email";
                  $email_class = "has-error";
                  $form_ok = FALSE;
                  } else {
                  $email = test_input($_POST["email"]);
                  // check if e-mail address is well-formed
                  if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                  $emailErr = "Ingresa un correo válido"; 
                  $email_class = "has-error";
                  $form_ok = FALSE;
                  }
                  }
                 
                 
                    
                    if (empty($_POST["apellido"])) {
                  $apellido = "";
                  } else {
                  $apellido = test_input($_POST["apellido"]);
                  }
              
                    if (empty($_POST["nombre"])) {
                  $nombre = "";
                  } else {
                  $nombre = test_input($_POST["nombre"]);
                  }   
                  
                  if (empty($_POST["distrito"])) {
                  $distrito = "";
                  } else {
                  $distrito = test_input($_POST["distrito"]);
                  }   
                  
                  if (empty($_POST["objetivo"])) {
                  $objetivo = "";
                  } else {
                  $objetivo = test_input($_POST["objetivo"]);
                  }   
                  
                  if (empty($_POST["mensaje"])) {
                  $mensaje = "";
                  } else {
                  $mensaje = test_input($_POST["mensaje"]);
                  }   
                  
                     
               
               }
               
               function test_input($data) {
                  $data = trim($data);
                  $data = stripslashes($data);
                  $data = htmlspecialchars($data);
                  return $data; 
                  
               }
               
               
               
                  //despues de verificar el contenido del formulario
                  if($form_ok) { 
                  
                                       
                  $to_in = "[email protected]";
               
                  $subject_in = "Nuevo Cliente registrado:".$apellido.", ".$nombre." (".$email.") " ;
               
                  $message_in = " 
                  
                     <html>   
                  
                  <html>
                  <head>
                  <title>Nuevo Cliente registrado</title>
                  
                  <style>
                  
                  table, tr, th, td {
                     border: 1px;
                  }
                  
                  th {
                     background:#000;
                     color:#FFF;
                  }
                  
                  table {
                     width:100%;
                  }
                  
                  
                  </style>
                  
                  </head>
                  <body>
                  
                  <table>
                     
                     <tr>
                        <th>Categoría</th>
                        <th>Apellidos y nombre</th>
                        <th>Teléfono</th>
                        <th>Email</th>
                        <th>Distrito</th>
                        <th>Objetivo</th>
                     </tr>
                     <tr>
                        <td>".$categoria."</td>
                        <td>".$apellido.",".$nombre."</td>
                        <td>".$telefono."</td>
                        <td>".$email."</td>
                        <td>".$distrito."</td>
                        <td>".$objetivo."</td>
                        
                     </tr>
                     
                  </table>   
                  <table>
                  
                     <tr>
                        <th>Mensaje</th>
                     </tr>
                     <tr>
                        <td>".$mensaje."</td>
                     </tr>
                     
                  </table>
                  </body>
                  </html> 
                  
                  ";   
                  
                  $subject_out .= "Confirmación de recepción de mensaje" ;
                  
                  $message_out .= "
                  
                  <html>   
                  
                  <head>
                  <title>Confirmación de recepción de mensaje</title>
                  </head>                        
                                       
                  <body>
                                    
                  <p><strong>Confirmación de recepción de mensaje</strong></p> 
                                    
                  <p>Hemos recibido tu mensaje, nos comunicaremos contigo en un plazo máximo de 48 horas.</p>
                                    
                  <p></p>
                                    
                  <p>Atentamente</p>

                                    
                  </body>
                                    
                  </html> 
                  
                  " ;
               
                  
                  
                  $headers_in = "MIME-Version: 1.0" . "\r\n";
                  $headers_in .= 'From: web Server <[email protected]>' . "\r\n" ;
                  $headers_in .= "Content-type:text/html;charset=UTF-8" . "\r\n";
                  
                  $headers_out = "MIME-Version: 1.0" . "\r\n";
                  $headers_out .= 'From: web <[email protected]> ' . "\r\n" ;
                   $headers_out .= 'Reply-To: [email protected]' . "\r\n";
                  $headers_out .= "Content-type:text/html;charset=UTF-8" . "\r\n";
                  
      
                  
                  "X-Mailer: PHP/" . phpversion();
                  
                  
                  $mail_in = mail($to_in,'=?utf-8?B?'.base64_encode($subject_in).'?=',$message_in,$headers_in);                  
                  
                  $mail_out= mail ($email,'=?utf-8?B?'.base64_encode($subject_out).'?=',$message_out,$headers_out);
                  
            
                  
                  if ($mail_in) {
                     
                  require("../admin/settings.php"); 
                  
                  $categoria=$_POST['categoria'];
                  $apellido=$_POST['apellido'];
                  $nombre=$_POST['nombre'];
                  $telefono=$_POST['telefono'];
                  $email=$_POST['email'];
                  $distrito=$_POST['distrito'];
                  $objetivo=$_POST['objetivo'];
                  $mensaje=$_POST['mensaje'];   
                  $opcion_1="no_determinado";
                  $opcion_2="no_determinado";
                  $fecha_registro=$_POST['fecha_registro'];
                  $fecha_contacto="";
                  
               $insertar= "INSERT INTO contactos (

                  categoria,
                  apellido,
                  nombre,
                  telefono,
                  email,
                  distrito,
                  objetivo,
                  mensaje,   
                  opcion_1,
                  opcion_2,
                  fecha_registro,
                  fecha_contacto
                  
               )
                  
               VALUES (
                  '$categoria',
                  '$apellido',
                  '$nombre',
                  '$telefono',
                  '$email',
                  '$distrito',
                  '$objetivo',
                  '$mensaje',
                  '$opcion_1',
                  '$opcion_2',
                  '$fecha_registro',
                  '$fecha_contacto'
                  
               )";
                                 
                  
                  if (mysqli_query($conn, $insertar)) {
                        //echo "Registro creado con éxito";
                     } else {
                        echo "Error: " . $insertar . "<br>" . mysqli_error($conn);
                     }
                     
                     mysqli_close ($conn);
                     
                     
                  ?>
                      
                  <div class="email_table">
                            <div class="email_table_cell">
                                <p><span class="btn btn-success">Registro completado</span></p>
                                <p>Se enviaron los datos satisfactoriamente, muy pronto nos pondremos en contacto contigo!</p>
                            </div>
                        </div>
                        
                     
                  <?php    
                     
                  
                  }} else { {
                                 
                  ?>
                        
                 <p>Solicita mayor información y con gusto te responderemos.</p>
                
               
                   <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post" enctype="multipart/form-data" name="calculadora_imc"> 
                  
                          <div class="form-group">
                            <label for="apellido">Apellido</label>
                            <input type="text" class="form-control input-sm" nombre="apellido" id="apellido" placeholder="Apellido" value="<?php echo $apellido;?>" >
                            </div>
                            
                            <div class="form-group">
                            <label for="nombre">Nombre</label>
                            <input type="text" class="form-control input-sm" nombre="nombre" id="nombre" placeholder="Nombre" value="<?php echo $nombre;?>" >
                            </div>
                    
                                         
                            <div class="form-group <?php echo $telefono_class;?>">                                                                     
                            <label for="telefono">Telefono</label> <span class="error"> * <?php echo $telefono_Err;?></span>
                            <input type="text" class="form-control input-sm has-error" name="telefono" id="telefono" placeholder="Telefono" value="<?php echo $telefono;?>"> 
                            </div>  
                            
                            <div class="form-group <?php echo $email_class;?>">                                                                     
                            <label for="email">Email</label> <span class="error"> * <?php echo $email_Err;?></span>
                            <input type="text" class="form-control input-sm has-error" name="email" id="email" placeholder="Email" value="<?php echo $email;?>"> 
                            </div>
                            
                            <div class="form-group">
                            <label for="distrito">Distrito</label>                            
                            <input type="text" class="form-control input-sm" nombre="distrito" id="distrito" placeholder="Distrito" value="<?php echo $distrito;?>" >
                            </div>  
                            
                            <div class="form-group"> 
                           <label for="objetivo">Objetivo</label>
                           <select class="form-control input-sm" nombre="objetivo" id="objetivo" >
                              <option value="<?php echo $objetivo;?>" selected><?php echo $objetivo;?></option>
                              <option value="Reducción de grasa corporal">Reducción de grasa corporal</option>
                              <option value="Aumento de masa muscular">Aumento de masa muscular</option>
                              <option value="Tonificación">Tonificación</option>
                              <option value="Mejora de energía">Mejora de energía</option>
                              <option value="Bienestar físico y emocional">Bienestar físico y emocional</option>
                              <option value="Coordinación">Coordinación</option>
                              <option value="Otros">Otros</option>
                            </select> 
                            </div>
                            
                            <div class="form-group"> 
                            <label for="mensaje">Mensaje</label>
                            <textarea class="form-control input-sm " nombre="mensaje" id="mensaje" placeholder="Mensaje" rows="3"><?php echo $mensaje;?></textarea>
                            </div>   
                            
                                                     
                            <p><span class="error"> * Datos mínimos requeridos</span></p>                            
                                                       
                            <input class="btn btn-primary btn-sm" type="submit" name="enviar" id="enviar" value="Enviar"/>
                            
                            <input id="categoria" name="categoria" type="hidden" value="Cliente" >
                            
                            <input id="fecha_registro" name="fecha_registro" type="hidden" value="<?php echo date("Y-m-d")?>">                         

                            
                                           
                  </form> 
         
                    
                    
                    <?php 
                  
               } }//end of else block 
                                 
               ?>
                    
                          
    
</div>




</body>
</html>

Por gabrielbdmr

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 05 Ago 2016 06:07 pm
<script>
function validarNombreT(nombre){
if (!/^([A-Z]{1})([a-zA-ZñÑ\s\W])*$/.test(nombre))
{ alert("Nombre " + nombre + " no valido");
alert("Utiliza solo letras. La primera letra es MAYUSCULA");
NombreDelTutor.value="";
}
}
</script>



<input type="text" class="form-control" name='NombreDelTutor' id="NombreDelTutor" onChange="validarNombreT(this.value);"/>
<label for='NombreDelTutor'>Nombre (tutor)</label>
</div>
<div class='col-md-4 aPaternoT'>


como tal podrias usar las validaciones de JavaScript esas como tal obligan a llenar los campos antes de poder enviar un formulario espero y te sirva recuerda poner el mismo nombre de la funcion y el onChange="validarNombreT(this.value);"

Por Daniel Mancera

5 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.