# Exámenes - Capitales del mundo

En este examen se debe crear un programa que gestione una base de datos de nombres de países y de sus capitales y que plantee preguntas al usuario.

Un ejemplo de programa puede probarse en la ventana siguiente (el ejemplo trabaja con una base de datos SQLite):

Enlace a examen Capitales del mundo

## Capitales del mundo - Tablas

Estas pueden ser las consultas de creación de tablas para este examen:

    // Tamaño de los campos
    define('MAX_REG_TABLA', 20);  // Número máximo de registros en la tabla
    $tamCiudad = 50;              // Tamaño del campo Ciudad
    $tamPais   = 40;              // Tamaño del campo País

    // Consulta de creación de tabla en MySQL
    $consulta = "CREATE TABLE $dbTabla (
        id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
        ciudad VARCHAR($tamCiudad),
        pais VARCHAR($tamPais),
        PRIMARY KEY(id)
        )";

    // Consultas de creación de tablas en SQLite
    $consulta = "CREATE TABLE $dbTabla (
        id INTEGER PRIMARY KEY,
        ciudad VARCHAR($tamCiudad),
        pais VARCHAR($tamPais)
        )";

## Capitales del mundo - Comentarios

- Para gestionar la base de datos, sólo serán necesarias las opciones: Borrar todo, Añadir y Listar. No es necesario que esas páginas hagan comprobaciones de los valores introducidos por el usuario.
- Para plantear preguntas al usuario, se incluirá una opción Preguntar que conste de dos páginas:
  - Primera página:
    - Se planteará la pregunta: ¿Cuál es la capital de XXXX?, en la que XXXX será el nombre de un país de la tabla obtenido al azar
    - Para elegir el país se supondrá que los registros creados en la tabla tienen id correlativos y se obtendrá un número al azar generado por la función rand():

          $consulta = "SELECT COUNT(*) FROM $dbTabla";
          $result = $db->query($consulta);
          $numeroRegistros = $result->fetchColumn();
          $numeroPregunta  = rand(1, $numeroRegistros);

    - Para evitar trampas del usuario, el formulario no contendrá la respuesta correcta sino el id del registro.
  - Segunda página:
    - Se comprobará si la respuesta es correcta o no y se informará al usuario.

Esta obra está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 3.0 España.