bueno aqui hay algo...
en esta direccion lo puede ver correr
http://xsite.identity-dev.com/testlab/formtest.php
el script es este(algo feo pero funciona)
Código PHP:
<?php
/*
Ejemplo bastante sencillo y con muchas posibilidades de modificacion
*/
/*******************************Utilerias::BEGIN*/
function xRequest($key, $param,$ret='')
{
return isset($param[$key])?$param[$key]:$ret;
}
/********************************End***/
$campo1=xRequest('campo1',$_REQUEST);
$campo2=xRequest('campo2',$_REQUEST);
$campo3=xRequest('campo3',$_REQUEST);
$mode=xRequest('mode',$_POST);
$errores=xRequest('errores',$_REQUEST,array());
$msg="Llene la forma";
$error=false;
if($mode=='submit'){
$errores=array();
if(!$campo1){
$errores['campo1']='Campo1 es requerido';
$error=true;
}
if(!$campo2){
$errores['campo2']='Campo2 tambien es requerido';
$error=true;
}else{
if(!is_numeric($campo2)){
$errores['campo2']='Campo2 debe ser numerico';
$error=true;
}
}
if(!$campo3){
$errores['campo3']='Campo3 es requerido, es mas todos son requeridos :-)';
$error=true;
}
if(!$error){
$msg='<font color="#0000FF"><b>Todo salio COOL</b></font>';
}else{
/*
Aqui hay dos formas de proseguir, una es redireccionar a si mismo con los errores o simplemente dejar sequir el script.
Dejar seguir el script causaria que si refrescan la pagina despues de un post, los datos del post serian mandados nuevamente.
*/
//armar cadena de error
$url='';
foreach($_POST as $campo=>$valor){
$url.=$campo.'='.$valor.'&';
}
foreach($errores as $campo=>$err){
$url.='errores['.$campo.']='.$err.'&';
}
header('Location:'.$_SERVER['PHP_SELF'].'?'.$url);
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<style>
.error{
color:#FF0000;
font-weight:bold;}
</style>
<script src="jslib.js"></script>
<script>
function sinJS(){
frm=jsGetObject('forma');
frm.onsubmit=function(){return true;}
frm.submit();
}
</script>
<body>
Forma:<br>
STATUS[<?=$msg?>]
<hr>
<form method="post" id="forma" onSubmit="return jsValidateForm(this)" >
<input type="hidden" name="mode" value="submit">
<fieldset style="width:320px;">
<label>Campo1 : requerido</label><br>
<input type="text" id="campo1" name="campo1" value="<?=$campo1?>" validation="empty" validationMsg="LLena el campo1" >
<div class="error"><?=xRequest('campo1',$errores)?></div>
<label>Campo2 : requerido+numerico</label><br>
<input type="text" id="campo2" name="campo2" value="<?=$campo2?>" validation="numeric" validationHint="required" validationMsg="Este campo debe ser numerico" ><br>
<div class="error"><?=xRequest('campo2',$errores)?></div>
<label>Campo3 : requerido</label><br>
<textarea type="text" id="campo3" name="campo3" validation="empty" validationMsg="LLena este tambien"><?=$campo3?></textarea><br>
<div class="error"><?=xRequest('campo3',$errores)?></div>
<input type="submit" value="Testear Con JS...">
<button type="button" onClick="sinJS()">Testear sin JS</button>
<button type="button" onClick="document.location.href='formtest.php'">Resetear</button>
</fieldset>
</form>
</body>
</html>