Desarrollo de aplicaciones web con PHP y MySQL
Tratamiento de formularios en PHP
Sergio Sáez y José Luis Poza
© 2015 Sergio Sáez y José Luis Poza

1. Comprobando valores

<?php
$n_ruedas
filter_input(INPUT_GET"numruedas"FILTER_VALIDATE_INT);
if (
$n_ruedas === false) {
   echo 
"El valor de las ruedas no se ha establecido correctamente";
// endif
$total$n_ruedas PRECIORUEDAS;
?>

2. Valores por omisión

Primero:
Segundo:
Tercero:
Cuarto:
<form action="peticion-01.php" method="post">
<table>
  <tr>
    <td>Primero: </td>
    <td><input type="text" name="uno"
               size="20" value="Valor de uno"></td>
  </tr>
  <tr>
    <td>Segundo: </td>
    <td><input type="text" name="dos"
               size="20" value="Valor de dos"></td>
  </tr>
  <tr>
    <td>Tercero: </td>
    <td><input type="text" name="tres"
               size="20" value="Valor de tres"></td>
  </tr>
  <tr>
    <td>Cuarto: </td>
    <td><input type="text" name="cuatro"
               size="20" value="Valor de cuatro"></td>
  </tr>
</table>
<input type="submit" value="Enviar">
<input type="reset" value="Borrar">
</form>
<pre>
<?= "_POST:<br>";
   
print_r($_POST);
?>
</pre>
<?php
$elementos
= array("uno" => "Primero",
                  
"dos" => "Segundo",
                  
"tres" => "Tercero",
                  
"cuatro" => "Cuarto");

foreach (
$elementos as $clave => $valor) {
    if (
trim($_POST[$clave]) != "")
        
$pedido[$clave]= trim($_POST[$clave]);
    else {
        echo 
"$valor no se ha establecido<br>";
    } 
// endif
// end foreach

if (count($pedido) != count($elementos)) {
    echo 
"<p>Faltan parámetros</p>\n";
    echo 
"<a href=\"javascript:history.go(-1)\">Volver</a>\n";
    exit;
// endif

echo "<table>";

foreach (
$pedido as $clave => $valor) {
    echo 
"<tr>\n\t<td><b>"$elementos[$clave];
    echo 
":</b></td>\n\t<td> $valor </td>\n</tr>";
// end foreach

echo "</table>";
?>
_POST:
Array ( [uno] => Valor de uno [dos] => Valor de dos [tres] => Valor de tres [cuatro] => Valor de cuatro )
Primero: Valor de uno
Segundo: Valor de dos
Tercero: Valor de tres
Cuarto: Valor de cuatro
<pre>
_POST:<br>Array
(
    [uno] => Valor de uno
    [dos] => Valor de dos
    [tres] => Valor de tres
    [cuatro] => Valor de cuatro
)
</pre>

<table><tr>
	<td><b>Primero:</b></td>
	<td> Valor de uno </td>
</tr><tr>
	<td><b>Segundo:</b></td>
	<td> Valor de dos </td>
</tr><tr>
	<td><b>Tercero:</b></td>
	<td> Valor de tres </td>

</tr><tr>
	<td><b>Cuarto:</b></td>
	<td> Valor de cuatro </td>
</tr></table>

3. Vectores en los campos de entrada

Primero:
Segundo:
Tercero:
Cuarto:
<form action="peticion-02.php" method="post">
<table>
  <tr>
    <td>Primero: </td>
    <td><input type="text" name="vector[uno]"
               size="20"></td>
  </tr>
  <tr>
    <td>Segundo: </td>
    <td><input type="text" name="vector[dos]"
               size="20"></td>
  </tr>
  <tr>
    <td>Tercero: </td>
    <td><input type="text" name="vector[tres]"
               size="20"></td>
  </tr>
  <tr>
    <td>Cuarto: </td>
    <td><input type="text" name="vector[cuatro]"
               size="20"></td>
  </tr>
</table>
<input type="submit" value="Enviar">
<input type="reset" value="Borrar">
</form>
<pre>
<?= "_POST:<br>";
   
print_r($_POST);
?>
</pre>
<?php
$elementos
= array("uno" => "Primero",
                  
"dos" => "Segundo",
                  
"tres" => "Tercero",
                  
"cuatro" => "Cuarto");

$vector$_POST["vector"];

foreach (
$vector as $clave => $valor) {
   if (
trim($vector[$clave]) != "")
      
$pedido[$clave]= trim($vector[$clave]);
   else {
      echo 
$elementos[$clave]. " no se ha establecido<br>\n";
   } 
// endif
// end foreach

if (count($pedido) != count($elementos)) {
   echo 
"<p>Faltan par&aacute;metros</p>\n";
   echo 
"<a href=\"javascript:history.go(-1)\">Volver</a>\n";
   exit;
// endif

echo "<table>";

foreach (
$pedido as $clave => $valor) {
   echo 
"<tr>\n\t<td><b>"$elementos[$clave]. ":</b></td>\n\t<td> $valor </td>\n</tr>";
// end foreach

echo "</table>";
?>
<pre>
_POST:<br>Array
(
    [cesta] => Array
        (
            [uno] =>
            [dos] => un dos
            [tres] =>
            [cuatro] => un cuatro
        )

)
</pre>

Primero no se ha establecido<br>

Tercero no se ha establecido<br>
<p>Faltan par&aacute;metros</p>
<a href="javascript:history.go(-1)">Volver</a>
_POST:
Array ( [cesta] => Array ( [uno] => [dos] => un dos [tres] => [cuatro] => un cuatro ) )
Primero no se ha establecido
Tercero no se ha establecido

Faltan parámetros

Volver

4. Checkboxes

Primero
Segundo
Tercero
Cuarto
<form action="peticion-03.php" method="post">
<table>
  <tr>
    <td><input type="checkbox" name="uno"></td>
    <td>Primero</td>
  </tr>
  <tr>
    <td><input type="checkbox" name="dos"></td>
    <td>Segundo</td>
  </tr>
  <tr>
    <td><input type="checkbox" name="tres"></td>
    <td>Tercero</td>
  </tr>
  <tr>
    <td><input type="checkbox" name="cuatro"></td>
    <td>Cuarto</td>
  </tr>

</table>
<input type="submit" value="Enviar">
<input type="reset" value="Borrar">
</form>
<pre>
<?= "_POST:<br>";
   
print_r($_POST);
?>
</pre>
<?php
$elementos
= array("uno" => "Primero",
                  
"dos" => "Segundo",
                  
"tres" => "Tercero",
                  
"cuatro" => "Cuarto");

foreach (
$elementos as $clave => $valor) {
   if (isset(
$_POST[$clave])) {
      echo 
$elementos[$clave]. " se ha marcado<br>\n";
   } else {
      echo 
$elementos[$clave]. " <b>no</b> se ha marcado<br>\n";
   } 
// endif
// end foreach
?>
<pre>
_POST:<br>Array
(
    [dos] => on
    [cuatro] => on
)
</pre>
Primero <b>no</b> se ha marcado<br>
Segundo se ha marcado<br>
Tercero <b>no</b> se ha marcado<br>
Cuarto se ha marcado<br>
_POST:
Array ( [dos] => on [cuatro] => on )
Primero no se ha marcado
Segundo se ha marcado
Tercero no se ha marcado
Cuarto se ha marcado

5. Checkboxes con valores

Primero
Segundo
Tercero
Cuarto
<form action="peticion-03b.php" method="post">
<table>
  <tr>
    <td><input type="checkbox" name="uno" value="Primero"></td>
    <td>Primero</td>
  </tr>
  <tr>
    <td><input type="checkbox" name="dos" value="Segundo"></td>
    <td>Segundo</td>
  </tr>
  <tr>
    <td><input type="checkbox" name="tres" value="Tercero"></td>
    <td>Tercero</td>
  </tr>
  <tr>
    <td><input type="checkbox" name="cuatro" value="Cuarto"></td>
    <td>Cuarto</td>
  </tr>

</table>
<input type="submit" value="Enviar">
<input type="reset" value="Borrar">
</form>
<pre>
<?= "_POST:<br>";
   
print_r($_POST);
?>
</pre>
<?php
$elementos
= array("uno" => "Primero",
                  
"dos" => "Segundo",
                  
"tres" => "Tercero",
                  
"cuatro" => "Cuarto");

foreach (
$elementos as $clave => $valor) {
   if (isset(
$_POST[$clave])) {
      echo 
$_POST[$clave]. " se ha marcado<br>\n";
   } else {
      echo 
$elementos[$clave]. " <b>no</b> se ha marcado<br>\n";
   } 
// endif
// end foreach
?>
<pre>
_POST:<br>Array
(
    [dos] => Segundo
    [cuatro] => Cuarto
)
</pre>
Primero <b>no</b> se ha marcado<br>
Segundo se ha marcado<br>
Tercero <b>no</b> se ha marcado<br>
Cuarto se ha marcado<br>

6. Checkboxes con vectores

Primero
Segundo
Tercero
Cuarto
<form action="peticion-04.php" method="post">
<table>
  <tr>
    <td><input type="checkbox" name="vector[uno]"></td>
    <td>Primero</td>
  </tr>
  <tr>
    <td><input type="checkbox" name="vector[dos]"></td>
    <td>Segundo</td>
  </tr>
  <tr>
    <td><input type="checkbox" name="vector[tres]"></td>
    <td>Tercero</td>
  </tr>
  <tr>
    <td><input type="checkbox" name="vector[cuatro]"></td>
    <td>Cuarto</td>
  </tr>

</table>
<input type="submit" value="Enviar">
<input type="reset" value="Borrar">
</form>
<pre>
<?= "_POST:<br>";
   
print_r($_POST);
?>
</pre>
<?php
$elementos
= array("uno" => "Primero",
                  
"dos" => "Segundo",
                  
"tres" => "Tercero",
                  
"cuatro" => "Cuarto");

$vector$_POST["vector"];

echo 
"Las opciones marcadas son: <br>";
echo 
"<ul>\n";

foreach (
$vector as $clave => $valor) {
   echo 
"<li>"$elementos[$clave] ."</li>\n";
// end foreach

echo "</ul>\n";
?>
<pre>
_POST:<br>Array
(
    [cesta] => Array
        (
            [dos] => on
            [cuatro] => on
        )

)
</pre>
Las opciones marcadas son: <br><ul>

<li>Segundo</li>
<li>Cuarto</li>
</ul>
_POST:
Array ( [cesta] => Array ( [dos] => on [cuatro] => on ) )
Las opciones marcadas son:

7. radio buttons

Primero
Segundo
Tercero
Cuarto
<form action="peticion-05.php" method="post">
<table>
  <tr>
    <td><input type="radio" name="seleccionado"
               value="uno"></td>
    <td>Primero</td>
  </tr>
  <tr>
    <td><input type="radio" name="seleccionado"
               value="dos"></td>
    <td>Segundo</td>
  </tr>
  <tr>
    <td><input type="radio" name="seleccionado"
               value="tres"></td>
    <td>Tercero</td>
  </tr>
  <tr>
    <td><input type="radio" name="seleccionado"
               value="cuatro"></td>
    <td>Cuarto</td>
  </tr>

</table>
<input type="submit" value="Enviar">
<input type="reset" value="Borrar">
</form>
<pre>
<?= "_POST:<br>";
   
print_r($_POST);
?>
</pre>
<?php
$elementos
= array("uno" => "Primero",
                  
"dos" => "Segundo",
                  
"tres" => "Tercero",
                  
"cuatro" => "Cuarto");

if (isset(
$_POST["seleccionado"]))
  echo 
"La opción seleccionada ha sido: " $elementos[$_POST["seleccionado"]];
else
  echo 
"No se ha seleccionado ninguna";

?>
<pre>
_POST:<br>Array
(
    [seleccionado] => tres
)
</pre>
La opción seleccionada ha sido: Tercero
_POST:
Array ( [seleccionado] => tres )
La opción seleccionada ha sido: Tercero

8. Ventanas de selección


<form action="peticion-06.php" method="post">
<table>
<select name="seleccionado">
<option value="none" selected>Selecciona un valor</option>
<option value="uno">Primero</option>
<option value="dos">Segundo</option>
<option value="tres">Tercero</option>
<option value="cuatro">Cuarto</option>
</select>

</table>
<br>

<input type="submit" value="Enviar">
<input type="reset" value="Borrar">
</form>
<pre>
<?= "_POST:<br>";
   
print_r($_POST);
?>
</pre>
<?php
$elementos
= array("uno" => "Primero",
                  
"dos" => "Segundo",
                  
"tres" => "Tercero",
                  
"cuatro" => "Cuarto");

if (
$_POST["seleccionado"] != "none")
  echo 
"La opción seleccionada ha sido: " $elementos[$_POST["seleccionado"]];
else
  echo 
"No se ha seleccionado ninguna";

echo 
"</ul>\n";

?>
<pre>
_POST:<br>Array
(
    [seleccionado] => dos
)
</pre>
La opción seleccionada ha sido: Segundo</ul>
_POST:
Array ( [seleccionado] => dos )
La opción seleccionada ha sido: Segundo

9. Ventanas de selección múltiple


<form action="peticion-07.php" method="post">
<table>
<select name="vector[]" multiple>
<option value="uno">Primero</option>
<option value="dos">Segundo</option>
<option value="tres">Tercero</option>
<option value="cuatro">Cuarto</option>
</select>

</table>
<br>

<input type="submit" value="Enviar">
<input type="reset" value="Borrar">
</form>
<pre>
<?= "_POST:<br>";
   
print_r($_POST);
?>
</pre>
<?php
$elementos
= array("uno" => "Primero",
                  
"dos" => "Segundo",
                  
"tres" => "Tercero",
                  
"cuatro" => "Cuarto");

$vector$_POST["vector"];

echo 
"Las opciones marcadas son: <br>";
echo 
"<ul>\n";

foreach (
$vector as $clave => $valor) {
   echo 
"<li>$clave$valor ($elementos[$valor])</li>\n";
// end foreach

echo "</ul>\n";
?>
<pre>
_POST:<br>Array
(
    [cesta] => Array
        (
            [0] => dos
            [1] => cuatro
        )

)
</pre>
Las opciones marcadas son: <br><ul>

<li>0: dos (Segundo)</li>
<li>1: cuatro (Cuarto)</li>
</ul>
_POST:
Array ( [cesta] => Array ( [0] => dos [1] => cuatro ) )
Las opciones marcadas son:

10. Campos ocultos

Primero:
Segundo:
Tercero:
Cuarto:
Valor oculto: Oculto: Hola a todos!

<form action="peticion-08.php" method="post">
<table>
  <tr>
    <td>Primero: </td>
    <td><input type="text" name="uno" size="20"
               value="Valor por omisión"></td>
  </tr>
  <tr>
    <td>Segundo: </td>
    <td><input type="text" name="dos" size="20"
               value="Valor por omisión"></td>
  </tr>
  <tr>
    <td>Tercero: </td>
    <td><input type="text" name="tres" size="20"
               value="Valor por omisión"></td>
  </tr>
  <tr>
    <td>Cuarto: </td>
    <td><input type="text" name="cuatro" size="20"
               value="Valor por omisión"></td>
  </tr>
</table>

Valor oculto: <b>Oculto: </b>Hola a todos!<br>
<input type="hidden" name="Oculto" value="Hola a todos!">
<br>

<input type="submit" value="Enviar">
<input type="reset" value="Borrar">
</form>
<pre>
<?= "_POST:<br>";
   
print_r($_POST);
?>
</pre>
<?php
$elementos
= array("uno" => "Primero",
                  
"dos" => "Segundo",
                  
"tres" => "Tercero",
                  
"cuatro" => "Cuarto");

foreach (
$elementos as $clave => $valor) {
   if (
trim($_POST[$clave]) != "")
      
$pedido[$clave]= trim($_POST[$clave]);
   else {
      echo 
"$valor no se ha establecido<br>";
   } 
// endif
// end foreach

if (count($pedido) != count($elementos)) {
   echo 
"<p>Faltan parámetros</p>";
   echo 
"<a href=\"javascript:history.go(-1)\">Volver</a>";
   exit;
// endif

echo "<table>";

foreach (
$pedido as $clave => $valor) {
   echo 
"<tr>\n\t<td><b>"$elementos[$clave]. ":</b></td>\n\t<td> $valor </td>\n</tr>";
// end foreach
echo "<tr>\n\t<td><b>El valor oculto:</b></td>\n\t<td> $_POST[Oculto] </td>\n</tr>";
echo 
"</table>";
?>
<pre>
_POST:<br>Array
(
    [uno] => Valor por omisión
    [dos] => Valor por omisión
    [tres] => Valor por omisión
    [cuatro] => Valor por omisión
    [Oculto] => Hola a todos!
)
</pre>
<table><tr>
	<td><b>Primero:</b></td>

	<td> Valor por omisión </td>
</tr><tr>
	<td><b>Segundo:</b></td>
	<td> Valor por omisión </td>
</tr><tr>
	<td><b>Tercero:</b></td>
	<td> Valor por omisión </td>

</tr><tr>
	<td><b>Cuarto:</b></td>
	<td> Valor por omisión </td>
</tr><tr>
	<td><b>El valor oculto:</b></td>
	<td> Hola a todos! </td>
</tr>
</table>
_POST:
Array ( [uno] => Valor por omisión [dos] => Valor por omisión [tres] => Valor por omisión [cuatro] => Valor por omisión [Oculto] => Hola a todos! )
Primero: Valor por omisión
Segundo: Valor por omisión
Tercero: Valor por omisión
Cuarto: Valor por omisión
El valor oculto: Hola a todos!

11. Enlaces con información

Formulario de texto

Este enlace envia el valor uno=> Primero ENLACE
Este enlace envia el valor dos=> Segundo ENLACE
Este enlace envia el valor tres=> Tercero ENLACE
Este enlace envia el valor cuatro=> Cuarto ENLACE
<h1>Formulario de texto</h1>
<table>
  <tr>
    <td>Este enlace envia el valor uno=&gt; Primero</td>
    <td><a href="peticion-09.php?uno=El+valor+es+Primero">ENLACE</a></td>
  </tr>
  <tr>
    <td>Este enlace envia el valor dos=&gt; Segundo</td>
    <td><a href="peticion-09.php?dos=El+valor+es+Segundo">ENLACE</a></td>
  </tr>
  <tr>
    <td>Este enlace envia el valor tres=&gt; Tercero</td>
    <td><a href="peticion-09.php?tres=El+valor+es+Tercero">ENLACE</a></td>
  </tr>
  <tr>
    <td>Este enlace envia el valor cuatro=&gt; Cuarto</td>
    <td><a href="peticion-09.php?cuatro=El+valor+es+Cuarto">ENLACE</a></td>
  </tr>
</table>
<h1>Formulario de texto</h1>
<table>
<?php
$elementos
= array("uno" => "Primero",
                  
"dos" => "Segundo",
                  
"tres" => "Tercero",
                  
"cuatro" => "Cuarto");

foreach (
$elementos as $clave => $valor) {
?>
  <tr>
    <td>Este enlace envia el valor <?= $clave ?>=&gt; <?= $valor ?></td>
    <td><a href="peticion-09.php?<?= $clave ?>=<?= urlencode("El valor es $valor"?>">ENL
  </tr>
<?php
// Fin de foreach
?>
</table>
<pre>
_GET:<br>Array
(
    [cuatro] => El valor es Cuarto
)
</pre>
<table>
<tr>
	<td><b>cuatro:</b></td>
	<td> El valor es Cuarto </td>
</tr>
</table>
_GET:
Array ( [cuatro] => El valor es Cuarto )
cuatro: El valor es Cuarto

12. Botones con información

Formulario de texto

Elemento: Primero
Elemento: Segundo
Elemento: Tercero
Elemento: Cuarto
<h1>Formulario de texto</h1>

<form action="peticion-12.php" method="post">
<table>
  <tr>
    <td>Elemento: Primero</td>
    <td><input type="submit" name="accion[borrar:uno]" value="Borrar"></td>
  </tr>
  <tr>
    <td>Elemento: Segundo</td>
    <td><input type="submit" name="accion[borrar:dos]" value="Borrar"></td>
  </tr>
  <tr>
    <td>Elemento: Tercero</td>
    <td><input type="submit" name="accion[borrar:tres]" value="Borrar"></td>
  </tr>
  <tr>
    <td>Elemento: Cuarto</td>
    <td><input type="submit" name="accion[borrar:cuatro]" value="Borrar"></td>
  </tr>
</table>

<input type="submit" name="accion[comprar]" value="Comprar">
<input type="submit" name="accion[cancelar]" value="Cancelar">

</form>
<h1>Formulario con varios botones de envío</h1>
<pre>
<?= "_POST:<br>";
   
print_r($_POST);
?>
</pre>
<?php
$elementos
= array("uno" => "Primero",
                  
"dos" => "Segundo",
                  
"tres" => "Tercero",
                  
"cuatro" => "Cuarto");

if (isset(
$_POST["accion"])) {
      
$ordenkey($_POST['accion']);
      
$accionexplode(":"$orden2);
} else {
      echo 
"No se ha especificado ninguna acción";
// endif

echo "Se ha solicitado '$accion[0]'<br>\n";

if (
count($accion) > 1) {
   echo 
"Par&aacute;metros de $accion[0]$accion[1]<br>\n";
// endif
?>
<pre>
_POST:<br>Array
(
    [accion] => Array
        (
            [borrar:tres] => Borrar
        )

)
</pre>
Se ha solicitado 'borrar'<br>
Par&aacute;metros de borrar: tres<br>
_POST:
Array ( [accion] => Array ( [borrar:tres] => Borrar ) )
Se ha solicitado 'borrar'
Parámetros de borrar: tres