Hola, tengo un código de pagiación que funciona muy bien.
<?session_start();
include("../../librerias/base_datos_lib.php");
include("../../clases/class_remitente.php");
?>
<html>
<head>
<script>
//Cantidad de registros que contendrá cada página
$tamanopag=20;
//paginamos
//examino la página a mostrar y el inicio del registro a mostrar
if(!isset($_GET['pagina'])) {
$pagina="";
} else {
$pagina = $_GET["pagina"];
}
if (!$pagina) {
$inicio = 0;
$pagina=1;
} else {
$inicio=($pagina-1)*$tamanopag;
}
if(!isset($_GET['flag'])) {
$flag=0;
} else {
$flag = $_GET['flag'];
}
if(!isset($_GET['hid_control_botones'])) $_GET['hid_control_botones']="";
if(!isset($_GET['crit'])) {
$_GET['crit']="";
}else{
if ($_GET['crit']=="ID") $_GET['hid_control_botones']="busca";
if ($_GET['crit']=="D") $_GET['hid_control_botones']="busca_descrip";
}
//artificio para realizar busqueda por codigo, se cumple la condicion
//cuando se agrega un remitente y luego se reenvia con el codigo del remitente ingresado,
//en el campo que corresponde a la descripcion
if($_GET['hid_control_botones']=="busca")
{
$query_total_reg="SELECT count(*) FROM t_organizacion ";
$query_total_reg=$query_total_reg."where id_organizacion=".$_GET['cod_rem'];
$query_total_reg=$query_total_reg." AND nivel_organizacion='E' AND estado_organizacion NOT LIKE '0'";
$res_tot=ejecutar($query_total_reg);
$flag=1;
$objRemitente=new remitente;
$resul_busca_rem=$objRemitente->busca_remitente("ID",$_GET['cod_rem'],$salto_lista,$inicio);
$rem_encontrados=cuenta_registros($resul_busca_rem );
}
if($_GET['hid_control_botones']=="busca_descrip")
{
$query_total_reg="SELECT count(*) FROM t_organizacion ";
$query_total_reg=$query_total_reg." where UPPER(descripcion_organizacion) like '%".utf8_encode(strtoupper($_GET['cod_rem']))."%'";
$query_total_reg=$query_total_reg." AND nivel_organizacion='E' AND estado_organizacion NOT LIKE '0'";
$res_tot=ejecutar($query_total_reg);
$flag=1;
$objRemitente=new remitente;
$resul_busca_rem=$objRemitente->busca_remitente("D",$_GET['cod_rem'],$tamanopag,$inicio);
$rem_encontrados=cuenta_registros($resul_busca_rem );
}
if($rem_encontrados>0 || isset($_GET['proc']) || $_GET['hid_control_botones']=="agregar")
{ // si se encuentra registros en la busqueda
//calculo el total de páginas
if ($flag==1) {
$total_registros=pg_fetch_row($res_tot);
//La función CEIL Redondea las fracciones
$total_pag = ceil($total_registros[0]/$tamanopag);
if ($total_registros[0]==0) { ?>
<table width="256" border="0" align="center">
<tr>
<td colspan="2"><div align="center"><em>No se encontraron registros</em></div></td>
</tr>
</table>
<?
}
}?>
<tr align="center">
<td height="53" colspan="3" class="clsPageHeader">Remitentes coincidentes</td>
</tr>
<tr>
<td height="25" colspan="3">
<table width="100%" border="0">
<tr>
<td width="65%"><B><? echo ($rem_encontrados) ?></B> Coincidencia(s) encontrada(s) <b><em>
<? if($_GET['cod_rem']!=0 && $_GET['hid_control_botones']!="busca") echo $_GET['cod_rem']; ?></em></b></td>
<td width="4%"> </td>
<td width="*">Busqueda : </td>
<td width="16%"><input type="text" name="cod_rem" class="clsTexto01" onkeypress="if (event.keyCode==13) { buscar_remitente(); }"></td>
<input type=hidden name="crit" value="">
<td width="7%"><input name="btn_buscar" type="button" class="boton_small" id="btn_buscar" value="Buscar" onClick="buscar_remitente();"></td>
</tr>
</table>
</td>
</tr>
//*AQUI IMPRIMO LOS NRO DE PAGINAS ***//
//muestro los distintos índices de las páginas, si es que hay varias páginas
if ($flag==1) { ?>
<tr><td colspan=3 align=center>
<table border=0 width="*" align=center>
<tr>
<?
if ($pagina!=1) {
echo "<td><a href=\"".$_SERVER['PHP_SELF']."?crit=".$_GET['crit']."&cod_rem=".$_GET['cod_rem']."&hid_control_botones=".$_GET['hid_control_botones']."&proc=ingreso_doc_ext&nivel_usu=".$_SESSION['NIVC']."&flag=".$flag."&pagina=";
$previa=$pagina-1;
echo $previa."\"><<</a></td>";
}
for ($i=1; $i<=$total_pag; $i++) {
if ($pagina !=$i) {
echo "<td><a href=\"".$_SERVER['PHP_SELF']."?crit=".$_GET['crit']."&cod_rem=".$_GET['cod_rem']."&hid_control_botones=".$_GET['hid_control_botones']."&proc=ingreso_doc_ext&nivel_usu=".$_SESSION['NIVC']."&flag=".$flag."&pagina=".$i."\">".$i."</a></td>";
} else {
if ($total_pag!=1) {
echo "<td>".$i."</td>";
}
}
}
if ($pagina<$total_pag) {
echo "<td><a href=\"".$_SERVER['PHP_SELF']."?crit=".$_GET['crit']."&cod_rem=".$_GET['cod_rem']."&hid_control_botones=".$_GET['hid_control_botones']."&proc=ingreso_doc_ext&nivel_usu=".$_SESSION['NIVC']."&flag=".$flag."&pagina=";
$post=$pagina+1;
echo $post."\">>></a></td>";
}
}
?>
</tr></table>
?>
</form>
</center>
</body>
</html>
Cuando no ingreso ningún criterio de búsqueda aparecen todos los registros. El problema es que cuando hace ésto, muestra todos los números de páginas por ejemplo : 1 2 3 4 5 6 7 8 9 10 11 12... y así sucesivamente hasta el 257.
Qué debo hacer para que sólo me muestre los números de páginas de 5 en 5?
Gracias de antemano