Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Campos Obligatorios PHP

Estas en el tema de Campos Obligatorios PHP en el foro de PHP en Foros del Web. Tengo un problema con un formulario. No sé nada de PHP, salvo modificar ciertas cosillas, y no consigo hacer que el campo teléfono sea obligatorio. ...
  #1 (permalink)  
Antiguo 01/05/2013, 09:12
 
Fecha de Ingreso: mayo-2013
Mensajes: 36
Antigüedad: 10 años, 11 meses
Puntos: 0
Campos Obligatorios PHP

Tengo un problema con un formulario. No sé nada de PHP, salvo modificar ciertas cosillas, y no consigo hacer que el campo teléfono sea obligatorio.

Os copio el archivo php. Si podéis echarme una mano os estaría eternamente agradecidaaaa

Tiene un aviso de "rellena todos los campos", pero realmente no funciona así, ya que el formulario se envía sin rellenar el teléfono. El email si está como obligatorio.

<?php
if(isset($_POST['action'])) { // Checking for submit form
$my_emails = array("[email protected]", "[email protected]"); // Your email address
if($_POST['action']=='add') {
$email = trim(strip_tags(addslashes($_POST['email'])));
$name = trim(strip_tags(addslashes($_POST['name'])));
$phone = trim(strip_tags(addslashes($_POST['phone'])));
$pattern = '/^[^\W][a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\.[a-zA-Z]{2,4}$/';

if($email != "" && $name != "") {
if(preg_match($pattern, $email)) {
$messages = "Has recibido una solicitud de información de: " . $name . "\r\n" . "Puedes responder directamente a este email o llamarle al siguiente número de teléfono: " . $phone;
$headers = "From: " . $email . "\r\n";
foreach($my_emails as $my_email) mail($my_email, $subject, $messages, $headers);
echo "success| ¡Muchas gracias! En breve nos pondremos en contacto contigo";
} else {
echo "eerror|Por favor, introduce una dirección de email válida";
}
} else {
echo "error| Por favor, rellena todos los campos";
}
}
} else { // Submit form false
header("Location: index.html");
}
?>
  #2 (permalink)  
Antiguo 01/05/2013, 09:36
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
Respuesta: Campos Obligatorios PHP

coloca una validacion asi:

Código PHP:
Ver original
  1. if($phone==""){
  2. echo "Debes introducir el numero telefonico";
  3. }

ademas en el formulario html te recomiendo que le coloques tambien esto: required, es un atributo html5 el cual valida automaticamente tambien si el campo esta vacio, muestra un mensaje y no envia el form hasta que el campo sea completado
__________________
Para el logro del triunfo siempre ha sido indispensable pasar por la senda de los sacrificios. Simon Bolivar
  #3 (permalink)  
Antiguo 01/05/2013, 09:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Campos Obligatorios PHP

Pues resvisa el código, ya estas usando if ($email != '') sería cuestión de que agregues otro if donde compruebes el teléfono.

Saludos.
  #4 (permalink)  
Antiguo 01/05/2013, 09:38
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Campos Obligatorios PHP

En este script se valida (más o menos el formulario), para que un campo sea obligatorio deberías poner algo como:
Código PHP:
Ver original
  1. if(!$campo OR $campo = "") echo "Campo X no puede estar vacío";
Te recomiendo empezar por un tutorial de PHP, saludos.
__________________
Fere libenter homines, id quod volunt, credunt.
  #5 (permalink)  
Antiguo 01/05/2013, 09:50
 
Fecha de Ingreso: mayo-2013
Mensajes: 36
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Campos Obligatorios PHP

Muchísimas gracias por vuestras respuestas. Sé que es muchísimo abusar, pero podríais ponerme las líneas que decís que añada en el código que os he pasado? Para saber exactamente cómo ponerlo... es decir que me copieis mi código con la línea ya añadida.

Lo siento muchísimo por las molestias. Yo trabajo en marketing online y me han pedido que haga esto, pero ya os digo, sé tocar 4 cosas en php.

Mil gracias
  #6 (permalink)  
Antiguo 01/05/2013, 10:01
 
Fecha de Ingreso: mayo-2013
Mensajes: 36
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Campos Obligatorios PHP

Perdonad, lo he conseguido! pero no me sale el mensaje que le he puesto. Pone "undefined".

