DISEÑO Y SERVICIO WEB, RECURSOS EN LINEA, TUTORIALES, PROGRAMAS Y MÁS...

martes, 20 de octubre de 2009

Formulario en PHP

Como crear un formulario en php con validación de campos incluido

"Todos podemos aprender algo nuevo y necesitar ayuda para ello..."

He pasado buen tiempo en la web, entre programadores y en foros para poder lograr algo tan sencillo como un formulario en php, que realice la validación de los campos en php y no en otro lenguaje, que además lo haga en la misma página y que no borre los campos que están correctos dejando una advertencia para los que están en error...
En la web hay varias páginas que lo pueden hacer por nosotros, pero me gustan los desafíos y quería hacerla yo desde cero....
Me llevó varios días pero tengo la satisfacción de haber aprendido mucho y de alcanzar mi meta, por eso hoy lo quiero compartir con ustedes, tal vez le acorte el camino a alguien.
Además debo agradecer el foro CCTW y al habitante Alpolo que fue quien con paciencia me ayudó a resolverlo...

1
<body>
2
3 <p>
4 <!------- Comenzamos abriendo una etiqueta de php... ------>
5 <?php
6
//crearemos un if que la pulsar el boton enviar ejecute un else ok..
7
if(!$_POST['enviar']){
8
//Cerramos la etiquetas php y Empazamos con el codigo html que es lo más complicado..
9
?>
10
<!------- El siguiente código es el del formulario -------->
11 <form action="contactar.php" method="post" name="basico">
12 <table border="0">
13 <tr>
14 <td>Nombre:</td>
15 <td><input name="nombre" type="text" /></td>
16 </tr>
17 <tr>
18 <td>Apellido:</td>
19 <td><input name="apellido" type="text" /></td>
20 </tr>
21 <tr>
22 <td>Email:</td>
23 <td><input name="email" type="text" /></td>
24 </tr>
25 <tr>
26 <td><input name="enviar" type="submit" value="Enviar"/></td>
27 <td><input name="" type="reset" value="Borrar"/></td>
28 </tr>
29 </table>
30 </form>
31 <!------- Fin del código html del formulario ---------->
32 <?php
33
//Abrimos las etiquetas de php y cerramos el if para empezar con el else, que es el que va a validar todo ok..
34
}else{
35
//Primero creamos la variables de cada campo del form y "pines" una función preconstruida de php para que no permita caracteres especiales ok......
36
$nombre = stripcslashes($_POST['nombre']);
37
$apellido = stripcslashes($_POST['apellido']);
38
$email = stripcslashes($_POST['email']);
39
//Creamos una varibles que va a contener la function array(), que es la que se va a encargar de ejecutar los errores ok..
40 //La llamamos $errores = array(); ....
41
42
$errores = array();
43
44
//Una vez tengamos definidas la variables $errores y las variables del campo del form entonces empezamos a crear los if de validación ok..
45
46
if(!$nombre){
47
$errores[] = "No ha definido el Nombre..!\n";
48 }
49
50 if(!
$apellido){
51
$errores[] = "No ha definodo el Apellido..!\n";
52 }
53
54 if(!
$email){
55
$errores[] = "No ha definido el mail..!\n";
56 }
57
58
//una ves tengamos definodo las validaciones al no ingresar ningún datos en el form se ejecutaría, pero falta para que se ejecuten ok..
59
60 //Hacemos la validación del form al no tener la palabra clave el arroba @, entonces ejecuta un error..
61
62
if($email){
63
$checkemail = "/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i\n";
64 if(!
preg_match($checkemail,$email)){
65
$errores[] = "El E-Mail no es v&aacute;lido, deber ser ejemplo@ejemplo.com..!\n";
66 }
67 }
68
69
//podríamos seguir dándole validaciones pero creo que aquí acaba.. Sería validar que campo podría terner de 10 a 10000, pero dejemosla así te parace jaja..
70
71 // teniendo validado los campos del form entonces crearíamos un function preconstruida de php de esta forma, para que cuente lo errores que pueden haber ok..
72
73
if(count($errores) > 0){
74 foreach(
$errores AS $error)
75
//si encuentra algún error lo que hace el echo es imprimirla en pantalla ok..
76
echo $error."<br>\n";
77
form();
78 }else{
79
//En caso de no encontra error ejecuta el else..
80 // y entonce crearíamos la function mail de php para que envie los datos ok..
81
$TuMail = "Tumail@inf.com\n";
82
$asunto = "Pruba de mi web...\n";
83
$mensaje = "
84 Nombre: $nombre \n\n
85 Apellido: $apellido \n\n
86 E-Mail: $email \n\n"
;
87 if(
mail($TuMail,$asunto,$mensaje)){
88 echo
"Tu mensaje fue envia con Ex&iacute;to, muy pronto nos pondremos en contacto con $nombre $apellido \n\n";
89 }else{
90 echo
"Tu mensaje no se a podido Enviar debido a un problema de la Function Mail.. Puedeser que este desahabilitada..!\n";
91 }
92 }
93 }
94
?>
95

96 </body>
97
98 <?php
99
//Se vuelve a declarar el formulario dentro de la funcion form con el fin de que aparezca si hay errores
100 //Declaramos la funtion de esta form ok..
101
function form(){
102
103
//cerramos las etiquetas php y introducimos el codigo html ok..
104 //además colocaremos el siguiente código para cada input dentro de una etiqueta php : value="<?php echo $_POST['nombre del campo']; ?... como se muestra a continuación. Esto hará que no se borren los otros campos por el error de uno solamente, es decir no tener que volver a completar todos los campos por haber un error en uno , sino sólo el equivocado...
105
?>
106
<form action="contactar.php" method="post" name="basico">
107 <table border="0">
108 <tr>
109 <td>Nombre:</td>
110 <td><input name="nombre" type="text" value="<?php echo $_POST['nombre']; ?>" /></td>
111 </tr>
112 <tr>
113 <td>Apellido:</td>
114 <td><input name="apellido" type="text" value="<?php echo $_POST['apellido']; ?>"/></td>
115 </tr>
116 <tr>
117 <td>Email:</td>
118 <td><input name="email" type="text" value="<?php echo $_POST['email']; ?>"/></td>
119 </tr>
120 <tr>
121 <td><input name="enviar" type="submit" value="Enviar"/></td>
122 <td><input name="" type="reset" value="Borrar"/></td>
123 </tr>
124 </table>
125 </form>
126 <?php
127
}
128
?>



Funciona muy bien pueden probarlo en cuanto lo tenga en algún sitio les dejo un link para que vean el ejemplo

Publicaciónes relacionadas:
Agregar un formulario a tu web
Libro de PHP

2 comentarios:

  1. Muy buen ejemplo gracias, seria bueno que tenga el link para ver el ejemplo en ejecución, pero felicidades por el aporte, muy bueno este blog :P

    ResponderEliminar