Ejercicios - Bases de datos (2) - Ayuda

Esta página contiene comentarios ampliados con fragmentos de código PHP de los ejercicios Bases de datos (2).

Bases de datos (2) 1 - Comprobaciones

Estos son los fragmentos de código que se deben añadir a las páginas del ejercicio Bases de datos (1) 6 para resolver el ejercicio Bases de datos (2) 1.

Bases de datos (2) 2 - Listados ordenables

Estos son los fragmentos de código que se deben añadir a las páginas del ejercicio Bases de datos (2) 1 para resolver el ejercicio Bases de datos (2) 2.

En cualquier listado en forma de tabla, queremos poder ordenar los registros en un orden determinado (por cualquier columna, en orden ascendente o descendente).

Para ello deberíamos incluir un ORDER BY en las consultas que seleccionan los registros. Por ejemplo:

$consulta  = "SELECT * FROM $cfg[tablaPersonas]
              ORDER BY $ordena";

La columna y el orden deberían haberse recogido previamente. Al tratarse de un dato proporcionado por el usuario, por seguridad deberían utilizarse consultas preparadas, pero los nombres de columnas no se pueden proporcionar como parámetros. Para resolver este problema, utilizaremos una función de recogida especial que comprobará si el dato recibido es uno de los valores posibles (los valores posibles son los nombres de las columnas y el tipo de ordenación, ASC o DESC). En caso de no recibir un valor de ordenación o recibir un valor incorrecto, se asignará un valor predeterminado.

La función recoge() tendrá tres argumentos: el campo a recoger, una matriz con los valores posibles (argumento allowed) y el valor predeterminado de ordenación (argumento default). En el ejemplo siguiente, el valor predeterminado es listar por orden alfabético del nombre:

$ordena = recoge("ordena", default: "nombre ASC", allowed: $cfg["tablaPersonasColumnasOrden"]);