# Exámenes - Diccionario

En este examen se debe crear un programa para que los visitantes puedan proponer definiciones.

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

Enlace a examen Diccionario

## Diccionario - 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
    $tamPalabra     = 30; // Tamaño del campo Palabra
    $tamSignificado = 100; // Tamaño del campo Significado

    // Consultas de creación de tabla en MySQL
    $consulta = "CREATE TABLE $dbTabla (
        id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
        palabra VARCHAR($tamPalabra),
        significado VARCHAR($tamSignificado),
        PRIMARY KEY(id)
        )";

    // Consultas de creación de tablas en SQLite
    $consulta = "CREATE TABLE $dbTabla (
        id INTEGER PRIMARY KEY,
        palabra VARCHAR($tamPalabra),
        significado VARCHAR($tamSignificado)
        )";

## Diccionario - Comentarios

- No se podrá guardar un registro sin palabra y significado
- No se podrán guardar dos registros iguales.
- Para listar en forma de lista de definición agrupados por palabra, hay que hacer dos listas anidadas (para minimizar errores, hay que acordarse de usar variables distintas en cada bucle foreach ($consulta / $consulta2, $result / $result2, $valor / $valor2, etc.):

      // Consulta para seleccionar las palabras (sin repeticiones)
      $consulta = "SELECT DISTINCT palabra FROM $dbTabla
        ORDER BY palabra ASC";

      // Consulta para obtener las definiciones de una palabra determinada            $consulta2 = "SELECT * FROM $dbTabla
          WHERE palabra='$valor[palabra]'
          ORDER BY significado $orden";

- Si no se consigue el listado en forma de lista, por lo menos que se muestre el listado en forma de tabla.
- Al buscar se podrá buscar tanto en las palabras como en las definiciones.

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