Foros del Web » Programando para Internet » PHP »

Preparar datos enviados de un segundo formulario y enviar aunque se carguen o no

Estas en el tema de Preparar datos enviados de un segundo formulario y enviar aunque se carguen o no en el foro de PHP en Foros del Web. Hola. Estoy haciendo un formulario el cual tiene una casilla donde indica si hay otros conductores o no y a la vez si elige que ...
  #1 (permalink)  
Antiguo 10/06/2011, 02:34
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 4 meses
Puntos: 65
Preparar datos enviados de un segundo formulario y enviar aunque se carguen o no

Hola.

Estoy haciendo un formulario el cual tiene una casilla donde indica si hay otros conductores o no y a la vez si elige que hay otro conductor se incluye otro formulario con nuevos datos.

El formulario normal resumido sería así:

Código HTML:
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<legend>Tomador</legend>
	<fieldset>
    	<legend>Datos personales</legend>
		<!-- TEXT -->
        <label for="nombre">Nombre:</label>
		<input type="text" id="nombre" name="nombre" value="<?php if(isset($_POST['nombre']) && $_POST['nombre'] == "") {echo "Incompleto";} else {echo $_POST['nombre'];} ?>" class="fondo-input" /><br />
            
         <label for="otrosconductores">Existen otros conductores: </label>Si: <input type="radio" value="Si" name="otrosconductores" <?php
if (isset($_POST['otrosconductores']) && $_POST['otrosconductores'] == Si) { echo " checked='checked'"; }?> />
No: <input type="radio" value="No" name="otrosconductores" <?php
if (isset($_POST['otrosconductores']) && $_POST['otrosconductores'] == No) { echo " checked='checked'"; }?> /><br />
<label for="garaje">Garaje:</label>
<input type="radio" value="si" name="garaje"<?php
if (isset($_POST['garaje']) && $_POST['garaje'] == si) { echo " checked='checked'"; }?> />Si:
<input type="radio" value="no" name="garaje"<?php
if (isset($_POST['garaje']) && $_POST['garaje'] == no) { echo " checked='checked'"; }?> />No:<br />
</fieldset>
<?php 
if (isset($_POST['otrosconductores']) && $_POST['otrosconductores'] == Si) 
    	{	
		include('nombre-otro-conductor.php');
		}
?>
<input type="submit" value="Enviar" name="enviar" />
</form> 
y entonces si el usuario al enviar marca Sí pues se añade este:

Código HTML:
<legend>Segundo conductor</legend>
<fieldset>
    	<legend>Datos segundo conductor</legend>
		<!-- TEXT -->        
<label for="nombre2">Nombre:</label>
		<input type="text" id="nombre2" name="nombre2" value="<?php if($_POST['nombre2'] == "") {echo "Incompleto";} else {echo $_POST['nombre2'];} ?>" class="fondo-input" /><br />        
</fieldset>
<?php			   
			if(isset($_POST['enviar']))
				{										
					if($_POST['nombre2'] == "" or $_POST['nombre2'] == "Incompleto")
					{echo "<p>Faltan campos del segundo conductor</p>";}																	
				}
			?> 

En el encabezado del primero recojo los datos de esta forma:

Código PHP:
Ver original
  1. <?php              
  2.             if(isset($_POST['enviar']))
  3.                 {  
  4.                     if(isset($_POST['nombre2']) && $_POST['nombre2'] != "" && $_POST['nombre2'] != "Incompleto")
  5.                     if($_POST['nombre'] != "" && $_POST['nombre'] != "Incompleto" && $_POST['otrosconductores'] != "" && $_POST['garaje'] != "")
  6.                     {      
  7.                     //------------------ Aquí preparo la función mail          
  8.                     $para  = '[email protected]' . ',';
  9.                     //$para  .= '[email protected]' . ',';  
  10.                     // asunto
  11.                     $asunto = 'Formulario de contacto';
  12.                     // mensaje                 
  13.                     $mensaje = "Nombre: " .$_POST['nombre']. "\n";                 
  14.                     $mensaje .= "Otros conductores: " .$_POST['otrosconductores']. "\n";
  15.                     if($_POST['otrosconductores']== Si)
  16.                     {$mensaje .= "Nombre segundo conductor: " .$_POST['nombre2']. "\n";}                                   
  17.                     $mensaje .= "Garaje: " .$_POST['garaje']. "\n";        
  18.                     //----------------------------
  19.                     $enviando_datos=mail($para, $asunto, $mensaje, $cabeceras);
  20.                     if($enviando_datos==true){
  21.                     header("Location: http://...");
  22.                     }
  23.                     else{
  24.                      //El Mensaje no se pudo enviar
  25.                     }  
  26.                                
  27.                     }                                                          
  28.                 }
  29.            
  30.             ?>

