Foros del Web » Programando para Internet » PHP »

Problema con formulario en PHP (Campos obigatorios)

Estas en el tema de Problema con formulario en PHP (Campos obigatorios) en el foro de PHP en Foros del Web. Muy buenas chicos, Soy novato en esto de programación web. He estado investigando y no consigo aclararme. Al parecer hay varias formas de hacerlo y ...
  #1 (permalink)  
Antiguo 01/03/2012, 07:20
 
Fecha de Ingreso: marzo-2012
Mensajes: 2
Antigüedad: 12 años, 1 mes
Puntos: 0
Problema con formulario en PHP (Campos obigatorios)

Muy buenas chicos,
Soy novato en esto de programación web.
He estado investigando y no consigo aclararme. Al parecer hay varias formas de hacerlo y no doy con la adecuada.
El caso es que me ha caído un pequeño marrón.
Tenemos un pequeño club de MTB y para colgar las fotos de nuestras salidas; hace unos años se creó una página web: www.urkobtt.com
Hace unos meses por circunstancias de la vida me toco ser webmaster y ir actualizando la web. No tengo ni papa de informática (más o menos) y soy autodidacta.
Para pequeñas cosillas como, colgar fotos, incluir botones, abrir nuevas secciones,... me arreglo.
El caso es que a mediados de año celebramos una marcha popular y nos gustaria crear la posibilidad de registro online.
Que los participantes tengan la posibilidad de apuntarse a la Martxa a través de nuestra web.
Lo quiero hacer mediante un formulario PHP al igual que tengo la página de "Contacta con Nosotros". El participante rellena sus datos y me llega un correo electrónico a casa.

Me ocurren varias cosas:

1.- No me llegan todos los imput a mi correo.
Esto es, sí el participante tiene que rellenar en diferentes casillas, Nombre, Apellidos, DNI, Teléfono, Correo,...
De todos estos datos picados solo me llegan algunos no todos.
¿Porque me sucede esto?

2.- No sé como hacer para que un campo sea obligatorio de rellenar. Por ejemplo si el campo de DNI es obligatorio y no lo rellenas; cuando le des a enviar que aparezca "Falta rellenar el DNI"

3.- Mascaras: No sé como poner máscaras, por ejemplo para la fecha.

El código que uso:(Quizás esté desfasado pero, esto es hasta donde llegan mis conocimientos)


<tr>
<?php
if (!isset($_POST['email'])) {
?>
<form name="inscripcion" action="<?=$_SERVER['PHP_SELF']?>" method="post">
<tr>
<p align="left" class="Estilo10">Inscripción Martxa 2012:</p>
</tr>
<tr>
<p align="left" class="Estilo20">Oharra: Nahiz eta aurre izen ematea egin, egunean bertan, izen emate mahaian parte hartzea konfirmatu egin beharko da.</p>
<p align="left" class="Estilo20">Nota: Todos los preinscritos deberán confirmar su asistencia el mismo día de la marcha en la mesa de inscripciones.</p>

</tr>
<tr>
<p align="left" class="Estilo21">* Beharrezko datuak / Campos obligatorios
</p></tr>

<tr>
<td class="Estilo12">
<label>
<p align="left"> Izena / Nombre:</p>
<td><p align="left"> <input name="nombre" type="text" size="25" maxlength="22" /></p></td>
</label>
</td></tr>

<tr>
<td class="Estilo12">
<label>
<p align="left"> Abizenak / Apellidos:</p></td>
<td><p align="left"> <input name="apellidos" type="text" size="50" maxlength="40" /></p></td>
</label>
</tr>

<tr>
<td class="Estilo12">
<label>
<p align="left"> NAN / DNI:</p>
<td><p align="left"> <input name="DNI" type="text" size="10" maxlength="16" /></p></td>
</label>
</td></tr>

<tr>
<td class="Estilo12">
<label>
<p align="left"> Jaiotze data / Fecha de Nacimiento:</p>
<td><p align="left"> <input name="date" type="text" maxlength="40" /></p></td>
</label>
</td></tr>

<tr>
<td class="Estilo12">
<label>
<p align="left"> Email:</p>
<td><p align="left"><input name="email" type="text" maxlength="120" /></p></td>
</label>
</td></tr>

<tr>
<td class="Estilo12">
<label>
<p align="left"> Federado:</p>
<td><p align="left"> <input type="checkbox" name="federado" value="ON" /></p></td>
</label>
</td></tr>

<tr>
<td class="Estilo12">
<label>
<p align="left"> Telefono:</p>
<td><p align="left"><input name="telefono" type="text" maxlength="40" /></p></td>
</label>
</td></tr>
</table>

<table width="99" border="1">
<tr><th scope="row">
<label>
<p align="left" class="Estilo21"> <input type="checkbox" name="condiciones" value="ON" />Declaro haber leido el reglamento en su totalidad y acepto todos los puntos del mismo. </p>
</label>
<p align="center">
<textarea rows="15" cols="70">
REGLAMENTO MARCHA UrkoBTT 2012:
1.- El 15 de Julio del 2012 se celebra la XV edición de la Marcha de Mountain Bike de Ermua. Es una marcha no competitiva donde la edad mínima recomendada de participación es de 16 años.
</textarea></p>

<p align="left" class="Estilo21"> Araudia bere osotasunean irakurri izana eta puntu guztiekin ados nagoela onartzen dut. </p>
<p align="center">
<textarea rows="15" cols="70">
Araudia osotasunean irakurri izana eta guztiekin ados nagoela onartzen dut.
Ermuko UrkoBTT MTB MARTXAKO ARAUTEGIA:
1.- 2012. eko Uztailaren 15ean Ermuko UrkoBTT MTB taldearen XV. Mountain Bike Martxar ospatuko da. Martxa hau ez da lehiakorra eta parte hartzeko gutxieneko adin gomendagarria 16 urtekoa da.
</textarea></p>
</th></p></tr>
</table>


<table>
<tr>
<td class="Estilo12">
<td><input type="reset" value="Borrar/Ezeztatu" />
<input type="submit" value="Enviar/Bidali" /></td>
</tr>
</table>
<table width="98%" border="1">
<th scope="row"> <p align="left" class="Estilo20">Oharra: Bertan egunean ere izena eman ahal izango da martxako toki berean.</p>
<p align="left" class="Estilo20">Nota: El mismo día también se podrá inscribir en el mismo lugar de la marcha.</p>
</th>
</table>

</form>

<?php
}else{
$mensaje="Mensaje del formulario de Inscripción Martxa UrkoBTT 2012";
$mensaje.= "\nNombre: ". $_POST['nombre'];
$mensaje.= "\nApellidos: ". $_POST['apellidos'];
$mensaje= "\nDNI: ". $_POST['DNI'];
$mensaje.= "\nFecha Nacimiento: ". $_POST['date'];
$mensaje.= "\nFederado: ". $_POST['federado'];
$mensaje="Declara haber leido el reglamento en su totalidad y acepto todos los puntos del mismo.";
$mensaje.= "\nEmail: ".$_POST['email'];
$mensaje.= "\nTelefono: ". $_POST['telefono'];
$destino= "[email protected]";
$remitente = $_POST['email'];
$asunto = "Inscripción: ".$_POST['nombre'];
mail($destino,$asunto,$mensaje,"FROM: $remitente");
?>
<tr>
<p align="center" class="Estilo10">Mensaje enviado.</p>
</tr>
<?php
}
?>
</label>
  #2 (permalink)  
