El código que está situado más abajo es el que utilizo para la paginación de los resultados de mis busquedas en la db, el problema es que cuando ha encontrado por ejemplo 7 registros cuando el limite es 4 por página, me crea el indice de paginación correctamente pero cuando avando en el indice dando a un número del indice o dandole al enlace Siguiente >> al abrir dicha página en el nuevo documento me saca todos los registros de la tabla con todos los indices necesarios para la paginación, mi pregunta es porque se produce este error... , he revisado el código y la verdad no me lo explico si en un principio hace bien la paginación porque cuando avanzo por dicha paginación se estrope más adelante.
Espero haberme explicado claramente... a continuación pego el código.
Código PHP:
# definimos las variables iniciales de la paginación
if (!isset($pg))
$pg = 0; // $pg es la pagina actual
$cantidad=4; // cantidad de resultados por página
$inicial = $pg * $cantidad;
// se concatena la secuencias de campo LIKE '%palabra%' AND .. con el SQL
// si hace falta mas parámetros o condiciones .. añadir al final ...
$sql = "SELECT * FROM $tabla WHERE ".$secuencia_total." ORDER BY Titulo LIMIT $inicial,$cantidad";
# establecemos el criterio de seleccion
$resultado = mysql_query($sql, $conexion) or die ("Error en la consulta:\n<br><b>$sql</b><br>\nMySQL dice: ".mysql_error());
# contamos todos los registros de la tabla
$contar = "SELECT * FROM $tabla WHERE ".$secuencia_total." ORDER BY Titulo";
$contarok= mysql_query($contar, $conexion);
$total_records = mysql_num_rows($contarok);
$pages = intval($total_records / $cantidad);
# CREAMOS UNA CABEZERA DE UNA TABLA (codigo HTML)
echo "<table width='90%'cellpadding='0' cellspacing='0' align=center bgcolor='#EFEFEF' border=0>";
# establecemos un bucle que recoge en un array
# cada una de las LINEAS DEL RESULTADO DE LA CONSULTA
# utilizamos en esta ocasión <<myslq_fetch_array>>
# recuerda que esta ultima función devuelve un array escalar
# y otro asociativo con los resultados
while ($encontrados = mysql_fetch_array($resultado)){
echo "<tr><td height='20'> </td></tr>";
echo "<tr><td height='20' valign='middle' bgcolor='#003366'> <font face='arial' size='1'><strong><a href='".$encontrados['Url']."'>".$encontrados['Titulo']."</a></strong></font></td></tr>";
echo "<tr><td></td></tr>";
echo "<tr><td><font face='arial' size='1'><strong>".$encontrados['Descripcion'].".</strong></font></td></tr>";
echo "<tr><td><br></td></tr>";
}
echo "</table>";
# filtramos mediante un if (){...}else{... que no haya menos de 11 registros para no hacer la paginación
if ($pages < 1){
echo "";
}else{
# creando los enlaces de paginación
echo "<br><div align='center'><font face='Tahoma' size='1' color='#003366'><strong>Página de resultados</strong></font></div><div align='center'>";
if ($pg <> 0)
{
$url = $pg - 1;
echo "<a href='".$_SERVER[PHP_SELF]."?pg=".$url."'><font face='Arial' size='1' color='#FF0000'><strong>«Anterior</strong></font></a> ";
}
else {
echo "";
}
for ($i = 0; $i<($pages + 1); $i++) {
if ($i == $pg) {
echo "<font face='Tahoma' size=1 color='#003366'><strong>".($i+1)." </strong></font>";
}
else {
echo "<a href='".$_SERVER[PHP_SELF]."?pg=".$i."'><font face='Arial' size='1' color='#FF0000'><strong>".($i+1)."</strong></font></a> ";
}
}
if ($pg < $pages) {
$url = $pg + 1;
echo "<a href='".$_SERVER[PHP_SELF]."?pg=".$url."'><font face='Arial' size='1' color='#FF0000'><strong>Siguiente»</strong></font></a>";
}
else {
echo " ";
}
echo "</div>";
}
# comprobamos que no nos ha devuelto ningun resultado
if($vacio=mysql_num_rows($contarok)==0){
echo "<br><br><font face='arial' size='1'><strong>No se han encontrado coincidencias con la cadena <font color='#FF0000'>".$BUSCADOR."</font>.</strong></font>";
}
# cerramos la conexión
mysql_close();
?>