id
autor
título
género
año
editorial
páginas
disponible (1 si está disponible, 0 si no está disponible)
La web se divide en distintas secciones dependiendo del género, así que empezamos por declarar una variable que pasaremos a través de la URL al seleccionar la sección:
Código PHP:
$genero = $HTTP_GET_VARS["gen"];
Código PHP:
$orden = $HTTP_GET_VARS["ord"];
Código PHP:
$consulta = "select * from tabla WHERE (disponible='1' AND genero='$genero') order by '$orden' asc" ;
Código PHP:
echo "<td><a href=\"?gen=$genero&ord=autor\"></td>
<td><a href=\"?gen=$genero&ord=título\"></td>
<td><a href=\"?gen=$genero&ord=año\"></td>
<td><a href=\"?gen=$genero&ord=editorial\"></td>
<td><a href=\"?gen=$genero&ord=páginas\"></td>";
Código PHP:
echo "<td>$consulta[id]</td>
<td>$consulta[autor]</td>
<td>$consulta[título]</td>
<td>$consulta[género]</td>
<td>$consulta[año]</td>
<td>$consulta[editorial]</td>
<td>$consulta[páginas]</td>";
$i++;
Pero ahora quiero no sólo poder ordenar los resultados según el criterio que me apetezca, sino además poder filtrarlos, sacando de la lista los resultados que no me gusten.
Es decir, que en el documento el usuario disponga de unos formularios donde seleccionar el autor, de manera que se muestren sólo los resultados que coincidan con el mismo. O quizás no sabe el autor, pero sí el año en el que se editó el libro. O quiere saber qué libros publicó cierta editorial en un año en concreto.
En resumen, quiero que el usuario pueda elegir qué filtros aplicar a los resultados. Y no se me ocurre cómo hacerlo, ni encuentro información al respecto en Google (seguramente estoy eligiendo mal los términos de búsqueda). Se me ocurre que podría declarar más variables mediante http_get_vars, y luego en la consulta SQL meter más condiciones con variables en "where...", pero eso me plantea un problema, y es que me obliga a especificar todos los filtros, ya que de lo contrario no obtengo ningún resultado. Es decir, si le meto a la consulta una nueva condición con variable de la siguiente manera:
Código PHP:
$consulta = "select * from tabla WHERE (disponible='1' AND genero='$genero' AND año='$año') order by '$orden' asc" ;
Por eso vengo en busca de ayuda, para que alguien me oriente con un enlace donde se explique de manera más o menos sencilla cómo hacerlo, o con una explicación breve y un ejemplo simple.
Por cierto, no sabía si debía plantear esta pregunta en este foro o en el de MySQL. Agradeceré a los moderadores que lo muevan al subforo adecuado si consideran que éste no es el correcto.
