Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/01/2008, 12:56
Elisa85
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años, 2 meses
Puntos: 0
Paginación PHP + MySQL; Pierdo la consulta.

Hola a todos,
Antes que nada, he estado leyendo más problemas de paginación pero no he encontrado respuesta o solución a lo mio...

Estoy haciendo el mítico paginador con php y mysql. El problema que tengo es que al avanzar la página coge todos los registros (o filas) de la tabla sobre la cual realizo la consulta.

Tengo 2 paginas:
La primera es el formulario html donde recojo todos los datos.
En la segunda pagina, recojo estos datos mediante post, monto la consulta y hago la paginación.
Entiendo el problema, pero no sé como resolverlo. He probado pasando la consulta por la URL y recogerla con un $_GET pero no lo hago bien, también he intentado guardar la consulta en la BD, pero no la guarda bien por el tema de las ' ' de las variables....

Dejo el codigo a ver si me podéis echar una mano...
muchas gracias de antemano... me estáis ayudando mucho

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?
include "conexion.php";
$dbconectarse();

$cerca=$_POST['cerca']; $criteri=$_POST['criteri']; 
$iono=$_POST['iono']; 
$cerca2=$_POST['cerca2']; $criteri2=$_POST['criteri2'];
$tipus=$_POST['tipus']; $llengua=$_POST['llengua']; $nivell=$_POST['nivell'];
$editorial=$_POST['editorial']; $any=$_POST['any'];


$cons="SELECT * FROM catàleg WHERE Registre > 0 ";
if (
$cerca!="" && $criteri!=""){
    if (
$criteri == "tit"){
        
$cons $cons."AND Títol LIKE '%$cerca%' "//'%".$nom_proy."%
    
}else if ($criteri == "aut"){
        
$cons $cons."AND Autors LIKE '%$cerca%' ";
    }else if (
$criteri == "par"){
        
$cons $cons."AND MATCH (Títol, Autors, Descriptors, Resum, `camp lliure`) AGAINST ('$cerca') ";
    }else if (
$criteri == "mat"){
        
$cons $cons."AND Descriptors LIKE '%$cerca%' ";
    }else if (
$criteri == "ISBN"){
        
$cons $cons."AND ISBN = '$cerca' ";
    }
}

if (
$iono=="i"){ $cons $cons."AND "; }
if (
$iono=="o"){ $cons $cons."OR "; } 
if (
$iono=="no"){
    if (
$criteri2 == "tit"){ $cons $cons."AND Títol NOT LIKE '%$cerca2%' "//'%".$nom_proy."%
    
}else if ($criteri2 == "aut"){ $cons $cons."AND Autors NOT LIKE '%$cerca2%' ";
    }else if (
$criteri2 == "par"){ $cons $cons."AND NOT MATCH (Títol, Autors, Descriptors, Resum, `camp lliure`) AGAINST ('$cerca2') ";
    }else if (
$criteri2 == "mat"){ $cons $cons."AND Descriptors NOT LIKE '%$cerca2%' ";
    }else if (
$criteri == "ISBN"){ $cons $cons."AND ISBN != '$cerca2' ";
    }

}

if (
$cerca2!="" && $criteri2!="" && $iono!="no"){ 
    if (
$criteri2 == "tit"){ $cons $cons."Títol LIKE '%$cerca2%' "//'%".$nom_proy."%
    
}else if ($criteri2 == "aut"){ $cons $cons."Autors LIKE '%$cerca2%' ";
    }else if (
$criteri2 == "par"){ $cons $cons."MATCH (Títol, Autors, Descriptors, Resum, `camp lliure`) AGAINST ('$cerca2') ";
    }else if (
$criteri2 == "mat"){ $cons $cons."Descriptors LIKE '%$cerca2%' ";
    }else if (
$criteri == "ISBN"){ $cons $cons."ISBN = '$cerca2' ";
    }
}

if (
$tipus != "" && $tipus !="0"){ $cons =$cons."AND Material = '$tipus' "; }
if (
$llengua != "" && $llengua !="0"){ $cons=$cons."AND Llengua = '$llengua' "; }
if (
$nivell != "" && $nivell !="0"){ $cons=$cons."AND Nivell = '$nivell' "; }
if (
$editorial != ""){ $cons=$cons."AND Editor = '$editorial' "; }
if (
$any != ""){ $cons=$cons."AND Data = '$any' "; }    

