Ver Mensaje Individual
  #10 (permalink)  
Antiguo 10/03/2014, 03:39
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: devolver el control al cliente despues de validar un formulario

Código PHP:
Ver original
  1. <?php
  2. $valorCampo="";
  3. if(isset($_POST['campo']){
  4.   $valorCampo=$_POST['campo'];
  5.   if (valido($_POST['campo']){
  6.      $valorCampo="";
  7.      echo "Totdo correcto!!!!<br />Inserta otro valor";
  8.   }else{
  9.       echo "Hay un error en ".$_POST['campo']." es demasiado corto<br />Intenatalo de nuevo";
  10.   }
  11. }
  12.  
  13. function valido($valor=""){
  14.    if(count($valor)>=10){
  15.        //Aqui ejecutariamos lo que haya que hacer con el valor:
  16.        //por ejemplo guardarlo en una bbdd.
  17.        return true;
  18.    }else{
  19.        return false;
  20.    }
  21. }
  22.  
  23. ?>
  24. <html>
  25. <head>
  26. <title>Formulario validado en servidor</title>
  27. <meta http-equiv="Content-Type" content="text/html; charset=utf8">
  28. </head>
  29. <body>
  30. <form action="formulario.php" method="post" name="formulario" id="formulario">
  31. <input name="campo" type="text" id="campo" value="<?php echo $valorCampo;?>"><br />
  32. <input name="botEnviar" type="submit" value="Enviar">
  33. </form>
  34. </body>
  35. </html>

Quizás un ejemplo te sirva, es muy simple pero el esquema te debería servir.

Se trata de un formulario en un fichero llamado "formulario.php" el formulario contiene un campo llamado "campo".

En el lado servidor:

- creamos una variable para guardar el dato recibido por post.
- comprobamos si se esta recibiendo algo
-- si lo recibimos validamos
--- si validamos a true
----- limpiamos el contenido de la variable
----- y felicitamos al usuario (se mostrara el form vacío)
--- si validamos a falso
----- NO limpiamos la variable
----- y advertimos al usuario (se mostrara el form con el valor erróneo)
-- si no recibimos no hacemos nada (se mostrara el form vacío)

La función de validación en este caso solo mira si el contenido de "campo" tiene una longitud igual o mayor a 10.

Para generalizar este ejemplo a un caso mas real con mas campos puedes passar $_POST entero a la función "valido" y recorrerlo validar cada campo segun convenga, puedes crear un array para guardar que campos han validado a true y cuales no, si todos validan a true la función retorna true y será igual que el ejemplo, si no, retorna false y deberás usar el array para por ejemplo cambiar el estilo de los imputs erroneos...

Un ejemplo con dos campos

Código PHP:
Ver original
  1. <?php
  2. $valorCampo1="";
  3. $valorCampo2="";
  4. $vValorCampo1=false;
  5. $vValorCampo2=false;
  6. $cValorCampo1="negro";
  7. $cValorCampo2="negro";
  8. if(isset($_POST['campo1']){
  9.   $valorCampo1=$_POST['campo1'];
  10.   $valorCampo2=$_POST['campo2'];
  11.   if (valido($_POST){
  12.      $valorCampo1="";
  13.      $valorCampo2="";
  14.      echo "Totdo correcto!!!!<br />Inserta otro valor";
  15.   }else{
  16.       echo "Hay errores<br />Intenatalo de nuevo";
  17.   }
  18. }
  19.  
  20. function valido($arrayPost){
  21.    //valido el campo1
  22.    if(count($arrayPost['campo1'])>=10){
  23.        $vValorCampo1=true;
  24.    }else{
  25.        $cValorCampo1="rojo";
  26.    }
  27.    //valido el campo2
  28.    if((int)$arrayPost['campo2'] % 2 ==0){
  29.        $vValorCampo2=true;
  30.    }else{
  31.        $cValorCampo1="rojo";
  32.    }
  33.    if($vValorCampo1 && $vValorCampo2){
  34.        //Aqui ejecutariamos lo que haya que hacer con el valor:
  35.        //por ejemplo guardarlo en una bbdd.
  36.        return true;
  37.    }else{
  38.        return false;  
  39.    }
  40. }
  41.  
  42. ?>
  43. <html>
  44. <head>
  45. <title>Formulario validado en servidor</title>
  46. <meta http-equiv="Content-Type" content="text/html; charset=utf8">
  47. <style type="text/css">
  48. <!--
  49. .rojo {
  50.     color: #FF0000;
  51. }
  52. .negro {
  53.     color: #000000;
  54. }
  55.  
  56. -->
  57. </style>
  58. </head>
  59. <body>
  60. <form action="formulario.php" method="post" name="formulario" id="formulario">
  61. <input name="campo" type="text" id="campo1" value="<?php echo $valorCampo1;?>" class="<?php echo $cValorCampo1; ?>"><br />
  62. <input name="campo" type="text" id="campo2" value="<?php echo $valorCampo2;?>" class="<?php echo $cValorCampo2; ?>"><br />
  63. <input name="botEnviar" type="submit" value="Enviar">
  64. </form>
  65. </body>
  66. </html>


LOS DOS EJEMPLOS ESTAN HECHOS AL VUELO, NO LOS HE EJECUTADO, PUEDEN CONTER ERRORES DE SINTAXIS Y SEGURO QUE SE PUEDE HACER LO MISMO DE OTRA FORMA MEJOR
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 10/03/2014 a las 04:13