truncar - Agregar puntos suspensivos en la paginación de PHP
truncar texto con puntos suspensivos (3)
Esto debería ser más que suficiente para comenzar, al menos,
$count = 7; // number to show
// start at half threshold down from the current location.
$number = $current - round($count/2);
if( $number > 1 ) echo ''...'';
else $ // increase to have number start at 1.
for( $number; $number < $number + $count; $number++)
{
// your for loop as normal
}
if( $number < $total ) echo ''...'';
.
//Prev
.
for($number = 1; $number <= $num_pages; $number++)
{
if($page == $number)
{
$navigator .= "<b>[$number]</b> ";
}
else
{
$navigator .= "<a href=''?c=".$_SESSION[''cID'']".&rows=".$per_page."&page=$number''>$number</a> ";
}
}
.
//Next
.
Este es el fragmento que imprime el número de páginas.
Muestra de salida:
Anterior 1 2 3 4 [5] 6 7 8 9 10 Siguiente
5 es la página actual.
Problema: los números de página se muestran en secuencia sin restricciones. Si tengo 100 páginas, aparecen todos los números.
Pregunta: Necesito que mis números de búsqueda aparezcan de la siguiente manera ...
Supongamos que solo tenemos 7 ($ num_pages) páginas:
Anterior 1 2 [3] 4 5 6 7 Siguiente
Supongamos que tenemos 90 páginas:
[1] 2 3 4 5 6 7 ... 90 Siguiente
Supongamos que el usuario hizo clic en la 7ma página:
Anterior 1 ... 5 6 [7] 8 9 10 11 ... 90 Siguiente
Supongamos que el usuario hizo clic en la página 11:
Anterior 1 ... 9 10 [11] 12 13 14 15 ... 90 Siguiente
Supongamos que el usuario hizo clic en la 15ª página:
Anterior 1 ... 13 14 [15] 16 17 18 19 ... 90 Siguiente
Supongamos que el usuario hizo clic en la página 90:
Anterior 1 ... 84 85 86 87 88 89 [90]
Cualquier ayuda será apreciada.
$radius = 3;
for($i = 1; $i <= $total; $i++){
if(($i >= 1 && $i <= $radius) || ($i > $current - $radius && $i < $current + $radius) || ($i <= $total && $i > $total - $radius)){
if($i == $current) echo "<b>".$i."</b>";
}
elseif($i == $current - $radius || $i == $current + $radius) {
echo "... ";
}
}
Una solución elegante para este tipo de cosas es usar "navegación de página logarítmica". Ver mi respuesta a esta pregunta (código PHP incluido):
¿Cómo hacer navegación de página para muchas, muchas páginas? Navegación de página logarítmica