entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

recoger datos formulario

Tengo un formulario en una web

<form action="formu_cita.php" method="post">
<p>
<label for="comment_name">Nombre<span class="required"></span></label>
<input id="comment_name" class="aqua_input" name="nombre" type="text" value="">
</p>
<p>
<label for="email">Email<span class="required"></span></label>
<input id="email" class="aqua_input" name="email" type="text" value="">
</p>
<p>
<label for="telefono">Teléfono<span class="required"></span></label>
<input id="telefono" class="aqua_input" name="telefono" type="text" value="">
</p>
<p>
<label for="fecha">Fecha Deseada<span class="required"></span></label>
<input id="fecha" class="aqua_input" name="fecha" type="text" value="">
</p>
<p>
<label for="hora">Hora Deseada<span class="required">*</span></label>
<input id="hora" class="aqua_input" name="hora" type="text" value="">
</p>

                <p>     
                    <label for="motivo">Motiva de la consulta<span class="required">*</span></label>
                    <textarea id="motivo" rows="8" class="aqua_input" name="eltexto"></textarea>
                </p>
                <p class="form-submit">
                    <input name="submit" type="submit" id="submit" value="Enviar" class="button_hilite sm_button">
                </p>                        
            </form> 

por algo que desconozco no me están llegando ni el campo fecha ni el campo hora

Este es el php donde recibo la llamada

<?php
$sendTo = "[email protected]";
$subject = "formulario";
$nombre = $_POST["nombre"];
$telefono = $_POST["telefono"];
$email = $_POST["email"];
$fecha = $_POST["fecha"];
$hora = $_POST["hora"];
$eltexto = $_POST["eltexto"];
$headers .= "";
$message = "\nNombre: " . $nombre . "\ntelefono: " . $telefono . "\nfecha: " . $fecha . "\nhora: " . $hora . "\nemail: " . $email . "\nArea Texto: " . $eltexto;
mail($sendTo, $subject, $message, $headers);

header ("Location: contacto.html");  
?>

¿ A alguien se le ocurre algo ?

Muchas gracias

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola @gonzalss,

el único error que veo es la concatenación de $headers, que al no estar definida previamente tiene que darte un Warning. Sacando el . deja de dar el error.

Yo estoy probando este código, y salvo que comenté el envío de e-mail y puse un var_dump() para ver lo que llegaba, los datos del formulario se ven tal cual los escribo:

<!DOCTYPE html>
<html >
<head>
<title>Fecha y Hora</title>
</head>
<body>
<?php
var_dump($_POST);

$sendTo = "[email protected]";
$subject = "formulario";
$nombre = $_POST["nombre"];
$telefono = $_POST["telefono"];
$email = $_POST["email"];
$fecha = $_POST["fecha"];
$hora = $_POST["hora"];
$eltexto = $_POST["eltexto"];
$headers = "";
$message = "\nNombre: " . $nombre . "\ntelefono: " . $telefono . "\nfecha: " . $fecha . "\nhora: " . $hora . "\nemail: " . $email . "\nArea Texto: " . $eltexto;

print($message);

//  mail($sendTo, $subject, $message, $headers);
?>
< /hr>

<form action="?" method="post">
<p>
<label for="comment_name">Nombre<span class="required"></span></label>
<input id="comment_name" class="aqua_input" name="nombre" type="text" value="">
</p>
<p>
<label for="email">Email<span class="required"></span></label>
<input id="email" class="aqua_input" name="email" type="text" value="">
</p>
<p>
<label for="telefono">Teléfono<span class="required"></span></label>
<input id="telefono" class="aqua_input" name="telefono" type="text" value="">
</p>
<p>
<label for="fecha">Fecha Deseada<span class="required"></span></label>
<input id="fecha" class="aqua_input" name="fecha" type="text" value="">
</p>
<p>
<label for="hora">Hora Deseada<span class="required">*</span></label>
<input id="hora" class="aqua_input" name="hora" type="text" value="">
</p>

                <p>     
                    <label for="motivo">Motiva de la consulta<span class="required">*</span></label>
                    <textarea id="motivo" rows="8" class="aqua_input" name="eltexto"></textarea>
                </p>
                <p class="form-submit">
                    <input name="submit" type="submit" id="submit" value="Enviar" class="button_hilite sm_button">
                </p>                        
            </form> 

</body>
</html>

Fijate de a tu código en "formu_cita.php" de agregarle algún var_dump() para ver qué datos te llegan.

Saludos!

0voto

gonzalss comentado

Sólo llegan estos cuatro campos

Nombre: gonzalss
telefono: 6xxxx
email: [email protected]
Area Texto: lo que envío desde el formulario

Los campos fecha y hora no está llegando y he puesto lo mismo para todos los campos

1voto

Leonardo-Tadei comentado

Podrías copiar y pegar acá la salida de un var_dump($_POST) ?

0voto

gonzalss comentado

No me está ejecutanto

Este es el formulario que envio

