Foros del Web » Programando para Internet » PHP »

Modificar Paginador

Estas en el tema de Modificar Paginador en el foro de PHP en Foros del Web. Estimados amigos, tengo instalado un paginador, pero al incluirlo en mi libro de visitas, tengo tantas paginas (cerca de 40) que se me agranda demasiado ...
  #1 (permalink)  
Antiguo 21/02/2005, 19:37
 
Fecha de Ingreso: diciembre-2004
Mensajes: 354
Antigüedad: 13 años
Puntos: 0
Modificar Paginador

Estimados amigos, tengo instalado un paginador, pero al incluirlo en mi libro de visitas, tengo tantas paginas (cerca de 40) que se me agranda demasiado la tabla y se ve feo el diseño del sitio (http://www.todoalbo.cl/2005/elmuro/index.php lo pueden ver)...bueno, resulta que quiera saber si alguien me puede ayudar con el paginador para poder modificarlo y que solo aparezcan 7 u 8 paginas, (vale decir, cuando se este en la 1, salga 2,3,4,5,6... Siguiente >> y que cuando se pase a la dos salga: << Anterior 3,4,5,6,7,8... Siguiente >> o algo parecido), bueno el codigo del paginador es:
Código PHP:
<?php
 
if(empty($_pagi_sql)){
    die(
"<b>Error Paginator : </b>No se ha definido la variable \$_pagi_sql");
 }
 
 if(empty(
$_pagi_cuantos)){

    
$_pagi_cuantos 20;
 }
 
 if(!isset(
$_pagi_mostrar_errores)){

    
$_pagi_mostrar_errores true;
 }

 if(!isset(
$_pagi_conteo_alternativo)){

    
$_pagi_conteo_alternativo false;
 }

 if (empty(
$_GET['_pagi_pg'])){

    
$_pagi_actual 1;
 }else{
        
$_pagi_actual $_GET['_pagi_pg'];
 }

 if(
$_pagi_conteo_alternativo == false){
     
$_pagi_sqlConta eregi_replace("select (.*) from""SELECT COUNT(*) FROM"$_pagi_sql);
     
$_pagi_result2 mysql_query($_pagi_sqlConta);
     if(
$_pagi_result2 == false && $_pagi_mostrar_errores == true){
        die (
" Error en la consulta de conteo de registros: $_pagi_sqlConta. Mysql dijo: <b>".mysql_error()."</b>");
     }
     
$_pagi_totalReg mysql_result($_pagi_result2,0,0);
 }else{
    
$_pagi_result3 mysql_query($_pagi_sql);

     if(
$_pagi_result3 == false && $_pagi_mostrar_errores == true){
        die (
" Error en la consulta de conteo alternativo de registros: $_pagi_sql. Mysql dijo: <b>".mysql_error()."</b>");
     }
    
$_pagi_totalReg mysql_num_rows($_pagi_result3);
 }

 
$_pagi_totalPags ceil($_pagi_totalReg $_pagi_cuantos);

 
$_pagi_enlace $_SERVER['PHP_SELF'];
 
$_pagi_query_string "?";
 
 if(isset(
$_pagi_propagar)){
    
    if(!
is_array($_pagi_propagar)){
        die(
"<b>Error Paginator : </b>La variable \$_pagi_propagar debe ser un array");
    }else{     

        foreach(
$_pagi_propagar as $var){
            
$_pagi_query_string.= $var."=".$GLOBALS[$var]."&";
        }
    }
    
 }else{

     if(isset(
$_GET)){

        
$_pagi_variables $_GET;
        foreach(
$_pagi_variables as $_pagi_clave => $_pagi_valor){
            if(
$_pagi_clave != '_pagi_pg'){
                
$_pagi_query_string .= $_pagi_clave."=".$_pagi_valor."&";
            }
        }
     }
 }

 
$_pagi_enlace .= $_pagi_query_string;
 
 
$_pagi_navegacion '';
 if (
$_pagi_actual != 1){
    
$_pagi_url $_pagi_actual 1
    
$_pagi_navegacion .= "<a href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>&laquo; Anterior</a>&nbsp;";
 }

 if(!isset(
$_pagi_nav_num_enlaces)){

    
$_pagi_nav_desde 1;
    
$_pagi_nav_hasta $_pagi_totalPags;
 }else{

    
$_pagi_nav_intervalo ceil($_pagi_nav_num_enlaces/2) - 1;

    
$_pagi_nav_desde $_pagi_actual $_pagi_nav_intervalo;
    
$_pagi_nav_hasta $_pagi_actual $_pagi_nav_intervalo;
    if(
$_pagi_nav_desde 1){
        
$_pagi_nav_hasta -= ($_pagi_nav_desde 1);
        
$_pagi_nav_desde 1;
    }
    if(
$_pagi_nav_hasta $_pagi_totalPags){
        
$_pagi_nav_desde -= ($_pagi_nav_hasta $_pagi_totalPags);
        
$_pagi_nav_hasta $_pagi_totalPags;
        if(
$_pagi_nav_desde 1){
            
$_pagi_nav_desde 1;
        }
    }
 }

 for (
$_pagi_i $_pagi_nav_desde$_pagi_i<=$_pagi_nav_hasta$_pagi_i++){
    if (
$_pagi_i == $_pagi_actual) {
        
$_pagi_navegacion .= "<b>&nbsp;$_pagi_i&nbsp;</b>";
    }else{
        
$_pagi_navegacion .= "<a href='".$_pagi_enlace."_pagi_pg=".$_pagi_i."'>".$_pagi_i."</a>&nbsp;";
    }
 }

 if (
$_pagi_actual $_pagi_totalPags){
    
$_pagi_url $_pagi_actual 1
    
$_pagi_navegacion .= "<a href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>Siguiente &raquo;</a>";
 }
 
$_pagi_inicial = ($_pagi_actual-1) * $_pagi_cuantos;
 

 
$_pagi_sqlLim $_pagi_sql." LIMIT $_pagi_inicial,$_pagi_cuantos";
 
$_pagi_result mysql_query($_pagi_sqlLim);

 if(
$_pagi_result == false && $_pagi_mostrar_errores == true){
     die (
"Error en la consulta limitada: $_pagi_sqlLim. Mysql dijo: <b>".mysql_error()."</b>");
 }

 
$_pagi_desde $_pagi_inicial 1;

 
$_pagi_hasta $_pagi_inicial $_pagi_cuantos;
 if(
$_pagi_hasta $_pagi_totalReg){

     
$_pagi_hasta $_pagi_totalReg;
 }
 
 
$_pagi_info "desde el $_pagi_desde hasta el $_pagi_hasta de un total de $_pagi_totalReg";

?>
y el que se usa para ver el paginador en el libro de visitas es:
[PHP]<?php
//Conexión a la base de datos
$con = mysql_connect("$host","$user","$pass") or die (mysql_error());
mysql_select_db("$db",$con) or die (mysql_error());
//Sentencia sql (sin limit)
$_pagi_sql = "SELECT * FROM elmuro ORDER BY id DESC";
//cantidad de resultados por página (opcional, por defecto 20)
$_pagi_cuantos = 10;
//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("paginator.php");
//Leemos y escribimos los registros de la página actual
while($row = mysql_fetch_array($_pagi_result))
{
echo '
<table width=480 height="0" border=0 align=center cellpadding=6 cellspacing=6 bgcolor=#CCCCCC>
<tr>
<td width="546" height="107" align=left bgcolor="#666666"><font face="Geneva, Arial, Helvetica, sans-serif" size="2"><b><font color="#FFFFFF">Nombre:&nbsp;</font></b></font><font color="#FFFFFF" size="2" face="Geneva, Arial, Helvetica, sans-serif">'.$row["nombre"].'<br>
<b>E-Mail: </b>'.$row["email"].'<b><br>
Asunto: </b> '.$row["asunto"].'<b><br>
</b> <b>Fecha:</b> '.$row["fecha"].'</font><font color="#FFFFFF" face="Geneva, Arial, Helvetica, sans-serif"><br><br>
<font size="2"><b>Mensaje:</b><br>';
echo nl2br($row["mensaje"]);
echo '<br>
<font size="1"><b>Ip: </b>'.$row["ip"].'</font></font></font></td>
</tr>
</table><br>';
}
//Incluimos la barra de navegación
echo '<table width=480 height="18" border=0 align="center" cellpadding=0 cellspacing=0 bordercolor="#000000" bgcolor="#FFFFFF">
<tr>
<td width="667" height="1" align=center bordercolor="#FF0000" bgcolor="#CCCCCC"><font face="Geneva, Arial, Helvetica, sans-serif" size="2">'.$_pagi_navegacion.'</font></td>
</tr>
</table><br>';
?>PHP]
por favor alguien que me ayude!!
__________________
Pedro Pablo Vivanco D.
Webmaster todoalbo.cl
[email protected]
http://www.todoalbo.cl
"Dios creo el Cielo, Colo-Colo le puso todas sus Estrellas"
  #2 (permalink)  
