Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/09/2011, 22:37
bienpiyao
 
Fecha de Ingreso: agosto-2009
Mensajes: 216
Antigüedad: 14 años, 8 meses
Puntos: 3
Problemas con paginator

Hola cracks,

Estoy usando el paginator de Jorge Pinedo en mi web. Funciona todo a la perfección, excepto que si una sección tiene por ejemplo 50 páginas, me muestra en el footer las 50 páginas en lugar de, por ejemplo, 20, y el resto "ocultas".

Alguien sabe cómo puedo limitar el número de páginas que aparecen en el footer?

Os dejo el script:

Código PHP:
/*
 * Establecimiento de la página actual.
 *------------------------------------------------------------------------
 */
 
if (empty($_GET['_pagi_pg'])){
    
// Si no se ha hecho click a ninguna página específica
    // O sea si es la primera vez que se ejecuta el script
        // $_pagi_actual es la pagina actual-->será por defecto la primera.
    
$_pagi_actual 1;
 }else{
    
// Si se "pidió" una página específica:
    // La página actual será la que se pidió.
        
$_pagi_actual $_GET['_pagi_pg'];
 }
//------------------------------------------------------------------------


/*
 * Establecimiento del número de páginas y del total de registros.
 *------------------------------------------------------------------------
 */
 // Contamos el total de registros en la BD (para saber cuántas páginas serán)
 // La forma de hacer ese conteo dependerá de la variable $_pagi_conteo_alternativo
 
if($_pagi_conteo_alternativo == false){
 
     
$patron "/SELECT\s\\*\sFROM/";
     
$_pagi_sqlConta preg_replace($patron"SELECT COUNT(*) FROM"$_pagi_sql);
     
$_pagi_result2 mysql_query($_pagi_sqlConta);
    
// Si ocurrió error y mostrar errores está activado
     
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);//total de registros
 
}else{
    
$_pagi_result3 mysql_query($_pagi_sql);
    
// Si ocurrió error y mostrar errores está activado
     
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);
 }
 
// Calculamos el número de páginas (saldrá un decimal)
 // con ceil() redondeamos y $_pagi_totalPags será el número total (entero) de páginas que tendremos
 
$_pagi_totalPags ceil($_pagi_totalReg $_pagi_cuantos);

//------------------------------------------------------------------------


/*
 * Propagación de variables por el URL.
 *------------------------------------------------------------------------
 */
 // La idea es pasar también en los enlaces las variables hayan llegado por url.
 
$_pagi_enlace $_SERVER['PHP_SELF'];
 
$_pagi_query_string "?";
 
 if(!isset(
$_pagi_propagar)){
     
//Si no se definió qué variables propagar, se propagará todo el $_GET (por compatibilidad con versiones anteriores)
    //Perdón... no todo el $_GET. Todo menos la variable _pagi_pg
    
if (isset($_GET['_pagi_pg'])) unset($_GET['_pagi_pg']); // Eliminamos esa variable del $_GET
    
$_pagi_propagar array_keys($_GET);
 }elseif(!
is_array($_pagi_propagar)){
    
// si $_pagi_propagar no es un array... grave error!
    
die("<b>Error Paginator : </b>La variable \$_pagi_propagar debe ser un array");
 }
 
// Este foreach está tomado de la Clase Paginado de webstudio
 // (http://www.forosdelweb.com/showthread.php?t=65528)
 
foreach($_pagi_propagar as $var){
     if(isset(
$GLOBALS[$var])){
        
// Si la variable es global al script
        
$_pagi_query_string.= $var."=".$GLOBALS[$var]."&";
    }elseif(isset(
$_REQUEST[$var])){
        
// Si no es global (o register globals está en OFF)
        
$_pagi_query_string.= $var."=".$_REQUEST[$var]."&";
    }
 }

 
// Añadimos el query string a la url.
 
$_pagi_enlace .= $_pagi_query_string;
 
//------------------------------------------------------------------------


/*
 * Generación de los enlaces de paginación.
 *------------------------------------------------------------------------
 */
 // La variable $_pagi_navegacion contendrá los enlaces a las páginas.
 
$_pagi_navegacion_temporal = array();
 if (
$_pagi_actual != 1){
    
// Si no estamos en la página 1. Ponemos el enlace "primera"
    
$_pagi_url 1//será el número de página al que enlazamos
    
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_primera</a>";

    
// Si no estamos en la página 1. Ponemos el enlace "anterior"
    
$_pagi_url $_pagi_actual 1//será el número de página al que enlazamos
    
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_anterior</a>";
 }
 
 
// La variable $_pagi_nav_num_enlaces sirve para definir cuántos enlaces con 
 // números de página se mostrarán como máximo.
 // Ojo: siempre se mostrará un número impar de enlaces. Más info en la documentación.
 
 
