Foros del Web » Programando para Internet » PHP »

Se me borran los listBox del formulario cuando hay error de envío.

Estas en el tema de Se me borran los listBox del formulario cuando hay error de envío. en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/01/2013, 05:48
Avatar de Polu  
Fecha de Ingreso: febrero-2003
Mensajes: 135
Antigüedad: 21 años, 2 meses
Puntos: 0
Se me borran los listBox del formulario cuando hay error de envío.

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>
  #2 (permalink)  
Antiguo 19/01/2013, 06:35
 
Fecha de Ingreso: mayo-2005
Mensajes: 217
Antigüedad: 18 años, 10 meses
Puntos: 5
Respuesta: Se me borran los listBox del formulario cuando hay error de envío.

es que tienes que decirle a tu lista cual es el valor a seleccionar
Código HTML:
Ver original
  1. <option <php if (condicion) echo 'selected';?> >option1</option>
  2. <option <php if (condicion) echo 'selected';?> >option2</option>
  3. <option <php if (condicion) echo 'selected';?> >option3</option>
  #3 (permalink)  
Antiguo 20/01/2013, 05:34
Avatar de Polu  
Fecha de Ingreso: febrero-2003
Mensajes: 135
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Se me borran los listBox del formulario cuando hay error de envío.

Gracias Klyfa,
El resultado es factible, ahora sí me retiene los datos introducidos, me ha quedado así para al que le pueda interesar:
Código PHP:
      <select name="Regimen" id="Regimen" value="<?php echo $_SESSION['regimen'?>" >
<option <?php if ($regimen == "Pensión completa" ) echo 'selected';?> >Pensión completa</option>
<option <?php if ($regimen == "Media pensión" ) echo 'selected';?> >Media pensión</option>
<option <?php if ($regimen == "Habitación y desayuno" ) echo 'selected';?> >Habitación y desayuno</option>
<option <?php if ($regimen == "Sólo habitación" ) echo 'selected';?> >Sólo habitación</option>
</select>
Saludos

Última edición por Polu; 20/01/2013 a las 05:37 Razón: Falta de ortografía.

Etiquetas: borran, formulario, html, listbox, select
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 08:25.