Ver Mensaje Individual
  #7 (permalink)  
Antiguo 14/09/2005, 12:37
Avatar de Vaalegk
Vaalegk
 
Fecha de Ingreso: abril-2005
Mensajes: 154
Antigüedad: 19 años
Puntos: 2
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>