if(!isset($_pagi_nav_num_enlaces)){
    
// Si no se definió la variable $_pagi_nav_num_enlaces
    // Se asume que se mostrarán todos los números de página en los enlaces.
    
$_pagi_nav_desde 1;//Desde la primera
    
$_pagi_nav_hasta $_pagi_totalPags;//hasta la última
 
}else{
    
// Si se definió la variable $_pagi_nav_num_enlaces
    // Calculamos el intervalo para restar y sumar a partir de la página actual
    
$_pagi_nav_intervalo ceil($_pagi_nav_num_enlaces/2) - 1;
    
    
// Calculamos desde qué número de página se mostrará
    
$_pagi_nav_desde $_pagi_actual $_pagi_nav_intervalo;
    
// Calculamos hasta qué número de página se mostrará
    
$_pagi_nav_hasta $_pagi_actual $_pagi_nav_intervalo;
    
    
// Ajustamos los valores anteriores en caso sean resultados no válidos
    
    // Si $_pagi_nav_desde es un número negativo
    
if($_pagi_nav_desde 1){
        
// Le sumamos la cantidad sobrante al final para mantener el número de enlaces que se quiere mostrar. 
        
$_pagi_nav_hasta -= ($_pagi_nav_desde 1);
        
// Establecemos $_pagi_nav_desde como 1.
        
$_pagi_nav_desde 1;
    }
    
// Si $_pagi_nav_hasta es un número mayor que el total de páginas
    
if($_pagi_nav_hasta $_pagi_totalPags){
        
// Le restamos la cantidad excedida al comienzo para mantener el número de enlaces que se quiere mostrar.
        
$_pagi_nav_desde -= ($_pagi_nav_hasta $_pagi_totalPags);
        
// Establecemos $_pagi_nav_hasta como el total de páginas.
        
$_pagi_nav_hasta $_pagi_totalPags;
        
// Hacemos el último ajuste verificando que al cambiar $_pagi_nav_desde no haya quedado con un valor no válido.
        
if($_pagi_nav_desde 1){
            
$_pagi_nav_desde 1;
        }
    }
 }

 for (
$_pagi_i $_pagi_nav_desde$_pagi_i<=$_pagi_nav_hasta$_pagi_i++){//Desde página 1 hasta última página ($_pagi_totalPags)
    
if ($_pagi_i == $_pagi_actual) {
        
// Si el número de página es la actual ($_pagi_actual). Se escribe el número, pero sin enlace y en negrita.
        
$_pagi_navegacion_temporal[] = "<span ".$_pagi_nav_estilo_mod.">$_pagi_i</span>";
    }else{
        
// Si es cualquier otro. Se escibe el enlace a dicho número de página.
        
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_i."'>".$_pagi_i."</a>";
    }
 }

 if (
$_pagi_actual $_pagi_totalPags){
    
// Si no estamos en la última página. Ponemos el enlace "Siguiente"
    
$_pagi_url $_pagi_actual 1//será el número de página al que enlazamos
    
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_siguiente</a>";

    
// Si no estamos en la última página. Ponemos el enlace "Última"
    
$_pagi_url $_pagi_totalPags//será el número de página al que enlazamos
    
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_ultima</a>";
 }
 
$_pagi_navegacion implode($_pagi_separador$_pagi_navegacion_temporal);

//------------------------------------------------------------------------


/*
 * Obtención de los registros que se mostrarán en la página actual.
 *------------------------------------------------------------------------
 */
 // Calculamos desde qué registro se mostrará en esta página
 // Recordemos que el conteo empieza desde CERO.
 
$_pagi_inicial = ($_pagi_actual-1) * $_pagi_cuantos;
 
 
// Consulta SQL. Devuelve $cantidad registros empezando desde $_pagi_inicial
 
$_pagi_sqlLim $_pagi_sql." LIMIT $_pagi_inicial,$_pagi_cuantos";
 
$_pagi_result mysql_query($_pagi_sqlLim);
 
// Si ocurrió error y mostrar errores está activado
 
if($_pagi_result == false && $_pagi_mostrar_errores == true){
     die (
"Error en la consulta limitada: $_pagi_sqlLim. Mysql dijo: <b>".mysql_error()."</b>");
 }

//------------------------------------------------------------------------


/*
 * Generación de la información sobre los registros mostrados.
 *------------------------------------------------------------------------
 */
 // Número del primer registro de la página actual
 
$_pagi_desde $_pagi_inicial 1;
 
 
// Número del último registro de la página actual
 
$_pagi_hasta $_pagi_inicial $_pagi_cuantos;
 if(
$_pagi_hasta $_pagi_totalReg){
     
// Si estamos en la última página
    // El ultimo registro de la página actual será igual al número de registros.
     
$_pagi_hasta $_pagi_totalReg;
 }
 
 
$_pagi_info "desde el $_pagi_desde hasta el $_pagi_hasta de un total de $_pagi_totalReg"
Un saludo y gracias desde ya.