Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/10/2008, 02:32
Keysher
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: validar form y si no se cumplen las validaciones volver al form

Para ese tipo de cosas suelo meter el form en una función:

Código php:
Ver original
  1. function showForm($data) {
  2. ?>
  3.  
  4.     <form name="form" action="formnophp.php" method="POST">
  5.         <input type="text" name="nombre" value=<?=$data['nombre'];?>></input>
  6.         <input type="text" name="apellidos" value=<?=$data['apellidos'];?>></input>
  7.         <input type="submit" name="enviar" value="Enviar">&nbsp;
  8.         <input type="submit" name="quitar" value="Eliminar">
  9.     </form>  
  10. <?
  11. }

Al llamar a la función showForm le puedes pasar como parámetro el array $_POST, por ejemplo (u otro array qye hayas generado tú parseando los datos, pero siempre teniendo en cuenta que debe respetar el nombre de los indices del mismo).

Para el tema del sombreado usa CSS. Define una clase normal (si quieres) y otra para el caso en el que los datos sean incorrectos. Así una manera fácil y rápida de hacerlo sería tener un array paralelo al de los datos donde tengas la clase a usar:


Código php:
Ver original
  1. if ($_POST['nombre'] == "")  //o la condición con la que valides el campo....
  2.     $dataClass['nombre'] == 'error');
  3. else
  4.     $dataClass['nombre'] == 'correcto');

y la función del formulario quedaría aśi:

Código php:
Ver original
  1. function showForm($data, $class) {
  2. ?>
  3.  
  4.     <form name="form" action="formnophp.php" method="POST">
  5.         <input type="text" name="nombre" class="<?=$class['nombre'];?>" value="<?=$data['nombre'];?>"></input>
  6.         <input type="text" name="apellidos" class="<?=$class['apellidos'];?>" value=<?=$data['apellidos'];?>></input>
  7.         <input type="submit" name="enviar" value="Enviar">&nbsp;
  8.         <input type="submit" name="quitar" value="Eliminar">
  9.     </form>  
  10. <?
  11. }

Y le pasas como parámetro los dos arrays, el de los datos y el de las clases.

Es una forma rápida, muy mejorable y optimizable, pero es un comienzo para ir tirando...