Volver al índice Controles en formularios


Recogida de datos I

Cuando se envía un formulario, PHP almacena la información recibida en una matriz llamada $_REQUEST. El número de valores recibidos y los valores recibidos dependen tanto del formulario como de la acción del usuario.

Cualquier control se envía solamente si está establecido su atributo name. El atributo name del control puede contener cualquier carácter (números, acentos, guiones, etc), pero si contiene espacios, los espacios se sustituyen por guiones bajos (_). Cada control crea un elemento de la matriz $_REQUEST, que se identifica como $_REQUEST[valor_del_atributo_name] y que contiene el valor entregado por el formulario (en su caso).

Ejemplo de formulario html: ejemplo.html
<form action="ejemplo.php">
  <p><input type="text" name="texto" /></p>
  <p><input type="submit" value="Enviar" /></p>
</form>

Ejemplo de código PHP: ejemplo.php
<?php
  print_r ($_REQUEST);
  print "<p>Texto recibido: $_REQUEST[texto]</p>";
?>
Array ( [texto] => Pepito Conejo)
Texto recibido: Pepito Conejo

Volver al principio


Controles

Caja de texo, caja de contraseña y área de texto

Este control se envía siempre. El valor enviado es el contenido de la caja o área.

Código fuente Control $_REQUEST
<input type="text" name="cajatexto1" /> Array ( [cajatexto1] => )
<input type="text" name="cajatexto2" value="Cualquier cosa" /> Array ( [cajatexto2] => Cualquier cosa )

Falta caja de contraseña y área de texto

Volver al principio


Casilla de verificación

Este control se envía solamente si se marca la casilla. El valor enviado es "on" si la casilla no tiene definido el atributo value o el valor del aributo value si éste está definido.

Código fuente Control $_REQUEST
<input type="checkbox" name="casilla1" /> (sin marcar) Array ( )
<input type="checkbox" name="casilla2" /> (marcada) Array ( [casilla2] => on )
<input type="checkbox" name="casilla3" value="Tres" /> (marcada) Array ( [casilla3] => Tres )

Volver al principio


Botón radio

Este control se envía solamente si se marca alguno de los botones radio que forman el control. El valor enviado es "on" si el botón marcado no tiene definido el atributo value o el valor del atributo value si éste está definido.

Código fuente Control $_REQUEST
<input type="radio" name="radio1" />
<input type="radio" name="radio1" />
(sin marcar) Array ( )
<input type="radio" name="radio2" />
<input type="radio" name="radio2" />
(marcado uno) Array ( [radio2] => on )
<input type="radio" name="radio3" />
<input type="radio" name="radio3" />
(marcado otro) Array ( [radio3] => on )
<input type="radio" name="radio4" value="Uno" />
<input type="radio" name="radio4" value="Dos" />
(marcado uno) Array ( [radio4] => Uno )
<input type="radio" name="radio5" value="Uno" />
<input type="radio" name="radio5" value="Dos" />
(marcado otro) Array ( [radio5] => Dos )

Volver al principio


Menú

Este control envía siempre la opción elegida. El valor enviado es el contenido de la etiqueta option elegida si la opción elegida no tiene definido el atributo value o el valor del aributo value si éste está definido.

Si el menú admite selección múltiple, entonces el nombre del menú debe acabar con corchetes ([]) y se envía como una matriz, de tantos elementos como opciones se hayan elegido.

Código fuente Control $_REQUEST
<select name="menu1">
  <option selected="selected"></option>
  <option></option>
</select>
Array ( [menu1] => )
<select name="menu2">
  <option selected="selected">Opción 1</option>
  <option>Opción 2</option>
</select>
Array ( [menu2] => Opción 1 )
<select name="menu3">
  <option selected="selected" value="Uno">Opción 1</option>
  <option value="Dos">Opción 2</option>
</select>
Array ( [menu3] => Uno )
<select name="menu4[]" size="3" multiple="multiple">
  <option selected="selected">Opción 1</option>
  <option>Opción 2</option>
  <option>Opción 3</option>
</select>

(Marcados 1 y 3)
Array ( [menu4] => Array ( [0] => Opción 1 [1] => Opción 3 ) )

Nota: Amaya 8.7.1/9.0, al insertar un menú y guardar el documento, dice que falta el atributo name.

Volver al principio


Control oculto

Este control se envía siempre y el valor enviado es el valor del atributo value.

Código fuente Control $_REQUEST
<input type="hidden" name="oculto1" /> Array ( [oculto1] => )
<input type="hidden" name="oculto2" value="Cualquier cosa" /> Array ( [oculto2] => Cualquier cosa )

Volver al principio


Botón Envíar (submit)

Este control se envía solamente si está establecido el atributo name y el valor enviado es el valor del atributo value.

Código fuente Control $_REQUEST
<input type="submit" value="Submit" /> Array ( )
<input type="submit" value="Submit" name="boton2" /> Array ( [boton2] => Submit )

Nota: Amaya 8.7.1/9.0 no permite establecer el atributo name, salvo editando el código fuente.

Volver al principio


Archivo

Por completar

Volver al principio


Imagen

Por completar

Volver al principio


Recogida de datos II

Hay varias maneras de hacer referencia a los datos recibidos de un formulario. La más inmediata es utilizar la matriz $_REQUEST, pero también se pueden almacenar los valores de la matriz $_REQUEST en variables auxiliares.

Matriz $_REQUEST

En el caso de los controles que siempre aparecen en la matriz $_REQUEST (por ejemplo, un control de tipo texto):

En el caso de los controles que no aparecen en la matriz $_REQUEST (por ejemplo, una casilla de verificación que no haya sido marcada):

Independientemente de que se utilicen o no comillas, PHP avisa de que el índice casilla no está definido. La única solución para este problema es comprobar que el índice está definido antes de hacer referencia a él, como se explica en el apartado siguiente.


Utilizar variables auxiliares

Para no tener que estar escribiendo $_REQUEST cada vez que se quiere utilizar el valor del control, se puede utilizar una variable. Al definir la variable, se deben utilizar comillas para evitar el aviso de constante no definida.

Volver al principio

Autor: Bartolomé Sintes Marco
Última modificación: 4 de febrero de 2005