Y así solo se envía cuando Sí ['otrosconductores'] está activo.

Si vuelvo a quitar la siguiente línea se envía de las dos maneras pero claro entonces no espera a recoger los datos del segundo conductor:

Código PHP:
Ver original
  1. if(isset($_POST['nombre2']) && $_POST['nombre2'] != "" && $_POST['nombre2'] != "Incompleto")

¿Como puedo hacer que también lo envíe con el No ['otrosconductores'] marcado?

Saludos.
  #2 (permalink)  
Antiguo 13/06/2011, 10:21
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 4 meses
Puntos: 65
Respuesta: Preparar datos enviados de un segundo formulario y enviar aunque se cargue

Hola de nuevo.

Finalmente lo he resuelto con un switch, así le doy una opción para el Si y otra para el No.

Código PHP:
Ver original
  1. <?php              
  2.             if(isset($_POST['enviar']))
  3.                 {  
  4.                 switch ($_POST['otrosconductores']) {
  5.                 case "Si":
  6.                 if($_POST['nombre2'] != "" && $_POST['nombre2'] != "Incompleto")
  7.                     if($_POST['nombre'] != "" && $_POST['nombre'] != "Incompleto" && $_POST['otrosconductores'] != "" && $_POST['garaje'] != "")
  8.                     {      
  9.                     //------------------ Aquí preparo la función mail          
  10.                     $para  = '[email protected]' . ',';                   
  11.                     // asunto
  12.                     $asunto = 'Formulario de contacto';
  13.                     // mensaje                 
  14.                     $mensaje = "Nombre: " .$_POST['nombre']. "\n";                 
  15.                     $mensaje .= "Otros conductores: " .$_POST['otrosconductores']. "\n";
  16.                     if($_POST['otrosconductores']== Si)
  17.                     {$mensaje .= "Nombre segundo conductor: " .$_POST['nombre2']. "\n";}                                   
  18.                     $mensaje .= "Garaje: " .$_POST['garaje']. "\n";        
  19.                     //----------------------------
  20.                     $enviando_datos=mail($para, $asunto, $mensaje, $cabeceras);
  21.                     if($enviando_datos==true){
  22.                     header("Location: http://web.com.php");
  23.                     }
  24.                     else{
  25.                      //El Mensaje no se pudo enviar
  26.                     }  
  27.                                
  28.                     }  
  29.             break;
  30.             case "No":
  31.             if($_POST['nombre'] != "" && $_POST['nombre'] != "Incompleto" && $_POST['otrosconductores'] != "" && $_POST['garaje'] != "")
  32.                     {      
  33.                     //------------------ Aquí preparo la función mail          
  34.                     $para  = '[email protected]' . ',';
  35.                     // asunto
  36.                     $asunto = 'Formulario de contacto';
  37.                     // mensaje                 
  38.                     $mensaje = "Nombre: " .$_POST['nombre']. "\n";                 
  39.                     $mensaje .= "Otros conductores: " .$_POST['otrosconductores']. "\n";
  40.                     if($_POST['otrosconductores']== Si)
  41.                     {$mensaje .= "Nombre segundo conductor: " .$_POST['nombre2']. "\n";}                                   
  42.                     $mensaje .= "Garaje: " .$_POST['garaje']. "\n";        
  43.                     //----------------------------
  44.                     $enviando_datos=mail($para, $asunto, $mensaje, $cabeceras);
  45.                     if($enviando_datos==true){
  46.                     header("Location: http://web.envio.php");
  47.                     }
  48.                     else{
  49.                      //El Mensaje no se pudo enviar
  50.                     }  
  51.                                
  52.                     }  
  53.         break;
  54.     }
  55.                                            
  56.                 }
  57.            
  58.             ?>

Sigo con la practica y aprendizaje

Etiquetas: enviados, formulario
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 16:18.