He añadido esto:

if($phone==""){
echo "Debes introducir el numero telefonico";
exit;
}
  #7 (permalink)  
Antiguo 01/05/2013, 10:02
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Campos Obligatorios PHP

Código PHP:
Ver original
  1. if(empty($phone)){
  2. echo "Debes introducir el numero telefonico";
  3. }
EMPTY
http://es.php.net/manual/es/function.empty.php
  #8 (permalink)  
Antiguo 01/05/2013, 10:08
 
Fecha de Ingreso: mayo-2013
Mensajes: 36
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Campos Obligatorios PHP

Ahora no valida el formulario sin ese campo, pero no sale el mensaje "debes introducir el número" sino que sale "undefined"

tengo que cambiar algo en el main.js??
  #9 (permalink)  
Antiguo 01/05/2013, 10:31
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Campos Obligatorios PHP

como lo implementaste , sube el codigo entero con la modificacion para ver si hiciste algo mal o que puede ser la causa
  #10 (permalink)  
Antiguo 01/05/2013, 10:40
 
Fecha de Ingreso: mayo-2013
Mensajes: 36
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Campos Obligatorios PHP

<?php
if(isset($_POST['action'])) { // Checking for submit form
$my_emails = array("[email protected]", "[email protected]"); // Your email address
if($_POST['action']=='add') {
$email = trim(strip_tags(addslashes($_POST['email'])));
$name = trim(strip_tags(addslashes($_POST['name'])));
$phone = trim(strip_tags(addslashes($_POST['phone'])));
$pattern = '/^[^\W][a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\.[a-zA-Z]{2,4}$/';
if($phone==""){
echo "Por favor, introduce tu número de teléfono";
exit;
}
if($email != "" && $name != "" && $name != "") {
if(preg_match($pattern, $email)) {
$messages = "Has recibido una solicitud de información de: " . $name . "\r\n" . "Puedes responder directamente a este email o llamarle al siguiente número de teléfono: " . $phone;
$headers = "From: " . $email . "\r\n";
foreach($my_emails as $my_email) mail($my_email, $subject, $messages, $headers);
echo "success| ¡Muchas gracias! En breve nos pondremos en contacto contigo";
} else {
echo "eerror|Por favor, introduce una dirección de email válida";
}
} else {
echo "error| Por favor, rellena todos los campos";
}
}
} else { // Submit form false
header("Location: index.html");
}
?>
  #11 (permalink)  
Antiguo 01/05/2013, 10:45
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Campos Obligatorios PHP

para que eso no suceda debes usar empty() como te dije anteriormente

