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
![sonriente](http://static.forosdelweb.com/fdwtheme/images/smilies/smile.png)
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ítulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?
include "conexion.php";
$db= conectarse();
$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> ";
}
for($i=$inicio;$i<=$final;$i++)
{
if($i==$pagina)
{
echo "<font face='verdana' size='-2'><b>".$i."</b> </font>";
}else{
echo "<a class='p' href='".$_SERVER['PHP_SELF']."?pagina=".$i."'>";
echo "<font face='verdana' size='-2'>".$i."</font></a> ";
}
}
if($pagina<$numPags)
{
echo " <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>