Foros del Web » Programando para Internet » PHP »

Envío selectivo por formulario

Estas en el tema de Envío selectivo por formulario en el foro de PHP en Foros del Web. Hola. Tengo formularios (POST) que envían los datos ingresados por e-mail. Necesito que solamente me envíe los datos que han sido completados, considerando que en ...
  #1 (permalink)  
Antiguo 05/10/2005, 15:51
 
Fecha de Ingreso: marzo-2005
Mensajes: 201
Antigüedad: 19 años
Puntos: 0
Pregunta Envío selectivo por formulario

Hola. Tengo formularios (POST) que envían los datos ingresados por e-mail.
Necesito que solamente me envíe los datos que han sido completados, considerando que en el modelo actual, me envía el nombre del campo y el dato ingresado.
Pero necesito que NO me envíe los nombres de campos que están vacíos. Así, por ejemplo, este sería el email que me llega actualmente:

Nombre: Juan
Apellido:
E-mail:
Edad: 20


Pero necesito que sólo me llegue lo completado, es decir, así:

Nombre: Juan
Edad: 20

Muchas gracias

Es decir, eliminar esas 2 líneas que quedaron sin completar
  #2 (permalink)  
Antiguo 05/10/2005, 16:02
Avatar de davidangel  
Fecha de Ingreso: abril-2005
Mensajes: 124
Antigüedad: 18 años, 11 meses
Puntos: 0
pues validalo con javascript
si tiene dato lo envias sino le quitas el name(a los input) asi no se enviara la data

bueno si quieres algo mas de ayuda pasa tu codigo seria mas facil y rapido

nos vemos suerte
__________________
Angel de Madrid
-------------------------------------------------
guarda tus favoritos http://markerbox.com (no requiere correo) :arriba:
  #3 (permalink)  
Antiguo 05/10/2005, 16:12
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 19 años, 5 meses
Puntos: 4
Si quieres tambien puedes "validarlo" con PHP, lo que puedes hacer es esto:

Código PHP:
//recibes datos del form
$nombre=$_POST['nombre'];
$edad=$_POST['edad'];
$email=$_POST['email'];

//creo el contenido del mensaje siempre que no esten vacias las cadenas

$contenido="";

if(
$nombre!=""){
$contenido"Nombre: " .$nombre;
}
if(
$edad!=""){
$contenido.= "Edad: " .$edad;
}

if(
$email!=""){
$contenido.= "Email: " .$email;
}

//envio el email
mail('[email protected]''Mi Asunto'$contenido); 
Espero que te sirva.

Saludos,
__________________
sergiold
  #4 (permalink)  
Antiguo 05/10/2005, 16:27
 
Fecha de Ingreso: marzo-2005
Mensajes: 201
Antigüedad: 19 años
Puntos: 0
Debo ser más específico porque se trata de un formulario que tiene unos 60 campos, por lo que si pudiera contar con algun script que lo automatice, mejor. Muestro el script con unos pocos campos (9522, 9523, 9524 y 9551):

<form action="http://www.miservidor.net/formmail/formmail.php3" method="POST">
<div align="center">
<input type="hidden" name="subject" value="Formulario desde la web">
<input type="hidden" name="recipient" value="[email protected]">
<input type="hidden" name="redirect" value=http://www.midominio.com.ar/gracias.htm>
</div>

<table width="770" border="0" align="center" cellpadding="01" cellspacing="0" bgcolor="#009999">
<tr>
<td valign="top" bgcolor="#FFFFFF"><table border="1" align="center" cellpadding="0" cellspacing="0">
<tr bgcolor="#CCCC99">
<td width="86"><div align="center">9522 </div></td>
<td><div align="center">
<input name="9522" type="text" id="9522" size="3" maxlength="3">
</div></td>
</tr>
<tr bgcolor="#FFFFCC">
<td><div align="center">9523 </div></td>
<td><div align="center">
<input name="9523" type="text" id="9523" size="3" maxlength="3">
</div></td>
</tr>
<tr bgcolor="#CCCC99">
<td><div align="center">9524 </div></td>
<td><div align="center">
<input name="9524" type="text" id="9524" size="3" maxlength="3">
</div></td>
</tr>
<tr bgcolor="#FFFFCC">
<td><div align="center">9551 </div></td>
<td width="85"><div align="center">
<input name="9551" type="text" id="9551" size="3" maxlength="3">
</div></td>
</tr>
</table></td>
</tr>
</table>
<div align="center">
<p><font color="#D8B592">
<input name="submit" type=submit onClick="MM_validateForm('realname','','R','email' ,'','NisEmail','telefono','','RisNum','Empresa','' ,'R');return document.MM_returnValue" value="Enviar el Pedido">
</font> </p>
</div>
</form>
  #5 (permalink)  
Antiguo 05/10/2005, 16:50
 
Fecha de Ingreso: marzo-2005
Mensajes: 201
Antigüedad: 19 años
Puntos: 0
Me olvidaba: las validaciones que aparecen al final no son de los campos en cuestion sino del formulario original.
  #6 (permalink)  
Antiguo 05/10/2005, 23:35
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 6 meses
Puntos: 55
bueno hace un script en php q imprima el codigo del javascript
Código PHP:
<?
$cant_inputs
=50;//la cantidad de inputs q tengas en el formulario
for($i=9500;$i<$cant_inputs;$i++){
echo 
"if(formulario.$i.value==\"\"){\n
formulario.$i.name=""\n //no recuerdo ahora como se le cambiaba el nombre :P
return(false)\n
}\n //if"
;
}
//for
echo "return(true)\n";
?>
y todo esto lo metes dentro de <script></script>
espero te sirva, o te de una idea de como hacerlo
saludos
  #7 (permalink)  
Antiguo 06/10/2005, 07:47
 
Fecha de Ingreso: marzo-2005
Mensajes: 201
Antigüedad: 19 años
Puntos: 0
No fui claro. Los campos llevan nombre o numeros que responden a piezas mecánicas, es decir, no tienen correlatividad ni lógica. Por eso repregunto: ¿es posible que, en el envío del formulario, sólo remita los campos que fueron completados? Quizá deba incluirles un valor 0 (cero) u otro, de tal modo que el script de envío sólo tome los que son ditintos de cero (u otro símbolo).
Muchas gracias por vuestro tiempo!
  #8 (permalink)  
Antiguo 06/10/2005, 08:20
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 19 años, 5 meses
Puntos: 4
Puedes intentar lo siguiente:

Código PHP:
<?
$contenido
="";
foreach (
$_POST as $i => $valor) {//recorro el array $_POST
   
if($valor!=""){//si no esta vacio
   
$contenido.=$i .": ";//escribo el nombre del campo
   
$contenido.=$valor ."\n";//y su valor
   
}
}

//envio el email 
mail('[email protected]''Mi Asunto'$contenido); 
?>
A ver si te sirve...

Saludos,

PD. Es posible que el código contenga errores...
__________________
sergiold
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 05:37.