PDA

Ver la Versión Completa : Verificacion de Formularios en PHP



Giury
28/08/2006, 09:02
Buenas, aver si alguien me puede ayudar, yo tengo hecho un Furmulario de Envio de Datos en PHP, el furmulario anda bien, seria uno elige las opciones, coloca nombre, telefonos, etc...hasta lo envia a mi correo y todo. Pero si uno no completa nada en el formulario...me lo envia igual, yo necesitaria saber el script correspondiente para que haga la verificacion (si completo los datos, si acepto un termino y condicion mediante un checkbox, etc). Si alquien lo conoce o sabe otra forma de enviar o hacer un formulario mejor...

Saludos

Guru
29/08/2006, 16:24
Hola Giury, bienvenido al foro!

Lo mas conveniente para hacer lo que tu deseas, es utilizar Javascript. Veamos un ejemplo de como hacerlo:

Primero creamos un formulario que podría ser este:


<FORM ACTION= "/cgi-bin/mails" Method=GET
onSubmit="return Verif(this.form)">
<B>Nombre: </B>
<INPUT TYPE="text" NAME="nom" SIZE=26 MAXLENGTH=40 >
<BR><BR>
<B>E-mail: </B>
<INPUT TYPE="text" NAME="mail" SIZE=26 MAXLENGTH=40 >
<BR><BR><BR>
<INPUT TYPE="submit" VALUE="Test">
<INPUT TYPE="reset" VALUE="Reset">
</FORM>


Observese que hemos insertado una instrucción JavaScript en la etiqueta <FORM>:


onSubmit=&#34;return Verif&#40;this.form&#41;&#34;.

Esta función me permitirá verificar cada uno de los datos introducidos. Creemos esta función de control.


El código para la función Verif debe ir entre las etiquetas <HEAD> y </HEAD>:



&#60;script&#62;
function Verif&#40;&#41; {
if &#40;document.forms&#91;0&#93;.elements&#91;0&#93;.value == &#34;&#34;&#41;{
alert&#40;&#34;nName field is mandatory.nn&#34; +
&#34;Ingrese su nombre.&#34;&#41;
document.forms&#91;0&#93;.elements&#91;0&#93;.focus&#40;&#41;;
return false;
}

else if &#40;document.forms&#91;0&#93;.elements&#91;1&#93;.value == &#34;&#34;&#41;{
alert&#40;&#34;nE-mail field is mandatory.nn&#34; +
&#34;Ingrese su e-mail.&#34;&#41;
document.forms&#91;0&#93;.elements&#91;1&#93;.focus&#40;&#41;;
return false;
}

else if &#40;document.forms&#91;0&#93;.elements&#91;1&#93;.value.indexOf
&#40;&#39;@&#39;,0&#41;
== -1 || document.forms&#91;0&#93;.elements&#91;1&#93;.value.indexOf
&#40;&#39;.&#39;,0&#41;
== -1&#41;{
alert&#40;&#34;nUn e-mail debe tener &#34; +
&#34;caracteres &#34;@&#34; y &#34;.&#34;.nn&#34; +
&#34;Ingrese su dirección correcta.&#34;&#41;
document.forms&#91;0&#93;.elements&#91;1&#93;.select&#40;&#41;;
document.forms&#91;0&#93;.elements&#91;1&#93;.focus&#40;&#41;;
return false;
}
else
return true;
}

&#60;/SCRIPT&#62;


La función Verif examina el contenido de nuestros dos campos. Primero verifica que el campo Nombre haya recibido un valor. Si está vacío, es decir si la expresión condicional es verdadera, se ejecutan las instrucciones entre el primer par de paréntesis: aparece un cuadro de diálogo del tipo Alert.

La instrucción en la línea 7 coloca el cursor en el campo vacío (el campo recibe la concentración) de tal manera que el usuario puede escribir inmediatamente un valor en el campo apropiado. Esto puede ser útil para un formulario con muchos campos dado que el usuario no tendrá que buscar los campos omitidos para rellenarlos.

