Taller Webmaster

Tutoriales para Webmasters

Bienvenido a Taller Webmaster, donde encontrarás la mejor información sobre tutoriales y recursos para webmasters!

Ingreso de Usuario

Recuperar contraseña

Registro de Usuario

Publicidad

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).

Insertar Campo de Texto

Cuando nos pida el nombre de la etiqueta, le indicaremos Buscar:, como indica la imagen, y luego le damos OK.

Etiqueta Buscar

Nos preguntara también si deseamos agregar un formulario, a lo cual le diremos YES (SI).

Agregar Formulario

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.

Campo de texto Buscar

Luego, nuevamente con Insert (Insertar), Form (Formulario), Button (Botón), para que nos quede el botón que presionaremos al realizar la búsqueda.

Boton IR, mostrar resultados de 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:

<form name="form1" method="post" action="">
<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:

<form name="form1" method="post" action="">

debe quedar así:

<form name="form1" method="post" action="busquedapropiedades.php">

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):

$tabla = mysql_query('SELECT propiedades.*, ciudades.* FROM propiedades, ciudades WHERE propiedades.idciudad = ciudades.id ORDER BY ciudades.nombre ASC');

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í:

$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");

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

    ROBINSON

    2009-10-15 17:52

    Buen Día. para este tutorial no tiene mas ejemplos con el if else, hasta el momento los primeros 5 tutoriales para mi han sido un exito, pero este no me funciona me indica que existe un error en el if else.

    gracias por su ayuda