Foros del Web » Programando para Internet » PHP »

Paginacion como el que se utiliza en este foro

Estas en el tema de Paginacion como el que se utiliza en este foro en el foro de PHP en Foros del Web. 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; ...
  #1 (permalink)  
Antiguo 13/09/2005, 12:38
Avatar de gabyweb  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 364
Antigüedad: 22 años, 3 meses
Puntos: 0
Paginacion como el que se utiliza en este foro

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>&nbsp;Coincidencia(s) encontrada(s) &nbsp;<b><em>
<? if($_GET['cod_rem']!=0 && $_GET['hid_control_botones']!="busca") echo $_GET['cod_rem']; ?></em></b></td>
<td width="4%">&nbsp;</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."\">&lt;&lt;</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."\">&gt;&gt;</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
__________________
Gaby :adios:
  #2 (permalink)  
Antiguo 13/09/2005, 12:51
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 8 meses
Puntos: 9
Bueno, no me da tiempo de una respuesta, pero estoy viendo muchísimos errores de síntaxis, por falta de llaves, usa el editor Zend , o de perdis el Dreamweaver, para ver tus errores. Posiblemente ahí tengas una solución.
  #3 (permalink)  
Antiguo 13/09/2005, 13:09
 
Fecha de Ingreso: junio-2003
Ubicación: Valencia
Mensajes: 334
Antigüedad: 20 años, 10 meses
Puntos: 0
Mira en las faqs pues hay un script que te pagina automaticamente y tal vez puedas modificarlo para que te sirva.
__________________
http://reunga.com
Desarrollo de aplicaciones informáticas
  #4 (permalink)  
Antiguo 15/09/2005, 13:10
Avatar de gabyweb  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 364
Antigüedad: 22 años, 3 meses
Puntos: 0
No son errores de sintaxis lo que pasa es que sólo he puesto las partes que se refieren a la paginación.
Hasta ahora funciona, sin embargo no estoy a gusto cómo lo hace, porque por ejemplo tengo un listado de 10 páginas en total. Me muestra el nro de páginas de 5 en 5, eso hasta ahí está bien, pero cuando le doy siguiente me desaparece la página 1.
Me gustaría también que haya la opción de ir a la primera o última página. Eso creo que el paginator no lo hace.
__________________
Gaby :adios:
  #5 (permalink)  
Antiguo 15/09/2005, 20:34
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Hola gabyweb:
La idea de Paginator, es mantener el proceso de paginación independiente del script que hace la consulta y muestra los datos.
Yo creo que Paginator sí cubriría tus espectativas, excepto por lo de ir a la primera y última página. pero no es algo demasiado complicado de agregar.
Si quieres contáctame po mp o por email y te envío una versión modificada de Paginator que incluye esos enlaces.

Muchos saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:14.