Páginar

jgo
27 de Noviembre del 2003
Estoy tratando de paginar resultados y en los artículos que he visto sobre el tema siempre se llama al mismo script con diferentes valores para la función LIMIT o TOP y posteriormente otra consulta que nos devuelve el número de consultas afectadas.

En mi caso me interesa una consulta que me devuelva todas las tuplas y mediante algún tipo de conexión permanente recorrer el ‘recordset’, llamando al script con los valores apropiados, pero actualmente al cerrar el script se pierde el ‘recordset’ y no puede se puede volver a utilizar.

rargueso
27 de Noviembre del 2003
Yo lo hago asi:

#######################################
# Números de Página
#######################################
//Configuración de variables de página
$num_reg_pag=20; //N? de registros por pagina
//Contamos los registro para mostrar enlaces a las paginas
$sql="select id_familia from familias";
$consulta=@mysql_query($sql) or die (mysql_error());
$num_registros=@mysql_num_rows($consulta);
$num_paginas=( $num_registros - ($num_registros % $num_reg_pag) ) / $num_reg_pag;
if (($num_registros % $num_reg_pag)!=0) $num_paginas++;
//Controlamos que no se pase de la primera y ultima
if ($_GET["pag"]<1) {
$_GET["pag"]=1;
}
if ($_GET["pag"]>$num_paginas) {
$_GET["pag"]=$num_paginas;
}
//Mostramos enlaces
echo "<div align='center'>";
//Primera p?gina
echo "&nbsp;<a
href='".$_SERVER["PHP_SELF"]."?pag=1'><<-Inicio</a></font>&nbsp;";
//P?gina anterior
echo "&nbsp;<a href='".$_SERVER["PHP_SELF"]."?pag=".($_GET["pag"]-1)."'><-Anterior</a></font>&nbsp;";
for ($i=1; $i<=$num_paginas; $i++) {
if ($i==$_GET["pag"]) {
$fs="2";
} else {
$fs="1";
}
echo "&nbsp;<font size='".$fs."'><a href='".$_SERVER["PHP_SELF"]."?pag=".$i."'>".$i."</a></font>&nbsp;";
}
//P?gina anterior
echo "&nbsp;<a href='".$_SERVER["PHP_SELF"]."?pag=".($_GET["pag"]+1)."'>Siguiente-></a></font>&nbsp;"; //?ltima p?gina
echo "&nbsp;<a href='".$_SERVER["PHP_SELF"]."?pag=".$num_paginas."'>Fin->></a></font>&nbsp;";
echo "</div>"; //calculamos el registro de inicio
if (isset($_GET["pag"])) {
$registro_pagina=$num_reg_pag*($_GET["pag"]-1);
} else {
$registro_pagina=0;
}
#######################################
# Fin Numeros de Pagina
#######################################

Luego el query:

$sql="select * from familias order by nombre LIMIT ".$registro_pagina.",".$num_reg_pag;

A ver si te sirve