Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/06/2011, 02:34
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 7 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.