Foro de programación en PHP
Formulario en HTML + PHP
| Autor: leand Publicado: 17-5-2011 07:16 PM |
|
|
Hola, a ver si alguien me puede ayudar. Tengo un formulario en HTML y unos script que validan que el campo no este en blanco: <script language="JavaScript"> function noVacio() { var bError = false; bError = bError || (eval("document.formulario.Nombre" + ".value == ''")); if (bError){ alert("Complete su nombre"); eval("document.formulario.Nombre" + ".focus()"); } bError = bError || (eval("document.formulario.Direccion" + ".value == ''")); if (bError){ alert("Complete su direccion"); eval("document.formulario.Direccion" + ".focus()"); } bError = bError || (eval("document.formulario.Telefono" + ".value == ''")); if (bError){ alert("Complete su telefono"); eval("document.formulario.Telefono" + ".focus()"); } bError = bError || (eval("document.formulario.Mail" + ".value == ''")); if (bError){ alert("Complete su e-mail"); eval("document.formulario.Mail" + ".focus()"); } if (!bError) open("pagina_mail.html","_self"); } </script> </head> <body> <form name='formulario' id='formulario' action='pagina_mail.html' method="post" target='_self'> <table width="725" border="0"> <tr> <td width="109" class="arial">Nombre y Apellido:</td> <td width="606"><span class="arial"> <input name='Nombre' type='text' id='nombre' size="40" maxlength="40" /> </span></td> </tr> <tr> <td class="arial">Direccón:</td> <td><span class="arial"> <input name='Direccion' type='text' id='Direccion' size="40" maxlength="50" /> *Calle y número.</span></td> </tr> <tr> <td class="arial">Teléfono:</td> <td><span class="arial"> <input name='Telefono' type='text' id='Telefono' size="40" maxlength="40" /> *Anteponer el código de área.</span></td> </tr> <tr> <td class="arial">E-mail:</td> <td><span class="arial"> <input name='Mail' type='text' id='E-mail' size="40" maxlength="40" /> *Debe ser real para poder responderle.</span></td> </tr> <tr class="arial"> <td class="arial">Asunto:</td> <td><input name='Asunto' type='text' id='Asunto' value="Encargue" size="40" maxlength="40" /></td> </tr> <tr class="arial"> <td valign="top" class="arial"><a><a>Encargue:</a></a></td> <td font="arial"><textarea name="Encargue" id="Encargue" cols="40" rows="7">Escriba aquí su encargue...</textarea></td> </tr> <tr class="arial"> <td class="arial"> </td> <input type="hidden" name="cantidad" value="8"> <td><input type="button" value='Enviar Encargue' onclick="noVacio()" /> <input type='reset' value='Borrar todo' /></td> </tr> </table> <p align='center'> <span class="arial"><a><a><a><a><a><a><a><a><a><a><a><a></p> </form> Y la el PHP que lo envia es pagina_mail.html: <?php function form_mail($sPara, $sAsunto, $sTexto, $sDe){ if ($sDe)$sDe = "From:".$sDe; foreach ($_POST as $nombre => $valor) $sTexto = $sTexto."\n\n".$nombre." = ".$valor; return(mail($sPara, $sAsunto, $sTexto, $sDe)); } //Ejemplo de como usar: if (form_mail("contacto@mail.com", "Nuevo encargue", "Los datos introducidos en el encargue son:", "Remitente" ) ) echo "<br><br>Su encargue ha sido enviado con éxito.<br><br>"; echo "El mismo será registrado y respondido a la brevedad.<br><br>"; echo "Gracias por elegirnos!<br><br><br><br>"; ?> Mi problema es el siguiente, al mail me llega solo la frase: Los datos introducidos en el encargue son:. Es lo unico que me llega. Ahora si yo saco el script de validacion y al boton enviar lo pongo como submit ahi si me llega perfecto el formulario. Quisiera que llegue perfecto con las validaciones, si alguien me podria ayudar se lo voy a agradecer! Saludos! |
|
| Autor: Maquin Publicado: 13-6-2011 01:02 PM |
|
| Hola, te comento... el botón ese tienes k ponerlo de tipo submit, y en el formulario en la cabecera donde pones el <form..... onSubmit="return noVacio();">. Esto lo que te hace es.. que si la función JavaScript que tienes cuando hay un fallo devuelve false( que tienes k añadirselo a la función javascript), el formulario directamente no se envía pudiendo sacar un alert de javascript por ejemplo. En el momento que todo vaya bien, la función noVacio() devolverá true, por lo que el formulario seguirá su proceso y se enviará. P.D: si quieres probar eso, quita el onclick del botón. |
|

