Vamos a dar un repaso a los formularios básicos HTML y veremos la interacción con PHP.
Un formulario básico en HTML se compone de la etiqueta <FORM> con un conjunto de parámetros (de los cuales veremos los básicos) y el conjunto de campos que se envía con el formulario. Lo más básico para definir un formulario sería, por ejemplo:
<FORM NAME='mi_formulario' ACTION='procesar.php' METHOD='POST'>
........
</FORM>
Los 3 parámetros que he incluído son:
• NAME: el nombre del formulario para luego ser referenciado en el código (se utiliza especialmente el nombre que le demos cuando trabajemos con javascript). Es muy recomendable utilizarlo en conjunción con el parámetro ID (ID='mi_formulario' siguiendo el ejemplo) ya que según qué navegadores puede primar un parámetro sobre otro.
• ACTION: indica la página de destino a la que se deben mandar los datos del formulario. Como vemos en el ejemplo, los datos se mandarían a la página procesar.php
• METHOD: indica cómo se deben pasar los parámetros:
• POST: se mandan como variables “ocultas” (basta saber esto para lo que queremos conseguir en este cursillo).
• GET: las variables se mandan dentro de la URL de destino (son visibles).
Por ejemplo si pasamos una variable que sea el DNI de la persona y el formulario usa METHOD=GET veríamos en la barra de navegador una URL similar a:
http://miservidor/pagina.php?dni=112335965
Sin embargo, con POST veríamos solamente http://miservidor/pagina.php y el acceso a la variable DNI vendría “embebido” en el formulario.
Visto así, parece que siempre debiéramos usar POST en vez de GET, ¿verdad? El usuario no tiene por qué ver qué variables manejamos. Esto será cierto la mayoría de los casos, pero habrá ocasiones en las que no nos quede más remedio que usar GET. La experiencia te irá diciendo cuándo usar uno u otro método.
Hay un cuarto parámetro que utilizaremos bastante: TARGET. Este parámetro nos sirve para determinar dónde debe mandar los datos el formulario. ACTION nos determina la página que ha de mostrar y que deberá procesar los campos del formulario, TARGET dirá dónde debe mostrarse esa información. Puede tomar los valores:
• _self : en este mismo marco o ventana.
• _blank : en una ventana nueva.
• _top : en el marco de que depende toda la ventana que estamos visualizando (si no utilizamos marcos en nuestra página (FRAMESET) equivaldrá a _self).
• _parent : el marco padre de la ventana que estamos visualizando (si utilizamos FRAMESET con sólo un nivel de anidación, equivaldrá a _top).
• “nombre elemento” : podemos indicar que el destino sea un elemento de nuestra página susceptible de recibir información de un formulario. Por ejemplo, un marco que hayamos creado y tenga un nombre definido, un IFRAME, etc... en general se entiende este “nombre elemento” como el nombre de un marco.
Dentro del formulario tendremos campos que se declaran con la etiqueta INPUT. No vamos a repasar los distintos tipos de campos que existen sino que pasaremos directamente a ver cómo tratarlos en PHP.
Veamos cómo manejar los campos de un formulario que es recibido por una página PHP. Sea el siguiente formulario que incluiremos en la página c4-ejemplo1.html:
<FORM NAME=”datos” ID=”datos” ACTION=”c4-e1.php” METHOD=”POST”>
Tu nombre: <INPUT NAME=”nombre” ID=”nombre” size=”20” maxlength=”20”>
<BR>
Tu email: <INPUT NAME=”email” ID=”email” size=”20” maxlength=”20”>
<BR>
<INPUT TYPE=”SUBMIT” VALUE=”Enviar”>
</FORM>
Introducimos nuestro nombre y el email y pulsamos el botón de Enviar. ¿Cómo consultamos el valor de estos campos en el PHP de destino? PHP construye arrays asociativos para las variables que nos remitan por un formulario:
• Si hemos usado METHOD=GET tendremos un array asociativo $_GET[“nombre_var”] para referenciar cada variable del formulario.
• Si hemos usado METHOD=POST el array será $_POST[“nombre_var”].
Dependiendo además de la configuración del servidor existirá la posibilidad de utilizar, directamente $nombre_var (por ejemplo, $dni ó $email). A modo de comentario, esto dependerá de si la variable REGISTER_GLOBALS está a ON en el servidor. Sin embargo, $_POST y $_GET siempre estarán disponibles, por lo que a efectos de portabilidad de la aplicación es más recomendable utilizar estos arrays.
Por tanto, si construimos el siguiente PHP, tendremos en pantalla la información remitida por el formulario:
<HTML>
<HEAD>
<TITLE>Cap 4 ejemplo 1</TITLE>
</HEAD>
<BODY>
Tu DNI es <? echo $_POST[“dni”]; ?>
Tu email es <? echo $_POST[“email”]; ?>
</BODY>
</HTML>
Puedes ver el ejemplo completo aquí: http://phpdesdecero.host.sk/c4-ejemplo1.html
Filosofía Todo en uno
Muy frecuentemente nos convendrá (o necesitaremos) mantener en pantalla el mismo formulario que hemos enviado al PHP. Para lograrlo, construiremos el formulario dentro de una página PHP y accederemos a las variables de la siguiente forma:
<HTML>
<HEAD>
<TITLE>Cap 4 ejemplo 2</TITLE>
</HEAD>
<BODY>
<FORM NAME="datos" ID="datos" ACTION= "c4-e2.php" METHOD="POST">
Tu nombre: <INPUT NAME="nombre" ID="nombre" size="20" maxlength="20" VALUE="<? echo $_POST["nombre"]; ?>" >
<BR>
Tu email: <INPUT NAME="email" ID="email" size="20" maxlength="20" VALUE="<? echo $_POST["email"]; ?>" >
<BR>
<INPUT TYPE="SUBMIT" VALUE="Enviar">
</FORM>
<?
if (strlen($_POST["nombre"]) > 0){
echo "<BR>Tu nombre es ";
echo $_POST["nombre"];
}
if (strlen($_POST["email"]) > 0){
echo "<BR>Tu email es ";
echo $_POST["email"];
}
?>
</BODY>
</HEAD>
He resaltado en azul aquello que hemos cambiado o añadido:
• Si hacemos que el ACTION del formulario sea la propia página que estamos visualizando, los valores que se introduzcan después de visualizar la primera vez la página serán remitidos a nuestra misma página.
• Al ponerle a cada INPUT la propiedad VALUE le estamos asignando un valor por defecto. Si le indicamos que el valor por defecto es “lo que contenga la variable PHP” estaremos “conservando” lo remitido en el formulario.
• En la sección final he incluído el uso de la función strlen de PHP (es equivalente a la misma función en C). Esta función devuelve el número de caracteres que componen la variable que se le pase por argumento. Lo que hemos hecho ha sido decir “si la variable contiene más de cero caracteres, ejecuta estas sentencias”. Las sentencias, por su parte, son muy simples: mostrar un mensaje fijo de texto y a continuación el valor de la variable.
Puedes ver el ejemplo funcionando en http://phpdesdecero.host.sk/c4-e2.php