Código PHP:
Ver original
  1. if(empty($phone))
  2. {
  3.     echo "Por favor, introduce tu número de teléfono";
  4. }
  5. if(empty($email) || empty($name) || empty($phone)) {
  #12 (permalink)  
Antiguo 01/05/2013, 10:52
 
Fecha de Ingreso: mayo-2013
Mensajes: 36
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Campos Obligatorios PHP

Lo he probado y si lo pongo así, sí se valida el formulario! :(
  #13 (permalink)  
Antiguo 01/05/2013, 10:56
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Campos Obligatorios PHP

me he dado cuenta de tu error mira :

deberias validar los datos antes de realizar lo siguiente

$email = trim(strip_tags(addslashes($_POST['email'])));
$name = trim(strip_tags(addslashes($_POST['name'])));
$phone = trim(strip_tags(addslashes($_POST['phone'])));

ya que si algun dato viene vacio te va a dar indefinida como te sucede
Código PHP:
Ver original
  1. if(empty($_POST['name']) ||  empty($_POST['email'])  ||  empty($_POST['phone']))
  2. {
  3.  
  4. // aqui puedes ver el error
  5.  
  6. // if(empty($_POST['phone'])){echo'introduce el telefono';}
  7. // if(empty($_POST['name'])){echo'introduce el nombre';}
  8. // if(empty($_POST['email'])){echo'introduce el email';}
  9.  
  10. echo 'rellena todos los datos';
  11. }
  12. else
  13. {
  14. $email = trim(strip_tags(addslashes($_POST['email'])));
  15. $name = trim(strip_tags(addslashes($_POST['name'])));
  16. $phone = trim(strip_tags(addslashes($_POST['phone'])));
  17.  
  18. // continuas con el script
  19.  
  20. }
  #14 (permalink)  
Antiguo 01/05/2013, 11:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Campos Obligatorios PHP

El problema de lo que veo es precisamente tu formato de respuesta, como estas usando un JS aparte, me supongo es por AJAX o algo similar, y es cuestión de que repitas el mensaje de respuesta, si tu mensaje inicial es:
Código PHP:
Ver original
  1. echo "error| Por favor, rellena todos los campos";

Puedes usar lo mismo para el teléfono:
Código PHP:
Ver original
  1. if($phone==""){
  2. echo "error| Por favor, introduce tu número de teléfono";
  3. }
  #15 (permalink)  
Antiguo 01/05/2013, 11:21
 
Fecha de Ingreso: mayo-2013
Mensajes: 36
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Campos Obligatorios PHP

GatorV, era eso!!!! mil gracias!
webankenovi, mil gracias por tu paciencia igualmente!!

¿Os puedo hacer otra consulta? Necesito medir las veces que se cumplimenta el formulario. Yo normalmente lo hago con Analytics, poniendo el código en la página de confirmación. O bien creando un evento onsubmit en el html, dentro de form.

En este formulario, no sé por qué, no me funciona el evento en onsubmit. Lo hago exactamente igual que en otras ocasiones y nada. Así que la única opción que me queda es hacer una página de confirmación. ¿Es muy difícil?
  #16 (permalink)  
Antiguo 01/05/2013, 11:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Campos Obligatorios PHP

El problema es que lo haces vía AJAX, por lo que más bien vas a tener que hacer eso en el Javascript que tengas, contar en el response justamente pero ya es tema para el foro de Javascript.
  #17 (permalink)  
Antiguo 01/05/2013, 11:38
 
Fecha de Ingreso: mayo-2013
Mensajes: 36
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Campos Obligatorios PHP

Perdona mi ignorancia.. ¿Qué es lo que tendría que hacer en el Javascript? La página de confirmación o el evento?

Muchas gracias!
  #18 (permalink)  
Antiguo 01/05/2013, 14:41
 
Fecha de Ingreso: mayo-2013
Mensajes: 36
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Campos Obligatorios PHP

¿Habría alguna forma sencilla de que al salir el mensaje de ok, redirija a una página de confirmación o algo similar?

Yo lo único que quiero es medir los envíos con Analytics, y no puedo hacerlo mediante evento onSubmit...
  #19 (permalink)  
Antiguo 01/05/2013, 14:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Campos Obligatorios PHP

Claro, lo puedes hacer en Javascript, usando window.location.

Saludos.
  #20 (permalink)  
Antiguo 01/05/2013, 14:49
 
Fecha de Ingreso: mayo-2013
Mensajes: 36
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Campos Obligatorios PHP

es decir en el main.js, no?
  #21 (permalink)  
Antiguo 01/05/2013, 15:09
 
Fecha de Ingreso: mayo-2013
Mensajes: 36
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Campos Obligatorios PHP

tendría algo que ver con lo que pone al final de mi código php??

} else { // Submit form false
header("Location: index.html");
}
?>
  #22 (permalink)  
Antiguo 01/05/2013, 15:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Campos Obligatorios PHP

Pues no se como tengas tu código, eso lo debes de ver en el foro adecuado.

Saludos.
  #23 (permalink)  
Antiguo 01/05/2013, 15:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Campos Obligatorios PHP

No, si estas haciendo el envío por AJAX, el header() no te sirve para nada.
  #24 (permalink)  
Antiguo 01/05/2013, 15:14
 
Fecha de Ingreso: mayo-2013
Mensajes: 36
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Campos Obligatorios PHP

Ok, lo pregunto en el foro de Java.
Muchas gracias por todo GatorV
  #25 (permalink)  
Antiguo 01/05/2013, 15:38
 
Fecha de Ingreso: mayo-2013
Mensajes: 36
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Campos Obligatorios PHP

Una duda. El evento onsubmit sería posible ponerlo en el archivo php?? quizá ahí sí me funcione y no tendría que hacer la página de confirmación...
  #26 (permalink)  
Antiguo 01/05/2013, 16:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Campos Obligatorios PHP

No, PHP es una cosa y Javascript otra, estos no co-existen de esa manera.

Saludos.

Etiquetas: campos, formulario, html
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 11:27.