Comprobacion de formularios

Tengo un formulario en PHP terminado y quiero que no se envie hasta que todos los campos estén rellenados; no se cómo hacerlo agradecería mucho una...

La FAQ Comprobacion de formularios tiene

Pertenece a la categoría:

Pregunta
Tengo un formulario en PHP terminado y quiero que no se envie hasta que todos los campos estén rellenados; no se cómo hacerlo agradecería mucho una ayudita.


Respuesta de Miguel Angel Alvarez
Si deseas que no se envíe hasta que no esté todo relleno tienes dos posibilidades:





- Hacer una comprobación con Javascript antes de enviar el formulario. Sólo se envía si dicha comprobación fue correcta.


- Hacer una comprobación con PHP en la página que recibe el formulario. Sólo se genera el correo electrónico para enviar el formulario si la comprobación fue correcta. Si no lo fue, lo mejor es mostrar un mensaje de error y volver a escribir el formulario en la página con los datos que se habían rellenado hasta el momento.





La diferencia entre una comprobación y otra es que con Javascript la comprobación es dependiente del ordenador del visitante y con PHP la comprobación es independiente del ordenador del usuario. Es más segura la comprobación con PHP.





Referencias:




Sección de Javascript


Manual de formularios y Javascript


Sección de PHP

Complementar la respuestaComplementar la respuesta
Volver al árbol de categoríasVolver al árbol de categorías

Comentarios
Fueron enviados 4 comentarios a la faq
3 comentarios no revisados
1 comentario revisado:
Por: Liliana Rodríguez
29/10/05
Este es el código, por ejemplo, que tenga campos como Nombre ó Email, :

<script language="JavaScript" type="text/JavaScript">
<!--
function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='El '+nm+' no es un email valido. ';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number. ';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'. ';
} } } else if (test.charAt(0) == 'R') errors += 'El campo '+nm+' es requerido. '; }
} if (errors) alert('Tiene los siguientes erorres: '+errors);
document.MM_returnValue = (errors == '');
}
//-->
</script>



y en el tag de formulario se pone:

<form action="" method="post" name="form1" onSubmit="MM_validateForm('nombre','','R','email','','RisEmail');return document.MM_returnValue">

Volver al árbol de categoríasVolver al árbol de categorías
Alojados en el grupo