Me explico un poco. Tengo un buscador que hice con una combinacion de consultas de busqueda LIKE y FULLTEXT, e incorpore el famoso
paginator 1.5 para la respectiva paginacion.
Para que se muetren los resultados deben cumplirse una serie de condiciones la cuales se ejecutan en el codigo php y aqui esta el problema, para paginar los resultados, el paginator, cuenta todos los registros de la tabla, pero no respeta las condiciones por lo que al paginar no resulta lo esperado, es decir que por ejemplo, si existen 100 registros, me daria un total de 5 paginas de 20 registros por pagina, pero por las candiciones "if" solo se mostrarán "digamos" 40 registros, estos 40 registros se distribiran en las 5 paginas haciendo que no aparezcan 20 registros por pagina o incluso que existan paginas en blanco.
lo que quiero es hacer desde SQL
todo lo que hago con SQL/PHP para la cosulta de
búsqueda fulltext. Gracias de antemano
Este es el codigo
Código PHP:
<?
if ($accion == "buscar")
{//comienza if accion
if ($texto=="" && ($ciudad=="Ciudad" || $ciudad=="Todas") && ($cat=="Categoria" || $cat=="Todas"))
{echo"<h2>Puede dejar en blanco el campo de texto, pero debe seleccionar una ciudad y/o una categoria en la cual buscar</h2>";}
elseif(($ciudad=="Ciudad" || $ciudad=="Todas") && ($cat=="Categoria" || $cat=="Todas"))
{echo"<h2>Seleccione una Ciudad y/o una Categoria en la cual buscar su consulta.</h2>";}
else
{//comienza la busqueda en si
if($texto=="")
{$texto="a";}
include "conexion.php";
if ($texto<>''){
//CUENTA EL NUMERO DE PALABRAS
$trozos=explode(" ",$texto);
$numero=count($trozos);
if ($numero==1) {
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
$_pagi_sql="SELECT * FROM producto WHERE des LIKE '%$texto%' OR tit LIKE '%$texto%' OR llave LIKE '%$texto%'";
} elseif ($numero>1) {
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
//busqueda de frases con mas de una palabra y un algoritmo especializado
$_pagi_sql="SELECT * , MATCH (tit, des, llave) AGAINST ('$texto') AS puntuacion
FROM producto WHERE MATCH (tit, des, llave) AGAINST ('$texto')";
}
if($ciudad != "Todas" || $ciudad != "Ciudad")
{$_pagi_sql.=" AND ciudad='$ciudad'";}
if($cat != "Todas" || $cat != "Categoria")
{$_pagi_sql.=" AND cat='$cat'";}
if ($numero==1)
{$_pagi_sql.= " ORDER BY id";}
elseif ($numero>1)
{$_pagi_sql.=" ORDER BY puntuacion";}
$_pagi_cuantos = 3;
$_pagi_mostrar_errores = true;
include("paginator.inc.php");
while ($row = mysql_fetch_array($_pagi_result))
{//Mostramos los registos pedidos
if("$row['url']"=="")
{echo"<strong><font size=\"3\" color=\"0000FF\">$row['ciudad'] </font></strong><font size=\"1\" color=\"#9999CC\"> $row['ciudad']</font><br>";}
else
{echo"<a href=\"$row['ciudad']\" target=\"_blank\"><strong><font size=\"3\" color=\"0000FF\">$row['tit']
</font></strong></a><font size=\"1\" color=\"#9999CC\"> $row['ciudad']</font><br>";}
echo"$row['descripcion']<br>
<strong><font color=\"#CCCCCC\">$row['url']</font></strong><br><br>";
}//termina while
}
}//termina la busqueda en si
}//termina if accion
?>