Foros del Web » Programando para Internet » PHP »

Procesar un Buscador

Estas en el tema de Procesar un Buscador en el foro de PHP en Foros del Web. Gente, Hace rato vengo dandole vuelta del como procesar un formulario para un buscador, trabajado lo anterior con PHP + MySQL. Actualmente los campos que ...
  #1 (permalink)  
Antiguo 19/12/2006, 20:13
gcs
 
Fecha de Ingreso: enero-2004
Ubicación: Heredia, Costa Rica
Mensajes: 191
Antigüedad: 20 años, 3 meses
Puntos: 0
Procesar un Buscador

Gente,

Hace rato vengo dandole vuelta del como procesar un formulario para un buscador, trabajado lo anterior con PHP + MySQL.

Actualmente los campos que tengo son:

Codigo de la Propiedad
Tipo de Propiedad (Todos, Casa, Lote, Condominio, etc...)
Zona (Todas, Zona Sur, Zona Norte, Zona Oeste, etc...)
Precio en 2 campos maximo y minimo.

El dilema mental que me tengo es como al llevarlo por medio de post a la pagina de resultados cual es la mejor forma de hacer la validacion en PHP... si a punta de if's.... o con un case... porque si vemos bien son muchas opciones... por ejemplo:

Si viene el cogido de propiedad... pues no tiene caso preguntar por el resto de caracteristicas de busqueda porque estas dado con la propiedad exacta.

Si preguntas solo por el tipo de propiedad y dejas el resto de campos sabes que en el mysql solo buscas todas las propiedades registradas con ese nombre...

y asi sucesivamente para cada campo y mezcla de campos...

por eso mi pregunta es cual es la mejor LOGICA para trabajar eso.

Gracias
  #2 (permalink)  
Antiguo 20/12/2006, 00:06
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Re: Procesar un Buscador

pues ahora si que es tu regla del negocio pero yo creo que la hacer un query
podrias usar el like para cada campo

saludos
__________________
gerardo
  #3 (permalink)  
Antiguo 20/12/2006, 00:37
Avatar de Txane  
Fecha de Ingreso: febrero-2004
Ubicación: Morelia Michoacan
Mensajes: 272
Antigüedad: 20 años, 3 meses
Puntos: 2
Re: Procesar un Buscador

pues a grandes rasgos como dices primero haria un if al codigo de propiedad entonces la consulta seria directa y no se tomarian los demas factores.

si no se da el codigo de la propiedad entonces puedes hacer una serie de ifs a los elementos y si los lleno el usuario agregarle a tu query un AND y la siguiente prueba logica.

es decir puedes empesar con

$query="select * from tabla where 1"

y despues

if(isset($_POST["tipo_de_propiedad"])){
$query.=" AND tipo=".$_POST["tipo_de_propiedad"]
}

y asi te vas con cada uno
  #4 (permalink)  
Antiguo 20/12/2006, 08:31
gcs
 
Fecha de Ingreso: enero-2004
Ubicación: Heredia, Costa Rica
Mensajes: 191
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Procesar un Buscador

Muchas gracias... aunque esa idea mas o menos la tenia maquinada... lo que queria evitar era llenar de codigo a punta de if's porque eso equivale a 9 procesos identicos...

Por ahi leyendo me di cuenta que perfectamente puedo jugar con un solo IF.... pero utilizando en like '%' para cuando en los campos de busqueda diga TODOS LO CAMPOS....

El problema es que el contenido de por ejemplo: id_tipo_propiedad y id_zona son variables numericas y si por ejemplo trabajo con like '1' me va a buscar no solo el 1 si no cualquier numero que me lleve 1... asi que voy a tener que mezclar tu opcion m'as la del like...

en sintesis tengo algo asi...

Primero pregunto is viene el form...

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {

luego pregunto si en el form viene el campo de codigo de la propiedad...

if ($id_code != "") {

si viene hago un select normal... where id_propiedad = $_Post['codigo'];

} else {

si no viene el cogido entonces trabajo con los demas campos.. para lo cual hago un selec * where (A.id_tipo like '$id_type' and A.id_zone like '$id_zone' and A.precio between $price_min and $price_max)

El problema es que like buscara dentro de el campo cualquier registro que contenga por ejemplo el 1... osea me tira el 1... me tira el 11.... 21... 31.. 41.. etc.. etc...

Esa parte es la que voy a tener que solucionar a punta de if's :S
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:15.