Antiguo 01/03/2012, 07:38
 
Fecha de Ingreso: febrero-2012
Ubicación: En mi propio mundo
Mensajes: 73
Antigüedad: 12 años, 2 meses
Puntos: 23
Respuesta: Problema con formulario en PHP (Campos obigatorios)

Lo tienes bien encaminado.
En mi opinión deberías de crear una variable de control, que indicara si ha habido error

Código PHP:
//$error ->indica si se ha producido error, por defecto lo ponemos a true
// de esta manera la primera vez que entre dibujará el form.
$error true

//Comprobamos cada uno de los campos
// si todos los campos requeridos estan llenos
// $error = false

if ( $error )
{
   
//dibujamos el form
}
else
{
  
//Enviamos email

  #3 (permalink)  
Antiguo 01/03/2012, 14:19
 
Fecha de Ingreso: marzo-2012
Mensajes: 2
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Problema con formulario en PHP (Campos obigatorios)

En primer lugar muchisimas gracias por contestar.
Me parece que la respuesta es demasiado esquematica para mí pero no te preocupes lo intentaré.
Por otro lado me gustaría empezar por el punto 1.
No sé lo que hago mal pero no me envia todos los datos al correo. Sólo me llengan el correo y el telefono.
¿Que está ocurriendo?

Un saludo y muchas gracias.
  #4 (permalink)  
Antiguo 01/03/2012, 15:00
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Problema con formulario en PHP (Campos obigatorios)

Pues en el punto 1, o el usuario no llena todos los datos, o bien cuando los procesas no lo haces correctamente.

Puedes hacer dos validaciones, la primera en javascript, más cómoda para el usuario, que verifique que el campo no esté vacío. La segunda en php, donde si un campo está vacío, regreses a la página anterior, lo cual puede hacerse escribiendo un script de js para que el navegador regrese una página (history.back()) o bien creando el mismo formulario con los datos recibidos.

Por otra parte te recomiendo mucho no usar tablas para el formulario, con etiquetas y css quedará no sólo más estético si no mucho más fácil de leer tu código.
  #5 (permalink)  
Antiguo 02/03/2012, 09:25
 
Fecha de Ingreso: febrero-2012
Ubicación: En mi propio mundo
Mensajes: 73
Antigüedad: 12 años, 2 meses
Puntos: 23
Respuesta: Problema con formulario en PHP (Campos obigatorios)



Garfi el código es completamente hecho por ti o has copiado y pegado como hace mucha gente sin entender lo que pone? Si has copiado explica que no entiendas mi versión corta.

De otra manera sabrías las respuestas a estas preguntas:
¿Como se dibuja un formulario en html?
¿Cómo se envia un email?



Si las sabes puede que no entendieras mi lógica.
En cuyo casi te explico el razonamiento que deberias de seguir:

Nada mas cargar la página debemos comprobar si existen $_POST['nombre'], $_POST['apellidos'],$_POST['DNI'], $_POST['date']... y si están vacías o tienen datos.
Sino existen o está algún campo vacío, creamos el fomulario con sus imputs y su checkbox. Indicando, en el caso de que se haya enviado algún campo vacío el campo que ha dejado vacio.

Si existen y están todas llenas:
Se envía el email.

Etiquetas: campos, formulario, registro
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 20:22.