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
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