busquedad php

Download Busquedad Php

Post on 21-Nov-2014

104 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

Hola santi... estoy por probar el cdigo que me enviaste, muchas gracias nuevamente y ya te contar. Pero tengo una duda con el cdigo anterior que me funcion de maravilla y te cuento lo que no me sale... Tengo ya las 3 tablas... provincias, localidades, zonas... y la tabla empresas. En el resultado de la consulta con las listas desplegables, los campos aparecen as: id_empresa id_provincia id_localidad id_zona nombre 1 1 1 1 Resto Marx As como est, funciona PERFECTO y me trae el resultado completo de la info que le ped desde las listas desplegables y el cdigo que utilic es este: Cdigo PHP:// conexion a la base $conexion = ...... // realizar esta funcin si se apret el botn de enviar en el formula rio de busqueda if (isset($_POST['action']) && $_POST['action'] == 'submit') //if(isset($_POST['boton'])) // declarar variables los datos del formulario $select1 = $_POST['select1' ]; $select2 = $_POST['select2' ]; $select3 = $_POST['select3' ]; { // declarar las condiciones usando la opcin WHERE, dependiendo de lo enviado en el formulario // ms info WHERE: http://newsourcemedia.com/home.php?view=82 $condiciones = ""; if ($select1 != "") $condiciones .= "WHERE id_provincia = $select1" ; if ($select2 != "" && $condiciones != "") $condiciones .= " AND $selec t2 = id_localidad" ; if ($select2 != "" && $condiciones == "") $condiciones .= " WHERE $sel ect2 = id_localidad" ; if ($select3 != "" && $condiciones != "") $condiciones .= " AND $selec t3 = id_zona"; if ($select3 != "" && $condiciones == "") $condiciones .= " WHERE $sel ect3 = id_zona"; // imprimir resultados normalmente echo ''; '; echo ' echo ' ID< /td>'; echo ' PROVINCIA' ; echo ' LOCALIDAD' ; ZONA

this code source... -reply by Prashanth

En esta entrega, elQuique nos ensea, como realizar un formulario de bsqueda en nuestro reporte, de manera de localizar fcilmente las propiedades ingresadas. Esta bsqueda podr ser adaptada a cualquier tipo de bsqueda 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 Bsqueda para localizar fcilmente 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 imgen).

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

Nos preguntara tambin 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 (Botn), para que nos quede el botn que presionaremos al realizar la bsqueda.

Este botn, tambin es importante personalizarlo, lo vamos a Seleccionar (1 en la imgen), como valor le indicaremos IR (2 en la imgen), de manera que es sea el texto que muestra el botn, y de nombre le indicaremos cmdBuscar (3 en la imagen). El cdigo final del formulario generado, es el siguiente: Buscar: este cdigo xHTML lo podemos ver con la opcin de Visualizar Cdigo de Dreamweaver. En vez de haber hecho el formulario mediante Men Insertar, podramos haber escrito lo mismo y funcionaria igual, esta es la forma en que trabajan los programadores, como este tutorial esta hecho para Diseadores y nuevos Programadores lo hacemos de las dos formas.

La parte de Diseo del Formulario, estara completa, pasaremos ahora a la Programacin necesaria para que se efecte la Bsqueda. Lo primero es indicar que debe pasar cuando presionamos el botn IR, de nuestro nuevo formulario. Esto lo hacemos con la seccin action, que permite especificar que debe pasar cuando presionamos el botn 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 Bsqueda. Mi archivo PHP del listado se llama busquedapropiedades.php, por tanto ese nombre debo usar en el action, esta lnea: 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 bsqueda, siempre y cuando se llame desde el botn IR. Para esto debemos establecer una condicin que pregunte si se llamo desde el formulario, y en ese caso, realice el filtro correspondiente. Esta condicin modificar la seleccin de registros, mostrando todos como era antes, o mostrando solo los que coinciden con la bsqueda. Recordemos en nuestro listado, la siguiente lnea de laentrega 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 lnea, es la que selecciona todas las propiedades, y su correspondiente ciudad, tal como explicamos, la nueva condicin debe filtrar los datos que coninciden con la bsqueda, 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 condicin 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 condicin utilizamos el AND, que significa Y, de manera que se debe cumplir la primer condicin Y tambin 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 comodn que indica que ah puede existir cualquier conjunto de texto La condicin, podra ser: propiedades.titulo = 'apartamento', pero esto hara 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 rgida, no utilizamos =, utilizamos LIKE, y le damos mayor flexibilidad agregandole un comodn 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 vlidas: 'apartamento 2 ambientes' 'apartamento 3er piso' 'apartamento amoblado' etc para ampliar ms la bsqueda 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'. Tambin cabe destacar que al no utilizar =, y usar LIKE son vlidos las palabras esten o no en maysculas o minsculas, 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 condicin es: "... propiedades.titulo LIKE '%apartamento%' ... " quedara 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 ningn 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, segn se cumpla una condicin, o haga otra cosa si no se cumple. El cdigo 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 explicacin de cada lnea, les explico el significado de la condicin: if (isset($_POST['txtBusqueda'])) { isset, es una funcin 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 cdigo xHTML con PHP, completo hasta ac, para poder descargar: Descargar PHP En la prxima entrega, veremos el formulario de ingreso de ciudades y almacenamiento de eso en la base de datos.

hola soy webmaster_jj tengo el mismo porblema de este amigos de que quieres hacer un formulario que me haga una busqueda en mi base de datos pero el problema es que me hace la busqueda pero solo de la primera obcion digamos que tengo mi formulario marca modelo ao pieza y el boton de buscar cuando lleno estos campos de texto en mi buscado solo me sale las considencias que busco digamos que si yo le puse a mi formulario esto en los campos marca:honda modelo:Civic ao:2009 pieza:bomba de agua me arrojael resultado que bien