Hola,
He montado un formulario en php y html, el cual contiene campos de texto normales (input type="text") y listBox (select name), pues bien, cuando doy a enviar y no he introducido algún campo correctamente, como es normal sale el mensaje de error y me devuelve otra vez al formulario que estaba rellenando, de manera que los campos de texto mantienen los datos introducidos anteriormente y sin envargo los listBox se borran, no entiendo por qué, puesto que he creado una sesión: session_start(). Aquí os dejo parte de la estructura por si alguein ve una solución:
Un saludo
Código PHP:
<?php
if(isset($_POST['Direccion_Email']) AND ($_POST['enviar'])) {
session_start();
$mensaje_error = "";
include 'config-formulario.php';
if(!isset($_POST['Regimen']) ||
!isset($_POST['Nombre_Completo']) ||
!isset($_POST['Direccion_Email'])
) {
$mensaje_error .='Al Parecer tiene un problema con el Formulario <br />';
}
$regimen = strip_tags( $_POST['Regimen']);
$_SESSION['regimen'] = $regimen;
$su_nombre = strip_tags($_POST['Nombre_Completo']);
$_SESSION['su_nombre'] = $su_nombre;
$email_de = strip_tags($_POST['Direccion_Email']);
$_SESSION['email_de'] = $email_de;
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(preg_match($email_exp,$email_de)==0) {
$mensaje_error .= 'La dirección Email no es válida<br />';
}
if(strlen($su_nombre) < 2) {
$mensaje_error .= 'Ingrese su Nombre o empresa<br />';
}
if(strlen($mensaje_error) > 0) {
echo '
<div class="alerta"> <b>ERROR AL ENVIAR EL FORMULARIO !</b><br /><br /> '.$mensaje_error.'</div>
';
}
// Si todo está bien, entonces enviamos el mensaje Email
if (strlen($mensaje_error) == 0){
$mensaje_email = "MENSAJE DEL FORMULARIO DE CONTACTO. <br /><br />";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:");
return str_replace($bad,"",$string);
}
$mensaje_email .= "Régimen: ".clean_string($regimen)."<br />";
$mensaje_email .= "Nombre: ".clean_string($su_nombre)."<br />";
$mensaje_email .= "Dirección Email: ".clean_string($email_de)."<br />";
$cabeceras = 'From:'.$email_de."\r\n".
'Reply-To:'. $email_de. "\r\n".
'X-Mailer: PHP/' . phpversion().
'Return-Path:' .$email_de."\r\n".
'MIME-Version: 1.0' . "\r\n".
'Content-type: text/html; charset=utf-8' . "\r\n";
mail($enviar_a, $asunto, $mensaje_email, $cabeceras);
header("Location: $pagina_confirmacion");
echo "
<script>location.replace('".$pagina_confirmacion."')</script>
";
}
}
?>
<script language="javascript" src="scripts/popcalendar.js" type="text/javascript"></script>
<form name="formulariocontacto" method="post" action="index.php" onSubmit="return validate.check(this)">
<!--//////////////////////////////////////////////////////////////////////// -->
<div id="contenedor_reservas">
<div id="lista_regimen">
<select name="Regimen" id="Regimen" value="<?php echo $_SESSION['regimen'] ?>" >
<option>Pensión completa</option>
<option>Media pensión</option>
<option>Habitación y desayuno</option>
<option>Sólo habitación</option>
</select>
</div>
</div>
<div id="cont_reserv_datos">
<div id="reserva_datos">
<div id="textoreservadatos">Nombre o empresa:</div>
<div id="camporeservadatos">
<input type="text" name="Nombre_Completo" id="Nombre_Completo" size="45" value="<?php echo $_SESSION['su_nombre'] ?>" maxlength="50" >
</div>
</div>
<div id="reserva_datos">
<div id="textoreservadatos">Email:</div>
<div id="camporeservadatos">
<input type="text" name="Direccion_Email" id="Direccion_Email" size="45" value="<?php echo $_SESSION['email_de'] ?>" maxlength="30" >
</div>
</div>
</div>
<!-- ///////////////////// -->
<div id="cont_boton_enviar">
<div id="boton_enviar"><span style="text-align:center">
<input name="enviar" id="enviar" type="submit" value=" Enviar Formulario »" style="width:200px;height:40px;font-size:18px " />
</span></div>
</div>
</form>
</body>
</html>