9 - FORMULARIO (control checkbox)

El control checkbox tiene dos estados: seleccionado o no seleccionado.

Para analizar este control utilizaremos prácticamente el mismo ejemplo que con el objeto radio:

Implementar un formulario que solicite la carga de dos enteros, uno en cada text.
Disponer dos controles de tipo checkbox que nos permitan seleccionar si queremos sumar y/o restar los valores ingresados.

El formulario html tiene el siguiente código:

pagina1.php
<html>
    <head>
        <title>Problema</title>
    </head>
    <body>
        <form action="pagina2.php" method="post">
            Ingrese primer valor:
            <input type="text" name="valor1">
            <br>
            Ingrese segundo valor:
            <input type="text" name="valor2">
            <br>
            <input type="checkbox" name="check1">sumar
            <br>
            <input type="checkbox" name="check2">restar
            <br>
            <input type="submit" name="operar">
        </form>
    </body>
</html> 

Lo nuevo en este problema son los dos controles de tipo checkbox:

<input type="checkbox" name="check1">sumar
<br>
<input type="checkbox" name="check2">restar
<br> 

Es importante notar que cada checkbox tiene un nombre distinto.

Ahora veamos el código de la página que procesa el formulario:

pagina2.php
<html>
<head>
    <title>Problema</title>
</head>
<body>
    <?php
    if (isset($_REQUEST['check1'])) {
        $suma = $_REQUEST['valor1'] + $_REQUEST['valor2'];
        echo "La suma es:" . $suma . "<br>";
    }
    if (isset($_REQUEST['check2'])) {
        $resta = $_REQUEST['valor1'] - $_REQUEST['valor2'];
        echo "La resta es:" . $resta;
    }
    ?>
</body>
</html> 

Si el checkbox no está seleccionado en el formulario no se crea una entrada en el vector asociativo $_REQUEST, para saber si existe una determinada componente en un vector se emplea la función isset, si retorna true significa que existe y por lo tanto el checkbox está seleccionado.

Disponemos dos if a la misma altura ya que los dos controles de tipo checkbox podrían estar seleccionados.