Foros del Web » Programando para Internet » PHP »

buscador avanzado

Estas en el tema de buscador avanzado en el foro de PHP en Foros del Web. Hola a todos. Hasta el dia de hoy este buscador me funcionaba bien. El problema es que el usuario me ha dicho que no realiza ...
  #1 (permalink)  
Antiguo 09/05/2011, 04:37
 
Fecha de Ingreso: junio-2008
Mensajes: 291
Antigüedad: 15 años, 10 meses
Puntos: 9
buscador avanzado

Hola a todos. Hasta el dia de hoy este buscador me funcionaba bien. El problema es que el usuario me ha dicho que no realiza las búsquedas exactas con frases en uno cualquiera de los campos. Sé que debería utilizar fulltext , match against para solucionarlo, pero tal y como está programado no sé por donde meterle mano al asunto. Sugerencias? es urgente por favor. Mil gracias.
Este es el code:
Código PHP:
if (!isset($_GET['buscar'])){
$_pagi_sql "";

if (isset (
$autor) && !($autor == "")) {
$_pagi_sql .= " autor LIKE '%$autor%'";
}
if (isset (
$titulo) && !($titulo == "")) {
if (! (
$_pagi_sql == "")) {$_pagi_sql .= " AND "; }
$_pagi_sql .= " titulo LIKE '%$titulo%'";
}
if (isset (
$tema) && !($tema == "")) {
if (! (
$_pagi_sql == "")) {$_pagi_sql .= " AND "; }
$_pagi_sql .= " tema LIKE '%$tema%'";
}
if (isset (
$editorial) && !($editorial == "")) {
if (! (
$_pagi_sql == "")) {$_pagi_sql .= " AND "; }
$_pagi_sql .= " descripcion LIKE '%$editorial%'";
}
if (isset (
$precio) && !($precio == "")) {
if (! (
$_pagi_sql == "")) {$_pagi_sql .= " AND "; }
$_pagi_sql .= " precio LIKE '%$precio%'";
}
if (isset (
$fecha) && !($fecha == "")) {
if (! (
$_pagi_sql == "")) {$_pagi_sql .= " AND "; }
$_pagi_sql .= " descripcion LIKE '%$fecha%'";
}
if (isset (
$clave) && !($clave == "")) {
if (! (
$_pagi_sql == "")) {$_pagi_sql .= " AND "; }
$_pagi_sql .= " descripcion LIKE '%$clave%' OR titulo LIKE '%$clave%' OR autor LIKE '%$clave%' OR tema LIKE '%$clave%' ";
}
if (!(
$_pagi_sql == "")) {
$_pagi_sql "WHERE".$_pagi_sql;
}

$_pagi_sql "SELECT * FROM libros $_pagi_sql ORDER BY  autor ASC";
//if (isset ($bef) && !($bef == "")) {
//if (! ($pagi_sql == "")) {$pagi_sql .= " AND "; }
//$pagi_sql .= " data < '$bef'";
}else{
$_pagi_sql "SELECT * FROM libros WHERE autor LIKE  '%$autor%' AND titulo LIKE '%$titulo%' AND precio LIKE '%$precio%' AND descripcion LIKE '%$fecha%' AND descripcion LIKE '%$clave%' AND descripcion LIKE '%$editorial%' AND tema LIKE '%$tema%' AND titulo LIKE '%$pagi_sql%' AND autor LIKE '%$pagi_sql%' AND descripcion LIKE '%$pagi_sql%' AND tema LIKE '%$pagi_sql%'  order by autor asc";

  #2 (permalink)  
Antiguo 09/05/2011, 11:12
 
Fecha de Ingreso: junio-2008
Mensajes: 291
Antigüedad: 15 años, 10 meses
Puntos: 9
Respuesta: buscador avanzado

Alguna sugerencia por favor?
  #3 (permalink)  
Antiguo 09/05/2011, 11:24
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: buscador avanzado

si escribes una frase, por ejemplo:

"Esto es foros del web"

lo que en realidad deberías hacer es buscar cada una de las palabras por separado, para esto puedes usar explode() y guardar todas las palabras en un arreglo, luego pones todas las lineas de búsqueda dentro de un bucle foreach() usando cada una de esas palabras:

Código PHP:
Ver original
  1. if (isset ($autor) && !($autor == "")) {busqueda de autor tambien
  2.   $palabras=explode(" ",$autor);
  3.   foreach ($palabras as $palabra){
  4.     if (! ($_pagi_sql == "")) {$_pagi_sql .= " AND "; } //tendras que poner esto aquí
  5.     $_pagi_sql .= " autor LIKE '%$palabra%'";
  6.   }
  7. }

debes hacer lo mismo en todas las demás XD

Debería darte este resultado:

autor LIKE '%Esto%' AND autor LIKE '%es%' AND autor LIKE '%foros%' AND autor LIKE '%del%' AND autor LIKE '%web%'

ve si te resulta!
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #4 (permalink)  
Antiguo 09/05/2011, 11:37
 
Fecha de Ingreso: junio-2008
Mensajes: 291
Antigüedad: 15 años, 10 meses
Puntos: 9
De acuerdo Respuesta: buscador avanzado

Genial!!!! sabes que me has salvado? estaba desesperado por el cliente! te lo puedo agradecer de algún modo?


mil gracias!!!
  #5 (permalink)  
Antiguo 09/05/2011, 12:03
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: buscador avanzado

para eso estamos XD
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D

Etiquetas: avanzado, buscadores
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 11:06.