Identificarte

Versión Completa : Construir un buscador Avanzado en PHP + MySQL


Sponsored links
.




byteheadx
enero 23, 2007, 11:14
Hola a todos.... tengo una duda que hace ratos me causa inquietud.

Resulta que tengo que construir un buscador de mercancia y el buscador es al estilo de los de newegg ejemplo (http://www.newegg.com/ProductSort/SubCategory.asp?SubCategory=71&name=CD-DVD-R-RW-Media)

La idea es construirlo con lista menus (estos contienen informacion de la base de datos)

y bueno el criterio de esa busqueda seria casi indefinido porque asi como el usuario puede buscar solo por 1 lista menu como por todos.

yo anteriomente lo he constuido pero las consultas las genero deacuerdo al criterio de busqueda seleccionado, mirar aquí (www.xpeedsystem.com)

la pregunta ¿es posible crear una sola consulta en mysql y que dependiendo de lo que seleccione el usuario ella descarte las que variables vacias y solo use como criterio las variables que se le envien de los lista menu?

muchas gracias a todos

RogerJose
enero 23, 2007, 09:40
Hola a todos.... tengo una duda que hace ratos me causa inquietud.
la pregunta ¿es posible crear una sola consulta en mysql y que dependiendo de lo que seleccione el usuario ella descarte las que variables vacias y solo use como criterio las variables que se le envien de los lista menu?
muchas gracias a todos

A mi se me ocurre que podria generar la consulta sql dinamicamente. El punto de partida seria que no se eligieran filtros de busqueda (consultaBase), luego iria preguntando que filtros se eligieron y los iria añadiendo a la consulta sql. Podria ser algo asi:

String consultaBase = “SELECT id,nombre FROM Productos”;

String filtro = “”;

// Si especificaron que el producto no debia superar un determinado precio
if(op1 != null){
filtro = “ “ + “precio<=”+valorPrecio;
}

// Si eligieron que el producto deberia pertenecer a una determinada categoria
if(op2 != null){
if(!filtro.equals(“”)){
filtro += “ “ + “AND“;
}
filtro = filtro + “ “ + “categoría=”+valorCategoria;
}

// seguimos añadiendo campos para filtrar los registros....


if(!filtro.equals(“”)){
filtro = “ “ + “WHERE“ + filtro;
}

String consultaFinal = consultaBase + filtro;

byteheadx
enero 24, 2007, 12:50
ok entidiendo ese enfoque ... lo voy a probar a ver que tal me va...
de todos modos si a alguien se le ocurre otra sugerencia bienvenida sera.

Muchas gracias

PD: esto es mas o menos la forma como lo estoy trabajando.

//consulta para mostrar datos
if(!$marca_cam){
if(!$mp_cam){
$consulta=mysql_query("SELECT * FROM $seccion WHERE stock_camara='si' ORDER BY marca_camara ASC"); //Consulta a la tabla de camaras digitales
$reg_num_fab=mysql_num_rows($consulta);
$total_paginas = ceil($reg_num_fab / $max_pagina);
}else{
$consulta=mysql_query("SELECT * FROM $seccion WHERE megapixel_camara='$mp_cam' AND stock_camara='si' ORDER BY marca_camara, precio_camara ASC"); //Consulta a la tabla de camaras digitales
$reg_num_fab=mysql_num_rows($consulta);
$total_paginas = ceil($reg_num_fab / $max_pagina);
}
}else{
if(!$mp_cam){
$consulta=mysql_query("SELECT * FROM $seccion WHERE marca_camara='$marca_cam' AND stock_camara='si' ORDER BY marca_camara, precio_camara ASC"); //Consulta a la tabla de camaras digitales
$reg_num_fab=mysql_num_rows($consulta);
$total_paginas = ceil($reg_num_fab / $max_pagina);
}else{
$consulta=mysql_query("SELECT * FROM $seccion WHERE marca_camara='$marca_cam' AND megapixel_camara='$mp_cam' AND stock_camara='si' ORDER BY marca_camara, precio_camara ASC"); //Consulta a la tabla de camaras digitales
$reg_num_fab=mysql_num_rows($consulta);
$total_paginas = ceil($reg_num_fab / $max_pagina);
}
}

hell await
enero 24, 2007, 12:34
Puedes meterle algo de búsquedas inteligentes :D mmmm lenguaje natural tal vez

byteheadx
enero 24, 2007, 01:26
Puedes meterle algo de búsquedas inteligentes :D mmmm lenguaje natural tal vez


explicate un poco mejor.
gracias.

hell await
enero 24, 2007, 04:14
http://www.google.com.co/search?hl=es&q=tratamiento+lenguaje+natural&btnG=B%C3%BAsqueda+en+Google&meta=

En resumen te permitiria tener un buscador donde el usuario escribe lo que quiere como lo quiere y tu buscador seria capáz de interpretar y buscar acertadamente.

byteheadx
enero 27, 2007, 03:52
http://www.google.com.co/search?hl=es&q=tratamiento+lenguaje+natural&btnG=B%C3%BAsqueda+en+Google&meta=

En resumen te permitiria tener un buscador donde el usuario escribe lo que quiere como lo quiere y tu buscador seria capáz de interpretar y buscar acertadamente.

La idea es generar Lista/menus con informacion proveniente de la base de datos .... no que el usuario digite. de todos modos gracias por la informacion.... esta muy interesante para futuros proyectos.