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