dimarts, 9 de desembre del 2014

Porcesar formularis en un sol document


Fins ara hem enviat el resultat del formulari en un altre document. En aquest exemple, ho farem que sempre s’envia a la mateixa pàgina

La forma habitual de treballar amb formularis en PHP és utilitzar un únic programa que processi el formulari o el mostri segons hagi estat o no enviat, respectivament

Quin són els avantatges:

  • Disminueix el nombre de fitxers
  • Permet validar les dades del formulari en el propi formulari
Quin és el procediment:

si s'ha enviat el formulari:

//cas b
    processar formulari
si no:

//cas a
     Mostra formulari
fsi



La 1 ª vegada que es carrega la pàgina es mostra el formulari (a)
La 2 ª vegada es processa el formulari (b)
Per saber si s'ha enviat el formulari s'acudeix a la variable corresponent al botó d'enviament. Si aquest botó apareix de la manera següent en el formulari HTML:

<INPUT TYPE="SUBMIT" NAME="enviar" VALUE="procesar">

llavors la condició anterior es transforma en:

if (isset($_REQUEST['enviar']))

o bé


if ($_REQUEST['enviar'] == "processar")

Exemple:
Supossem que tenim el següent formulari:

 
 Supossem el següent codi:

<html>
<head>
 
  <title>Exemple 1</title>

</head>

<body>

<?PHP
   if (isset($_REQUEST['Enviar']))
   {
   echo "Su edad es : <br>";
   echo $_REQUEST['edad']."<br>";
   echo "<A HREF='formulari1.php'>Volver a responder</A>";
   }
   else {
   
   ?>
   
   

<form action="formulari1.php" method="post">
  <h1>Formulari 1</h1>
  <fieldset>
 <legend>Formulario</legend>

 <p>Indique su edad:</p>
 <p><strong>Edad:</strong>
 <select name="edad">
   <option selected="selected"></option>
   <option value="Menos de 20 años">Menos de 20 años</option>
   <option value="Entre 20 y 39 años">Entre 20 y 39 años</option>
   <option value="Entre 40 y 59 años">Entre 40 y 59 años</option>
   <option value="60 años o más">60 años o más</option>
 </select></p>

 <p>
 <input type="submit" value="Enviar" name="Enviar" />
 <input type="reset" value="Borrar" name="Reset" /></p>
  </fieldset>
</form>
<?PHP
   }
?>
</body>
</html>


Ara ho complicarem una mica més. En primer lloc, afegim css per millorar el formulari:

<style type="text/css">

 /* General */
BODY {font-family: verdana,arial, sans-serif; font-size: 10pt;}
/* Contenido */
H1 {font-size: 16pt; font-weight: bold; color: #0066CC;}

H2 {font-size: 12pt; font-weight: bold; font-style: italic; color: black;}
H3 {font-size: 10pt; font-weight: bold; color: black;}
/* Formulario */
FORM.borde {border: 1px dotted #0066CC; padding: 0.5em 0.2em; width: 80%;} 

FORM P {clear: left; margin: 0.2em; padding: 0.1em;}
FORM P LABEL {float: left; width: 25%; font-weight: bold;}
.error {color: red;}
</style>


I ara el que farem és que quan doni error afegirem un missatge al costat del camp . Per saber si dona error, en primer lloc haurem de validar si ha pulsat el botó de buscar. Si és així, i hi ha un error muntem un array amb el missatge: 



if ($errores["edad"]!=""){
  echo "<span class='error'>".$errores["edad"]."</span>";





 Codi sencer :

<html>
<head>
 
  <title>Exemple 1</title>
   <style type="text/css">
     /* General */
     BODY {font-family: verdana,arial, sans-serif; font-size: 10pt;}

     /* Contenido */
     H1 {font-size: 16pt; font-weight: bold; color: #0066CC;}
     H2 {font-size: 12pt; font-weight: bold; font-style: italic; color: black;}
     H3 {font-size: 10pt; font-weight: bold; color: black;}
        
     /* Formulario */
     FORM.borde {border: 1px dotted #0066CC; padding: 0.5em 0.2em; width: 80%;}
     FORM P {clear: left; margin: 0.2em; padding: 0.1em;}
     FORM P LABEL {float: left; width: 25%; font-weight: bold;}
     .error {color: red;}

   </style>

</head>

<body>

<?PHP

// Obtener valores introducidos en el formulario

   if (isset($_REQUEST['edad']))
   {
     $edad = $_REQUEST['edad'];
   }
   else {
     $edad="";
   }
   
// Comprobar errores
   $error = false;
   $errores["edad"] = "";
   if (isset($_REQUEST['Enviar']))
   {
      // Texto de búsqueda
   if (trim($edad) == "")
   {
      $errores["edad"] = "¡Debe introducir su edad!";
      $error = true;
   }
    
   }
   
 if (isset($_REQUEST['Enviar']) && $error==false) {
    echo "Su edad es : <br>";
    echo $_REQUEST['edad']."<br>";
    echo "<A HREF='formulari3.php'>Volver a responder</A>";
   }
   else {
   
   ?>
   
   

<form action="formulari3.php" method="post">
  <h1>Formulari 3</h1>
  <fieldset>
 <legend>Formulario 3</legend>

 <p>Indique su edad:</p>
 <p><strong>Edad:</strong>
 <select name="edad">
   <option selected="selected"></option>
   <option value="Menos de 20 años">Menos de 20 años</option>
   <option value="Entre 20 y 39 años">Entre 20 y 39 años</option>
   <option value="Entre 40 y 59 años">Entre 40 y 59 años</option>
   <option value="60 años o más">60 años o más</option>
 </select></p>
    
    <?PHP
 if ($errores["edad"]!=""){
   echo "<span class='error'>".$errores["edad"]."</span>";
    }
    ?>
    <p>
 <input type="submit" value="Enviar" name="Enviar" />
 <input type="reset" value="Borrar" name="Reset" /></p>
  </fieldset>
</form>
<?PHP
   }
?>
</body>
</html>



Cap comentari:

Publica un comentari a l'entrada