Antiguo 21/02/2005, 20:10
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Bueno... veo que utilizas Paginator.
Desde la versión 1.4 (y tu utilizas una superior), Paginator te provee de una variable que especifica cuántos enlaces quieres mostrar como máximo en la barra de navegación entre páginas. Así que no tienes que cambiar nada en Paginator... simplemete agregar una línea de código con esa variable.
La variable es $_pagi_nav_num_enlaces.
Para mayor información, consulta la documentación:
(El enlace está en mi firma)
Ve a la sección de ejemplos y de ahí a "ejemplo_avanzado"

Para cualquier duda, puedes utilizar la sección de comentarios/dudas de la web, enviarme un mail o regresar a este foro.

Saludos
  #3 (permalink)  
Antiguo 21/02/2005, 20:28
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Este es el enlace directo al ejemplo:
http://jpinedo.webcindario.com/scrip..._avanzado.html

Saludos
  #4 (permalink)  
Antiguo 21/02/2005, 20:38
 
Fecha de Ingreso: diciembre-2004
Mensajes: 354
Antigüedad: 13 años
Puntos: 0
Gracias amigo! te pasaste y felicitaciones por Paginator..me ha ayudado demasiado!! jejeje
__________________
Pedro Pablo Vivanco D.
Webmaster todoalbo.cl
[email protected]
http://www.todoalbo.cl
"Dios creo el Cielo, Colo-Colo le puso todas sus Estrellas"
  #5 (permalink)  
Antiguo 21/02/2005, 20:55
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Ok... te he enviado un MP con algunas cuestiones que considero importantes.

Qué bueno que hayas superado tu problema.
Si tienes más sugerencias o necesitas alguna funcionalidad extra, por favor házmela llegar directamente (a través de la web, de mi mail, o un mp del foro). De esa manera las mejoras que se hacen se pueden compartir con todos los usuarios.

Un saludo y gracias por los comentarios

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 02:32.