<form action="formu_cita.php" method="post">
<p>
<label for="comment_name">Nombre<span class="required"></span></label>
<input id="comment_name" class="aqua_input" name="nombre" type="text" value="">
</p>
<p>
<label for="email">Email<span class="required">
</span></label>
<input id="email" class="aqua_input" name="email" type="text" value="">
</p>
<p>
<label for="telefono">Teléfono<span class="required"></span></label>
<input id="telefono" class="aqua_input" name="telefono" type="text" value="">
</p>
<p>
<label for="fecha">Fecha Deseada<span class="required">
</span></label>
<input id="fecha" class="aqua_input" name="fecha" type="text" value="">
</p>
<p>
<label for="hora">Hora Deseada<span class="required">*</span></label>
<input id="hora" class="aqua_input" name="hora" type="text" value="">
</p>

              <p>     
                  <label for="motivo">Motiva de la consulta<span class="required">*</span></label>
                  <textarea id="motivo" rows="8" class="aqua_input" name="eltexto"></textarea>
              </p>
              <p class="form-submit">
                  <input name="submit" type="submit" id="submit" value="Enviar" class="button_hilite sm_button">
              </p>                        
          </form> 

Este formulario lo tengo en esta pagina
http://pruebagonzalo.org.es/theclinic/citaonline.html

Y llama al siguiente php llamado formu_cita.php

<?php
          // var_dump($_POST);

         $sendTo = "[email protected]"; 
         $subject = "formulario"; 
         $nombre = $_POST["nombre"]; 
         $telefono = $_POST["telefono"]; 
         $email = $_POST["email"]; 
         $fecha = $_POST["fecha"]; 
         $eltexto = $_POST["eltexto"]; 
         $headers .= ""; 
         $message = "\nNombre: " . $nombre . "\ntelefono: " . $telefono . "\nFecha: ". $fecha . "\nemail: " . $email . "\nArea Texto: " . $eltexto; 

        // print($message);

mail($sendTo, $subject, $message, $headers);

header ("Location: citaonline.html");  

?>

No llegan ni la fecha ni la hora

No entiendo nada

0voto

gonzalss comentado

También me tengo el problema que la redirección final no lo hace.
Tal como te he comentado me llegan la mitad de los campos pero luego no me redirige a la página citaonline.html

0voto

Leonardo-Tadei comentado

Hola @gonzalss,

si no descomentás el var_dump() de formu_cita.php y copiás y pegás la salida acá, no creo que pueda darme cuenta de lo que te pasa...

La llamada a header() va a fallar cuando funcione el var_dump(), porque no se pueden enviar cabeceras después de la salida, e incluso es mejor comentarla para esta prueba. La idea es que puedas ver la salida del var_dump() en el navegador para que puedas copiarla y pegarla acá...

0voto

gonzalss comentado

He incluido el var_dump()

y he puesto el print , me ha salido esto

array(7) { ["nombre"]=> string(1) "G" ["email"]=> string(2) "gg" ["telefono"]=> string(4) "7777" ["fecha"]=> string(3) "777" ["hora"]=> string(3) "uuu" ["eltexto"]=> string(4) "uuuu" ["submit"]=> string(6) "Enviar" } Nombre: G telefono: 7777 fecha: 777 email: gg Area Texto: uuuu

0voto

Leonardo-Tadei comentado

La salida del var_dump() que envías tiene como falores de fecha "777" y como valor de hora "uuu" que supongo que es lo que probaste para enviar.

Esto significa que los dos datos sí llegan.

en la salida del print($message); aparece "fecha: 777" que es el valor que está llegando, así que esto te funciona bien.

El valor de la hora no aparece, porque en tu último código no lo estás concatenando a $message. En el código orginal de tu pregunta sí aparece, pero en el que está acá arriba no.

Agregá la concatenación de la hora y su valor y todo debería funcionarte...

0voto

gonzalss comentado

Como bien dices están llegando la fecha y hora pero a la hora en enviarlo por correo llegan todos menos la fecha y la hora

    ```

$sendTo = "[email protected]";
$subject = "formulario";
$nombre = $_POST["nombre"];
$telefono = $_POST["telefono"];
$email = $_POST["email"];
$fecha = $_POST["fecha"];
$hora = $_POST["hora"];
$eltexto = $_POST["eltexto"];
$headers .= "";
$message = "\nNombre: " . $nombre . "\ntelefono: " . $telefono . "\nfecha: ". $fecha ."\nhora: ". $hora . "\nemail: " . $email . "\nArea Texto: " . $eltexto;
mail($sendTo, $subject, $message, $headers);



Al correo llega el nombre, telefono , email y el texto pero no la fecha y la hora 
¿?

0voto

Leonardo-Tadei comentado

Al correo tiene que llegarte completo el contenido de la varialble $message...

Me da la sensación a veces que el código que ejecutás en el servidor no es exactamente el mismo que tenés en tu equipo local y que nos enviás.

Estás seguro de que la versión subida al servidor para probar es la misms que nos ponés por acá?

PD: la línea $headers .= ""; da un warning. Sacala y sacá también la variable $headers de mail(), ya que al estar vacía no tiene ningún efecto.

0voto

gonzalss comentado

Estabas como siempre en lo cierto , he quitado el headers y ahora me llegan todos los campos . Muchas gracias de nuevo

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta