Web de Bienes Raíces o Inmobiliarias - Parte 6, Búsquedas y Consultas MySQL
Formulario de Busquedas, para consultas con PHP y MySQL
Tutorial por Jorge Oyhenard (elQuique)
En esta entrega, elQuique nos enseña, como realizar un formulario de búsqueda en nuestro reporte, de manera de localizar fácilmente las propiedades ingresadas. Esta búsqueda podrá ser adaptada a cualquier tipo de búsqueda y es realizada a fines de ejemplo.
En la entrega anterior, vimos como realizar un Reporte de Propiedades, recomendamos mirar esa Quinta Entrega, y las anteriores para entenderlas antes de realizar esta parte.
Esta Sexta Entrega, nos permitirá aprender a realizar un Formulario de Búsqueda para localizar fácilmente las propiedades ingresadas, ahí vamos.
Primero nos ubicaremos debajo del Titulo y antes de nuestra Tabla de Resultados (1 ver imagen), ahí vamos a Insert (Insertar), Form (Formulario), TextField (Campo de Texto), (2 ver imágen).
Cuando nos pida el nombre de la etiqueta, le indicaremos Buscar:, como indica la imagen, y luego le damos OK.
Nos preguntara también si deseamos agregar un formulario, a lo cual le diremos YES (SI).
Luego vamos a seleccionar el Campo de Texto recien agregado y le daremos de nombre txtBusqueda, es importante nombrarlo para utilizar este nombre como referencia.
Luego, nuevamente con Insert (Insertar), Form (Formulario), Button (Botón), para que nos quede el botón que presionaremos al realizar la búsqueda.
Este botón, también es importante personalizarlo, lo vamos a Seleccionar (1 en la imágen), como valor le indicaremos IR (2 en la imágen), de manera que es sea el texto que muestra el botón, y de nombre le indicaremos cmdBuscar (3 en la imagen).
El código final del formulario generado, es el siguiente:
<label>Buscar:
<input type="text" name="txtBusqueda" id="txtBusqueda">
</label>
<input type="submit" name="cmdBuscar" id="cmdBuscar" value="IR">
</form>
este código xHTML lo podemos ver con la opción de Visualizar Código de Dreamweaver. En vez de haber hecho el formulario mediante Menú Insertar, podríamos haber escrito lo mismo y funcionaria igual, esta es la forma en que trabajan los programadores, como este tutorial esta hecho para Diseñadores y nuevos Programadores lo hacemos de las dos formas.
La parte de Diseño del Formulario, estaría completa, pasaremos ahora a la Programación necesaria para que se efectúe la Búsqueda.
Lo primero es indicar que debe pasar cuando presionamos el botón IR, de nuestro nuevo formulario. Esto lo hacemos con la sección action, que permite especificar que debe pasar cuando presionamos el botón Enviar o IR en un formulario.
En este caso, haremos que el Formulario llame el mismo listado que estamos viendo, y luego programaremos el listado para reconocer si debe mostrar todo, o si estamos realizando una Búsqueda. Mi archivo PHP del listado se llama busquedapropiedades.php, por tanto ese nombre debo usar en el action, esta línea:
debe quedar así:
Es importante que usen el mismo nombre de archivo, por tanto si le llamaron de otra forma lo deben tener en cuenta.
Si probamos hasta acá nuestra Busqueda de Propiadades, funcionara igual que como antes, o sea que muestra todo, debemos hacer que funcione como búsqueda, siempre y cuando se llame desde el botón IR. Para esto debemos establecer una condición que pregunte si se llamo desde el formulario, y en ese caso, realice el filtro correspondiente.
Esta condición modificará la selección de registros, mostrando todos como era antes, o mostrando solo los que coinciden con la búsqueda. Recordemos en nuestro listado, la siguiente línea de la entrega anterior del tutorial (Quinta Parte):
Esa línea, es la que selecciona todas las propiedades, y su correspondiente ciudad, tal como explicamos, la nueva condición debe filtrar los datos que coninciden con la búsqueda, quedando así:
En rojo esta el agregado, lo explico:
Hasta el momento, la condición era que propiedades.idciudad = ciudades.id, esto es que cada propiedad tuviera su ciudad, de manera de mostrar el nombre de la ciudad en el listado como explicamos en la entrega anterior.
Como hemos agregado otra condición utilizamos el AND, que significa Y, de manera que se debe cumplir la primer condición Y también esta otra que dice: propiedades.titulo LIKE ....blabla...
Explico esa parte:
LIKE permite comparar
$_POST identifica un valor enviado desde el formulario, en este caso trae los datos de txtBusqueda
% es un comodín que indica que ahí puede existir cualquier conjunto de texto
La condición, podría ser: propiedades.titulo = 'apartamento', pero esto haría que si o si deba ser identico a 'apartamento', por lo si el titulo dice 'apartamento 2do piso' no lo encontraria.
Para no hacer una igualdad tan rígida, no utilizamos =, utilizamos LIKE, y le damos mayor flexibilidad agregandole un comodín como el %, por ejemplo así:
propiedades.titulo LIKE 'apartamento%', esto quiere decir que busque un texto que diga 'apartamento' y luego cualquier conjunto de letras
por tanto todas estas son válidas:
'apartamento 2 ambientes'
'apartamento 3er piso'
'apartamento amoblado'
etc
para ampliar más la búsqueda hemos usado dos comodines %, uno delante y otro detras de manera que pueda aparecer cualquier titulo que contenga al comienzo, al medio o al final, la palabra 'apartamento'. También cabe destacar que al no utilizar =, y usar LIKE son válidos las palabras esten o no en mayúsculas o minúsculas, etc.
Lo último, es que no siempre buscaremos fijo la palabra 'apartamento', si no que sera cualquier palabra que enviamos mediante el formulario, por tanto si la condición es:
"... propiedades.titulo LIKE '%apartamento%' ... "
quedaría así:
"...AND propiedades.titulo LIKE '%" . $_POST['txtBusqueda'] . "%' ..."
recordando que $_POST['txtBusqueda'] es una variable que contiene la palabrita o las palabritas que escribimos para buscar en el formulario.
O sea que tenemos 2 posibilidades, una es cuando mostramos el listado por primera vez, sin ningún filtro, y otra es cuando presionamos en IR y debemos aplicar el filtro. Afortunadamente PHP, nos permite establecer diversos caminos a seguir segun sea o no el caso, para esto utilizamos if() que permite establecer justamente, un camino, según se cumpla una condición, o haga otra cosa si no se cumple. El código quedaria asi:
...
if (isset($_POST['txtBusqueda'])) { // esa es la condicion que debe cumplirse para el primer camino, y dice que si viene del formulario, haga el filtro
$tabla = mysql_query("SELECT propiedades.*, ciudades.* FROM propiedades, ciudades WHERE propiedades.idciudad = ciudades.id AND propiedades.titulo LIKE '%" . $_POST['txtBusqueda'] . "%' ORDER BY ciudades.nombre ASC"); // filtro para abrir la tabla con la condicion explicada recien
} else { // de otra forma, o sea si no viene del formulario, haga el filtro como estaba antes
$tabla = mysql_query("SELECT propiedades.*, ciudades.* FROM propiedades, ciudades WHERE propiedades.idciudad = ciudades.id ORDER BY ciudades.nombre ASC"); // sin filtro, muestra todo
} // fin del if
...
Si bien, incluí en letra italica (inclinada) la explicación de cada línea, les explico el significado de la condición:
if (isset($_POST['txtBusqueda'])) {
isset, es una función que da verdadero o falso si existe una determinada variable o parametro. Por tanto la linea se lee así,
si (existe el campo de formulario llamado txtBusqueda, haga lo siguiente...
Se entiende ??, si no es asi los espero en el foro jeje.
Les dejo el código xHTML con PHP, completo hasta acá, para poder descargar: Descargar PHP
En la próxima entrega, veremos el formulario de ingreso de ciudades y almacenamiento de eso en la base de datos.
Comentarios de Web de Bienes Raíces o Inmobiliarias - Parte 6, Búsquedas y Consultas MySQL
↑ Tutorial
ROBINSON
2009-10-15 17:52
gracias por su ayuda