# Ejercicios - Validación

## Validación 1 - Formulario y resultado en una única página

Escriba un programa que solicite y reciba (sin validar) un nombre, un número de teléfono y una dirección de correo y que conste de una única página.

Enlace a ejercicio Validación 1

### Comentarios

- No es necesario validar la entrada del usuario. Aunque se dejen los campos vacíos, se debe mostrar el resultado.
- El siguiente diagrama muestra las comprobaciones que es preciso realizar:

  Esto se puede traducir en la siguiente estructura del programa:

      recoger datos

      if (datosRecibidos) {
        mostrar datos
      } else {
        mostrar formulario
      }

- Para que el atributo action del formulario o el enlace a la página apunte a sí mismo, independientemente de la ubicación del archivo o de su nombre, se puede utilizar la variable predefinida $_SERVER[PHP_SELF].
- Para comprobar que se han recibido datos, se puede dar un valor al atributo name del botón Enviar (submit) y comprobar que se ha recibido ese dato (con la función isset, por ejemplo).
- Para no repetir la cabecera dos veces, se puede crear una función cabecera($titulo), cuyo argumento se utilice en <title> y <h1>.

## Validación 2 - Validación de formulario

Escriba un programa que valide un nombre, un número de teléfono y una dirección de correo y que conste de una única página.

- La página solicita los datos y los valida (por ejemplo, que el nombre sólo tenga letras, que el número sean 9 números, que la dirección de correo contenga la @, un punto y letras inglesas, etc).
- Si los datos no son válidos, se solicitan de nuevo indicando los datos no válidos.
- Si los datos son válidos, los datos se muestran.

Enlace a ejercicio Validación 2

### Comentarios

- El siguiente diagrama muestra las comprobaciones que es preciso realizar:

  Esto se puede traducir en la siguiente estructura del programa:

      recoger datos
      validar datos

      if (datosRecibidos && datosCorrectos) {
        mostrar datos
      } elseif { datosRecibidos && !datosCorrectos) {
        mostrar formulario con datos recibidos y avisos de fallos
      } else {
        mostrar formulario
      }

- Para que el atributo action del formulario o el enlace a la página apunte a sí mismo, independientemente de la ubicación del archivo o de su nombre, se puede utilizar la variable predefinida $_SERVER[PHP_SELF].
- Para comprobar que se han recibido datos, se puede dar un valor al atributo name del botón Enviar (submit) y comprobar que se ha recibido ese dato (con la función isset, por ejemplo).
- Para no repetir la cabecera tres veces, se puede crear una función cabecera($titulo), cuyo argumento se utilice en <title> y <h1>.
- Si falta algún dato, se considerará incorrecto

## Validación 3 - Entrada de datos

Escriba un programa que valide de 2 a 10 valores numéricos y que conste de una única página.

- La página solicita los datos y los valida.
- Si los datos no son válidos, se solicitan de nuevo indicando los datos no válidos y los datos sin escribir.
- Si los datos son válidos, los datos se muestran.
- Si se aumenta o reduce el número de valores, se siguen mostrando los valores ya introducidos (salvo el eliminado si se ha eliminado alguno).

Enlace a ejercicio Validación 3

### Comentarios

- Para que el atributo action del formulario o el enlace a la página apunte a sí mismo, independientemente de la ubicación del archivo o de su nombre, se puede utilizar la variable predefinida $_SERVER[PHP_SELF].
- Los tres botones Enviar (submit) deben tener atributos name distintos para saber en cuál se ha hecho clic.
- Para no repetir la cabecera tres veces, se puede crear una función cabecera($titulo), cuyo argumento se utilice en <title> y <h1>.
- El número de valores se puede guardar en un control oculto.
- Las cajas de texto deben tener como atributo name elementos de una matriz de una dimensión (por ejemplo, valores[1], valores[2], etc.). Se debe utilizar la función recoge_matriz().
- Si el usuario hace clic en "Añadir valor" y no se ha superado el tamaño máximo se debe crear el nuevo elemento en la matriz $valores.
  - El siguiente diagrama muestra las comprobaciones que es preciso realizar:

    Esto se puede traducir en la siguiente estructura del programa:

        recoger datos
        validar datos
        if (añadirValor o quitarValor) {
          añadir o quitar valor
        }

        if (datosRecibidos && datosCorrectos) {
          mostrar datos
        } elseif { datosRecibidos && !datosCorrectos) {
          mostrar formulario con datos recibidos y avisos de fallos
        } else {
          mostrar formulario
        }

- Si falta un dato, se indicará que falta el dato. Si el dato no es numérico, se indicará que no es correcto.
- Si todos los valores están vacíos, se debe mostrar el formulario original (sin avisos de valores vacíos).

Esta obra está bajo una licencia de Creative Commons.