Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/11/2004, 21:36
Avatar de jota_22
jota_22
 
Fecha de Ingreso: noviembre-2004
Mensajes: 83
Antigüedad: 19 años, 5 meses
Puntos: 0
Ayuda paginacion de buscador php mysql

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
?>

Última edición por jota_22; 07/12/2004 a las 08:19 Razón: icluyo las condiciones desde el sql