Validación de formulario y envió de datos

Iniciado por gabrielbdmr, 3 Agosto 2016, 21:50 PM

0 Miembros y 1 Visitante están viendo este tema.

gabrielbdmr

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




<!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($emailFILTER_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 "info@miweb.com";

$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 <miweb@miweb.com>' "\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 <info@miweb.com> ' "\r\n" ;
    
$headers_out .= 'Reply-To: info@miweb.com' "\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_outmail ($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>