logo

Andrés es manager de ESMMUG y experto en Dreamweaver, Captivate y Contribute.

Tutoriales PHP/MySQL:
Devolver todos los registros de una consulta por defecto

—Por Andres Cayon

Este tutorial muestra cómo crear un recordset en DW (PHP) que, por defecto, devuelva todos los registros si la consulta no recibe un parámetro que actúe como filtro

Recientemente, me había encontrado con que algunos usuarios de Dreamweaver deseaban poder añadir a sus objetos de formulario la opción ‘Todos los artículos’ al redirigir a una página de resultados. El objetivo era que, si el usuario final seleccionaba esta opción, el filtrado se desactivara, lo que me llevó a buscar el método que implicara modificar el menor código posible.

Lo que mostraremos en este artículo implica modificar sólamente 2 líneas del código de DW para crear un recordset, por lo que creo que será sencillo para todo el mundo poder seguirlo. Al mismo tiempo, los usuarios un poco más avanzados de PHP sabrán cómo mejorar la modificación para que se adapte a otras necesidades.

Al mismo tiempo, y antes de comenzar, añadir que el ‘truco’ es válido para campos de texto vacíos: El ejemplo más sencillo es crear un campo de texto para búsquedas y, si el usuario no escribe nada, la página de resultados devolverá todos los registros..

Comencemos. Para el ejemplo utilizaremos un sencillo menu:

    <form name="form1" method="get" action="results.php">
    <select name="categoryID" id="categoryID">
    <option value="0">Todos los articulos </option>
    <option value="1">Books</option>
    <option value="2">CD's</option>
    </select>
    </form> 

Del código anterior, sólamente hay que tener en cuenta que hemos añadido el valor ‘0′ a la primera opción; utilizar un valor vacío ‘<option value=”">‘ también es posible. El resto de elementos del menu serán los que utilicemos normalmente.

Ahora nos concentraremos en la página de resultados, donde crearemos el recordset que maneje el valor pasado desde el documento anterior. Nótese el valor por defecto (1) añadido por DW a la variable ‘colname’:

Modificaremos dicho valor, para que la consulta apunte a su mismo campo cuando utilice el valor por defecto (en vez de ‘1′). En nuestro ejemplo, dicho campo es ‘categoryID’:

Es decir, cuando el campo no reciba un valor y utilice el existente por defecto, la consulta ejecutada será:

SELECT * FROM products WHERE categoryID=categoryID

Y devolverá, por tanto, todos los resultados.

Nuestro último paso será modificar las 2 lineas de código que comentamos al principio.
Una vez que hayamos creado el recordset, deberemos encontrar una linea similar a la de la imagen, justo antes del recordset (los nombres pueden variar, dependiendo del nombre asignado al juego de registros):

Sencillamente, reemplazaremos ‘isset’ por ‘!empty’:

A partir de ahora, el parametro URL ‘categoryID’ deber� tener un valor diferente de ‘0′, null o una cadena de texto vacía para ser considerado válido. Los siguientes ejemplos de URL considerarán ‘categoryID’ como ‘empty’:

http://www.domain.com/results.php
http://www.domain.com/results.php?categoryID=
http://www.domain.com/results.php?categoryID=0

En cambio, éste ejemplo no será considerado vacío:

http://www.domain.com/results.php?categoryID=1

En los 3 primeros casos, el documento utilizar� el valor por defecto y la consulta devolverá todos los resultados.

Pulse aquí para leer más sobre la función PHP ‘empty’

Para los usuarios de ASP:Este método funciona perfectamente sin necesidad de tocar una sola línea de código, lo que hace aún más sencillo su uso.

Comentarios »

  1. Que tal Andres, está bien tu ejemplo, fácil de usar, pero no podrías ayudarnos con un ejemplo que diga como hacer que filtre dos variables, por decir año y mes ??????

    Que bueno que haya gente como que colabora de esta forma en la web.

    Gracias, y felicidades.

    Comentario Por Gerardo — 04/10/2006 @ 1:23 am

TrackBack URI

Deja tu comentario