En este punto, la función genera "false" (línea 8) y no se envía ningún dato al servidor.

Si el campo Nombre posee un valor, la función Verif procede al segundo nivel y verifica la dirección de e-mail.

La única diferencia comparado con el primer bloque condicional es que la instrucción se remite al segundo campo por medio de elements[1]; el valor del índice para el primer campo era 0.

La verificación de que un campo posee un valor está muy bien, pero cerciorarse de que la entrada es válida es mucho mejor. Una dirección de e-mail siempre contiene el carácter arroba &#39;@&#39; y un punto, y esto es exactamente lo que controlarán las líneas 18 a 27.

Las instrucciones indexOf (&#39;@&#39;,0) y indexOf (&#39;.&#39;,0) generan -1 si el usuario ha olvidado el carácter "@" o "." en la dirección. Si es el caso, aparece un mensaje de advertencia y el campo en cuestión recibe la concentración.

En la línea 24, la función select selecciona automáticamente datos en el campo de dirección de e-mail cuando el usuario hace clic en Aceptar en el cuadro de diálogo del mensaje.

Una vez que el usuario ha rellenado correctamente el formulario, la cláusula else en la línea 28 se ejecuta y la función Verif genera true. Este valor es inmediatamente recibido por la instrucción onSubmit del formulario; esto permite que se transmitan los datos al servidor.

Espero sea de ayuda&#33;

Giury
29/08/2006, 21:38
Perdon porque por ahi no interpreto bien, este codigo se ingresa en la misma pagina o manda a llamar otra con el codigo de verificacion, y a que direccion va dirigido, o va directamente al servers...
Saludos

Giury
30/08/2006, 12:28
Perdon, por ahi no comprendi bien, pero este codigo va en la misma pagina o manda a llamar otra, y a que direccion de mail va dirigido este formulario.

Guru
31/08/2006, 10:51
Este código es el formulario en si mismo, que trabaja por cgi

No llama a otro html&#33;

mcgavitt
31/08/2009, 18:24
MIREN LA VERDAD ES QUE SOY NUEVO EN ESTO DE PHP.....ESTOY EMPEZANDO A REALIZAR CIERTAS PRACTICAS Y LA VERDAD ES QUE QUISIERA EMPEZAR CON UN SISTEMA DE CONTROL ESCOLAR........PERO ME E TOPADO CON UNAS COSAS QUE POR DONDE LE BUSQUE NO ENCUENTRO EL PROBLEMA.....TENGO UN FORMULARIO QUE SE LLAMA REG_ALUMNOS.HTML DONDE ES BASICAMENTE DONDE SE REGISTRN LOS DATOS DEL ALUMNO....PERO AQUI LA COSA...YO TENGO UN ARCHIVO QUE SE LLAMA REG_ALUMNOS.PHP.....Y EL PROBLEMA ES QUE NO INSERTA NADA EN LA TABLA DONDE TENGO ESOS VALORES...ESPERO Y ME PUEDAN AYUDAR PORFAVOR:

ESTE ES EL CODIGO QUE USE PARA MI FORMULARIO:




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="shortcut icon" href="img/favicon.ico" >

<link rel="stylesheet" title="Default" href="css/form.css" type="text/css" />
<title>CONTROL ESCOLAR</title>
<style type="text/css">
<!--
.Estilo2 {color: #DBDBDB}
-->
</style>
</head>

<body>
<img src="img/logo.png" width="800" height="177" />


<div id="stylized" class="myform">
<form name="form" method="post" action="reg_alumnos.php">
<h1 align="center">REGISTRAR ALUMNO</h1>
<p align="center">Agregue los datos necesarios para dar de alta al alumno.</p>

<label>No. Matricula:
<span class="small">Agregue el Numero de Matricula del alumno</span></label>
<input type="text" name="numero_matricula" id="numero_matricula" />

<label>Confirmar Matricula:</label>
<input type="text" name="numero_matricula2" id="numero_matricula2" />

<label>Nombre:
<span class="small">Agregue el Nombre del alumno</span></label>
<input type="text" name="nombre" id="nombre" />

<label>Apellido Paterno:</label>
<input type="text" name="apellido_paterno" id="apellido_paterno" />

<label>Apellido Materno:</label>
<input type="text" name="apellido_materno" id="apellido_materno" />

<label>Genero:
<span class="small">Agregar el genero del alummno</span></label>
<select name="genero" id="genero">
<option value="femenino">Femenino</option>
<option value="masculino">Masculino</option>
</select>

<label>Carrera:
<span class="small">Carrera que el alumno cursara</span></label>
<select name="carrera" id="carrera">
<option value="derecho">Derecho</option>
<option value="adminstracion_de_empresas">Administración de Empresas</option>
<option value="contaduria">Contaduría</option>
<option value="ciencias_de_la_comunicacion">Ciencias de la Comunicación</option>
<option value="puericultura">Puericultura</option>
<option value="criminologia">Criminoloía</option>
<option value="medicina_veterinaria_zootecnia">Medicina Veterinaria y Zootecnia</option>
<option value="gestion_trabajo_social">Gestión y Trabajo Social</option>
<option value="mercadotecnia">Mercadotecnia</option>
<option value="informatica_administrativa">Informática Administrativa</option>
<option value="administracion_desarrollo">Administración y Desarrollo de Negocios</option>
<option value="contador_publico_finanzas">Contador Público y Finanzas</option>
</select>

<label>Lugar de Recidencia:</label>
<input type="text" name="lugar_residencia" id="lugar_residencia" />

<label>Domicilio:
<span class="small">Agregue el Domicilio donde vive el alumno</span></label>
<input type="text" name="domicilio" id="domicilio" />

<input type="submit" value="Registrar Alumno"/>


<div class="spacer"></div>
</form>
</div>

<p class="Estilo2"><a href="panel.php" class="button">
<span class="user"><strong>Regresar a Panel Principal</strong></span>
</body>
</html>

Y ESTE ES EL CODIGO PHP QUE REALISE PARA LA INSERCION DE LOS DATOS DE LA TABLA:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>

<body>

<?php
//Conexion con la base
mysql_connect("localhost","root","unimatehuala");

//selección de la base de datos con la que vamos a trabajar
mysql_select_db("control_escolar");




if (isset($_POST["numero_matricula"])) {
$numero_matricula = $_POST["numero_matricula"];
$numero_matricula2 = $_POST["numero_matricula2"];
$nombre = $_POST["nombre"];
$apellido_paterno = $_POST["apellido_paterno"];
$apellido_materno = $_POST["apellido_materno"];
$genero = $_POST["genero"];
$carrera = $_POST["carrera"];
$lugar_residencia = $_POST["lugar_residencia"];
$domicilio = $_POST["domicilio"];

if($numero_matricula==NULL|$numero_matricula2==NUL L|$nombre==NULL|$apellido_paterno==NULL|$apellido_ materno==NULL|$genero==NULL|$carrera==NULL|$carrer a==NULL|$lugar_residencia==NULL|$domicilio==NULL) {
echo "EXISTE UN CAMPO VACIO.";

}else{

mysql_query("INSERT INTO alumnos (numero_matricula, numero_matricula2, nombre, apellido_paterno, apellido_materno, genero, carrera, lugar_residencia, domicilio)
values ('$numero_matricula','$nombre','$apellido_paterno' ,'$apellido_materno','$genero','$carrera','$lugar_ residencia','$domicilio')") or die(mysql_error());{
echo 'El alumno '.$nombre.' ha sido registrado. ';
}} }
?>

</body>
</html>



espero y me ayuden a resolver este problemilla...esperare ansiosamente sus comentarios...de antemano es todo..chao