Foros del Web » Programando para Internet » PHP »

Problema con buscador complejo

Estas en el tema de Problema con buscador complejo en el foro de PHP en Foros del Web. Hola a todos: Pues como no puedo hacer una busqueda en modo booleano porque mi m...de servidor tiene una m...de version de mysql, pues estoy ...
  #1 (permalink)  
Antiguo 09/05/2005, 13:54
 
Fecha de Ingreso: enero-2005
Mensajes: 63
Antigüedad: 12 años, 11 meses
Puntos: 1
Problema con buscador complejo

Hola a todos:

Pues como no puedo hacer una busqueda en modo booleano porque mi m...de servidor tiene una m...de version de mysql, pues estoy intentando hacer un buscador complejo y me estoy volviendo loca.
Este es mi código y no funciona:

<?
//nos conectamos a mysql
$cnx = conectar ();

//inicializo el variables y recibo cualquier cadena que se desee buscar
if ($_GET["provincia"]!=""){
$txt_provincia = $_GET["provincia"];
}

if ($_GET["localidad"]!=""){
$txt_localidad = $_GET["localidad"];
}

if ($_GET["busqueda"]!=""){
$txt_busqueda=explode(" ", $_GET["busqueda"]);
}
if ($_GET["busqueda"]==""){
$_pagi_sql = "SELECT id,denominacion,imagen,telefono,movil,breve,direcc ion,provincia,localidad,categoria,descripcion,enla ce FROM empresas WHERE provincia = '" . $txt_provincia ."' AND localidad = '" . $txt_localidad ."' And deshabilitar = '' ORDER BY tipo DESC,denominacion ASC";
}else{
$_pagi_sql = "SELECT id,denominacion,imagen,telefono,movil,breve,direcc ion,provincia,localidad,categoria,descripcion,enla ce FROM empresas WHERE provincia = '" . $txt_provincia ."' AND localidad = '" . $txt_localidad ."' AND ";

for(@reset($txt_busqueda); list(, $palabra) = @each($txt_busqueda);
$_pagi_sql .= 'AND ') {
if($palabra!=""){
$_pagi_sql .= "categoria LIKE '%$palabra%' ";
}else{
$_pagi_sql .= "categoria LIKE '%*%' ";
}
}
$_pagi_sql = substr($_pagi_sql,0,-4);

$_pagi_sql .= " OR";
for(@reset($txt_busqueda); list(, $palabra) = @each($txt_busqueda);
$_pagi_sql .= 'AND ') {
if($palabra!=""){
$_pagi_sql .= " denominacion LIKE '%$palabra%' ";
}else{
$_pagi_sql .= "denominacion LIKE '%*%' ";
}
}
$_pagi_sql = substr($_pagi_sql,0,-4);

$_pagi_sql .= " OR";
for(@reset($txt_busqueda); list(, $palabra) = @each($txt_busqueda);
$_pagi_sql .= 'AND ') {
if($palabra!=""){
$_pagi_sql .= " breve LIKE '%$palabra%' ";
}else{
$_pagi_sql .= "breve LIKE '%*%' ";
}
}
$_pagi_sql = substr($_pagi_sql,0,-4);
$_pagi_sql .="And deshabilitar = '' ORDER BY tipo DESC,denominacion ASC";
}
y luego un bonito while que recorre la base de datos y me saca los resultados.
El problema es que si busco funerarias en provincia madrid y localidad alcalá me saca funerarias en torrejon y no se por qué. Este es el sql real que busca en la base de datos:
SELECT id,denominacion,imagen,telefono,movil,breve,direcc ion,provincia,localidad,categoria,descripcion,enla ce FROM empresas WHERE provincia like '%Madrid%' AND localidad like '%Alcalá de Henares%' AND categoria LIKE '%cementerio%' OR denominacion LIKE '%cementerio%' OR breve LIKE '%cementerio%' And deshabilitar = '' ORDER BY tipo DESC,denominacion ASC.

No se que es lo que hago mal, porque en teoria no debería sacar nada que no estuviera en Madrid y Alcalá de Henares...

Espero que podais ayudarme.
Un saludo a todos
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 15:16.