• Domingo 22 de Diciembre de 2024, 23:23

Autor Tema:  Enviar formulario al hacer clic en 'enviar' y no al cargar  (Leído 1437 veces)

dpruebas

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Enviar formulario al hacer clic en 'enviar' y no al cargar
« en: Viernes 29 de Agosto de 2008, 08:20 »
0
Un saludo

Tengo una Web con un formulario en php que envia los datos a mi correo.

Funciona, exepto q envia el formulario vacio al cargar la pagina, sin necesidad de hacer clic en 'enviar'.

Lo q quiero es precisamente q se envie cuando haga clic en 'enviar' y no al cargar la pagina, ya q se me llena el correo de formularios vacios.

Espero q por favor puedan ayudarme (lamento no haber pedido el favor antes)

Les dejo el codigo para q quede claro el problema:


Código: Text
  1.  
  2. <form method="POST" action="contactenos.php" name="Contactenos">
  3.  
  4. <table border="0" width="100%" style="font-family: Arial, Verdana, Tahoma; font-size: 10pt; color: #000000" cellspacing="4">
  5.  
  6. <tr>
  7.     <td width="168">Nombre:</td>
  8.     <td>
  9.     <input type="text" name="Nombre" size="44"></td>
  10.     </tr>
  11.     <tr>
  12.     <td width="168">Correo electrónico:</td>
  13.     <td>
  14.     <input type="text" name="Correo" size="44"></td>
  15.     </tr>
  16.     <tr>
  17.     <td width="168">Asunto:</td>
  18.     <td>
  19.     <input type="text" name="Asunto" size="44"></td>
  20.     </tr>
  21.     <tr>
  22.     <td width="168">Comentarios:</td>
  23.     <td>
  24.     <textarea rows="9" name="Comentarios" cols="39"></textarea></td>
  25.     </tr>
  26.     </table>
  27.  
  28. <p>
  29. <input type="submit" value="Enviar" name="Enviar">
  30.  
  31. <input type="reset" value="Borrar" name="Borrar">
  32. </p>
  33.  
  34. </form>
  35.  
  36. <?
  37.  
  38. $nombre = $_POST['Nombre'];
  39. $correo = $_POST['Correo'];
  40. $asuntousuario = $_POST['Asunto'];
  41. $comentarios = $_POST['Comentarios'];
  42.  
  43. $header = 'From: ' . $correo . " rn";
  44. $header .= "X-Mailer: PHP/" . phpversion() . " rn";
  45. $header .= "Mime-Version: 1.0 rn";
  46. $header .= "Content-Type: text/plain";
  47.  
  48. $mensaje = "Nombre: " . $nombre . " rn";
  49. $mensaje .= "E-mail: " . $correo . " rn";
  50. $mensaje .= "Asunto: " . $asuntousuario . " rn";
  51. $mensaje .= "Comentarios: " . $comentarios . " rn";
  52. $mensaje .= "Enviado el " . date('d/m/Y', time());
  53.  
  54. $para = 'cualquiercosa@midominio.com';
  55. $asunto = 'Contactenos';
  56.  
  57. mail($para, $asunto, utf8_decode($mensaje), $header);
  58.  
  59. echo 'Gracias por tu Visita.';
  60.  
  61. ?>
  62.  
  63.  


Gracias por todo.

Espero alguien pueda ayudarme.


------------------------------------------------------------------------------------------------------------------------------------------------

Gracias por la respuesta, la verdad es q queria evitarme el hecho de hacer una pagina adicional para el codigo en php, ya q se q se puede hacer en la misma página, pero bueno.

Otra duda es q de todas formas no se si el php de la pagina que agregue tomara los datos de la página del formulario. es decir ¿Reconoce el codigo - $nombre = $_POST['Nombre']; - y los otros, si el campo - Nombre - no esta en la misma pagina.

Y agradeceria si porfavor me dijeran si se puede en la misma página y con q codigo, o en su defecto, si tengo q agregar algo adicional para q ocurra lo que dije en el parrafo anterior (Reconozca los campos en la otra pagina)

Gracias de nuevo.
« última modificación: Viernes 29 de Agosto de 2008, 19:40 por dpruebas »

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Enviar formulario al hacer clic en 'enviar' y no al cargar
« Respuesta #1 en: Viernes 29 de Agosto de 2008, 13:51 »
0
Tu fallo es ponerlo todo en el mismo fichero. Copia el código PHP y ponlo en contactenos.php y no en el HTML de la página del formulario. Un saludo.

punteroNULO

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: Enviar formulario al hacer clic en 'enviar' y no al cargar
« Respuesta #2 en: Viernes 29 de Agosto de 2008, 23:33 »
0
Tienes que poner una condición para que no se jecute el código de creación y envío del correo miestras no se envíen los datos.

Por ejemplo:
Código: Text
  1.  
  2. if (isset($_POST['Nombre']))
  3. {
  4. /*código para creación y envío de correo*/
  5. }
  6.  
  7.  

con la función isset se comprueba que una variable contenga valor. Si tiene un valor es porque se envio en el formulario.

dpruebas

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Enviar formulario al hacer clic en 'enviar' y no al cargar
« Respuesta #3 en: Sábado 30 de Agosto de 2008, 05:35 »
0
Cita de: "punteroNULO"
Tienes que poner una condición para que no se jecute el código de creación y envío del correo miestras no se envíen los datos.

Por ejemplo:
Código: Text
  1.  
  2. if (isset($_POST['Nombre']))
  3. {
  4. /*código para creación y envío de correo*/
  5. }
  6.  
  7.  

con la función isset se comprueba que una variable contenga valor. Si tiene un valor es porque se envio en el formulario.


- - - - -  - - - - - - - - - - - - -  -

Muchiiisimas gracias!!! ya entiendo, solo q decidi hacerlo en funcion de 'Enviar' así:

Código: Text
  1.  
  2. if (isset($_POST['Enviar']))
  3. {
  4. ...
  5. }
  6.  
  7.  


Gracias por tu respuesta, me ayudo a entender este problema y lo sumo a mis nuevos conocimientos.

No se si aqui se dan puntos, pero si es asi, lo siento pero no se como hacerlo porke soy nuevo en "solocodigo" ... Pero de todas formas, Gracias y ¡¡Suerte!!