//Fi de la construccio de la consulta sense limits

//Inici de calculs de la paginació.

    
$res=mysql_query($cons,$db);
    
$numeroRegistros=mysql_num_rows($res);   //Comptar el número de resultats
    
if ($numeroRegistros <=0){                 //Si no hi han resultats
        
echo "<div align='center'>";
        echo 
"<font face='verdana' size='-2'>No s'han trobat resultats</font>";
        echo 
"</div>";
    }else{
        
$tamPag=10;  //número de resultats per pàgina
        
$pagina=$_GET['pagina'];
        
        
//pàgina actual si no esta definida y limits
        
if(!isset($pagina))
        {
               
$pagina=1;
               
$inicio=1;
               
$final=$tamPag;
        }        
        
        
$limitInf=($pagina-1)*$tamPag;
        
        
//calculo del numero de paginas
        
$numPags=ceil($numeroRegistros/$tamPag);
        if(!isset(
$pagina))
        {
               
$pagina=1;
               
$inicio=1;
               
$final=$tamPag;
        }else{
            
$seccionActual=intval(($pagina-1)/$tamPag);
            
$inicio=($seccionActual*$tamPag)+1;

            if(
$pagina<$numPags)
            {
               
$final=$inicio+$tamPag-1;
            }else{
                
$final=$numPags;
            }
                
            if (
$final>$numPags){
                
$final=$numPags;
            }
        }
        
//        echo $cons;
        //////////creacion de la consulta con limites
        
$consLIM $cons."LIMIT ".$limitInf.",".$tamPag;
        
//echo $consLIM;
        
$result=mysql_query($consLIM,$db);
        
        echo 
"<div align='center'>";
        echo 
"<font face='verdana' size='-2'>Trobats ".$numeroRegistros." documents<br>";
        echo 
"</font></div>";
        
        echo 
"<table align='center' width='80%' border='0' cellspacing='1' cellpadding='0'>";
        echo 
"<tr><td colspan='4'><hr noshade></td></tr>";
        echo 
"<th bgcolor='#CCCCCC'>Seleccionar</a></th>";
        echo 
"<th bgcolor='#CCCCCC'>Código</a></th>";
        echo 
"<th bgcolor='#CCCCCC'>Títol</a></th>";
        echo 
"<th bgcolor='#CCCCCC'>Autors</a></th>";
        
        while(
$registre=mysql_fetch_array($result))
        {
?>
<!-- tabla de resultados -->
    <tr bgcolor="#CC6666" onMouseOver="this.style.backgroundColor='#FF9900';this.style.cursor='hand';" onMouseOut="this.style.backgroundColor='#CC6666'"o"];" onClick="javascript:muestra('<? echo "[".$registro["Registre"]."] ".$registro["Autors"]." - ".$registro["Títol"]; ?>');">
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><input name="sel" type="checkbox" value=""></b></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registre["Registre"]; ?></b></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registre["Autors"]; ?></b></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registre["Títol"]; ?></b></font></td>
  </tr>
<!-- fin tabla resultados -->
<?
        
}//fin while

            
echo "</table>";
    }
//fin if

            //////////a partir de aqui viene la paginacion
?>
    <br>
    <table border="0" cellspacing="0" cellpadding="0" align="center">
    <tr><td align="center" valign="top">
<?
    
if($pagina>1)
    {
        echo 
"<a class='p' href='".$_SERVER['PHP_SELF']."&?pagina=".($pagina-1)."'>";
        echo 
"<font face='verdana' size='-2'>anterior</font>";
        echo 
"</a>&nbsp;";
    }

    for(
$i=$inicio;$i<=$final;$i++)
    {
        if(
$i==$pagina)
        {
            echo 
"<font face='verdana' size='-2'><b>".$i."</b>&nbsp;</font>";
        }else{
            echo 
"<a class='p' href='".$_SERVER['PHP_SELF']."?pagina=".$i."'>";
            echo 
"<font face='verdana' size='-2'>".$i."</font></a>&nbsp;";
        }
    }
    if(
$pagina<$numPags)
    {
        echo 
"&nbsp;<a class='p' href='".$_SERVER['PHP_SELF']."?pagina=".($pagina+1)."'>";
        echo 
"<font face='verdana' size='-2'>siguiente</font></a>";    }
    
//////////fin de la paginacion
        
mysql_close($db);
?>
    </td></tr>
    </table>

</body>
</html>