Foros del Web » Programando para Internet » PHP »

Limitar paginador en php

Estas en el tema de Limitar paginador en php en el foro de PHP en Foros del Web. Hola FDW!!, tengo un paginador hecho en php, pero el problema es que no limita la cantidad de páginas como todos los paginadores, sino que ...
  #1 (permalink)  
Antiguo 11/12/2012, 17:44
Avatar de xarmagedonx  
Fecha de Ingreso: marzo-2009
Mensajes: 360
Antigüedad: 15 años, 1 mes
Puntos: 29
Limitar paginador en php

Hola FDW!!, tengo un paginador hecho en php, pero el problema es que no limita la cantidad de páginas como todos los paginadores, sino que muestra todas.

Por ejemplo si tengo 200 resultados muestra 20 enlaces, pero si son más muestra cientos. Les muestro un ejemplo:

Cita:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Siguiente
Este es el código que utilizo:

Código PHP:
$TAMANO_PAGINA 15
$pagina $_GET["pagina"]; 
if (!
$pagina) { 
     
$inicio 0
     
$pagina=1


else { 
$inicio = ($pagina 1) * $TAMANO_PAGINA
}
$total_paginas ceil($totalRows $TAMANO_PAGINA);

if((
$pagina 1) > 0) {
     echo 
"<a href='resultados.php?frase=" $frase "&buscar=Buscar&pagina=".($pagina-1)."' rel='nofollow'> Anterior </a> ";
}

for (
$i=1$i<=$total_paginas$i++){
   if (
$pagina == $i) {
      echo 
"<b>".$pagina."</b> ";

} else {
      echo 
"<a href='resultados.php?frase=" $frase "&buscar=Buscar&pagina=" $i "' rel='nofollow'>" $i "</a> "
}
}

if((
$pagina 1)<=$total_paginas) {

     echo 
"<a href='resultados.php?frase=" $frase "&buscar=Buscar&pagina=".($pagina+1)."' rel='nofollow'> Siguiente </a> ";
}
    
// Si se mando vacio
    
elseif(empty($_GET['frase'])){ 
        echo 
"Debe introducir una palabra para su búsqueda"
    } 
¿Cómo puedo limitar la cantidad de páginas?

Saludos
  #2 (permalink)  
Antiguo 11/12/2012, 19:10
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Limitar paginador en php

el problema esta en el for, es muy sencillo limitar el numero de páginas...

Código PHP:
Ver original
  1. <?php
  2. //numero de páginas a mostrar incluyendo la página actual, 1 2 3 4 5* 6 7 8 9
  3. //el 5* sería la página actual, es preferible usar números pares para que el numero
  4. //de páginas tanto antes como después sea el mismo (en caso de que existan)
  5. $limite = 8;
  6.  
  7. //código de tu paginador....
  8. $div = ceil($limite / 2);
  9.  
  10. $pagInicio = ($pagActual > $div) ? ($pagActual - $div) : 1;
  11.  
  12. if ($totalPaginas > $div) {
  13. $pagRestantes = $totalPaginas - $pagActual;
  14. $pagFin = ($pagRestantes > $div) ? ($pagActual + $div) : $totalPaginas;
  15. }else {
  16. $pagFin = $totalPaginas;
  17. }
  18.  
  19. for($i=$pagInicio; $i<=$pagFin; $i++) {
  20. //código de paginación...
  21. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 11/12/2012, 20:43
Avatar de xarmagedonx  
Fecha de Ingreso: marzo-2009
Mensajes: 360
Antigüedad: 15 años, 1 mes
Puntos: 29
Respuesta: Limitar paginador en php

Hola, gracias por responder, probé con el siguiente código, pero no muestra ningún resultado

Me marca:
Cita:
No se encontraron resultados para Prueba
Código PHP:
Ver original
  1. $limite = 8;
  2.  
  3. $div = ceil($limite / 2);
  4.  
  5. $pagInicio = ($pagina > $div) ? ($pagina - $div) : 1;
  6.  
  7. if ($totalPaginas > $div) {
  8. $pagRestantes = $totalPaginas - $pagina;
  9. $pagFin = ($pagRestantes > $div) ? ($pagina + $div) : $totalPaginas;
  10. }else {
  11. $pagFin = $totalPaginas;
  12. }
  13.  
  14. if(($pagina - 1) > 0) {
  15.      echo "<a href='resultados.php?frase=" . $frase . "&buscar=Buscar&pagina=".($pagina-1)."' rel='nofollow'> Anterior </a> ";
  16. }
  17. for($i=$pagInicio; $i<=$pagFin; $i++) {
  18. if ($pagina == $i) {
  19.       echo "<b>".$pagina."</b> ";
  20.  
  21. } else {
  22.       echo "<a href='resultados.php?frase=" . $frase . "&buscar=Buscar&pagina=" . $i . "' rel='nofollow'>" . $i . "</a> ";
  23. }
  24. }
  25. if(($pagina + 1)<=$total_paginas) {
  26.  
  27.      echo "<a href='resultados.php?frase=" . $frase . "&buscar=Buscar&pagina=".($pagina+1)."' rel='nofollow'> Siguiente </a> ";
  28. }
  #4 (permalink)  
Antiguo 11/12/2012, 20:54
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Limitar paginador en php

¬¬ Eso no tiene nada que ver con el código que te di, eso mas bien es sobre la consulta a la base de datos, el código que te di unicamente afecta a los links generados para listar las páginas existentes, si otra cosa fue modificada es cuestión tuya y las modificaciones que tu hagas...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 12/12/2012, 13:01
Avatar de xarmagedonx  
Fecha de Ingreso: marzo-2009
Mensajes: 360
Antigüedad: 15 años, 1 mes
Puntos: 29
Respuesta: Limitar paginador en php

La única modificación que hize fue poner el paginador, y ahí marcó el error.
  #6 (permalink)  
Antiguo 12/12/2012, 13:07
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Limitar paginador en php

Deberías mostrar todo el código, probablemente alguna variable se este sobre escribiendo, aunque te repito, según la logica común de un paginador y el tipo de error es porque no se encontraron resultados que mostrar, en fin, de cualquier forma con lo que muestras es estar adivinando que es lo que pasa...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 12/12/2012, 13:41
Avatar de xarmagedonx  
Fecha de Ingreso: marzo-2009
Mensajes: 360
Antigüedad: 15 años, 1 mes
Puntos: 29
Respuesta: Limitar paginador en php

Retorne a una versión anterior del archivo para probar el limitador, pero me marca solo la página siguiente.

Si presiono el link "Siguiente" aparece también "Anterior", pero no las páginas de adentro
  #8 (permalink)  
Antiguo 13/12/2012, 17:30
Avatar de xarmagedonx  
Fecha de Ingreso: marzo-2009
Mensajes: 360
Antigüedad: 15 años, 1 mes
Puntos: 29
Respuesta: Limitar paginador en php

Bueno lo hice "funcionar", era una variable jaja, pero el código no funciona igualmente, por ejemplo probe con una frase que da más de 3000 resultados y me pasa esto:

Cita:
< Anterior 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 Siguiente >
Eso, presionando una página, porque si lo pongo desde el principio aparecen todas las 375.

Como evito esto??, saludos.

PD: la variable que cambie fue $totalPaginas por $total_paginas
  #9 (permalink)  
Antiguo 13/12/2012, 17:47
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Limitar paginador en php

Por lo que comentas es obvio que unicamente has hecho copy/paste del código que deje, por lo tanto es obvio que no funcione como debiera, el código que eh dejado usa variables propias, la idea original era que vieras el código, lo analizaras y lo adaptaras a tu código original, para que veas que funciona...

Código PHP:
Ver original
  1. <?php
  2. $pagActual = isset($_GET['pag']) ? $_GET['pag'] : 1;
  3. $totalPag = 400;
  4. $pagVisibles = 8;
  5.  
  6. $div = ceil($pagVisibles / 2);
  7.  
  8. $pagInicio = ($pagActual > $div) ? ($pagActual - $div) : 1;
  9.  
  10. if ($totalPag > $div) {
  11.     $pagRestantes = $totalPag - $pagActual;
  12.     $pagFin = ($pagRestantes > $div) ? ($pagActual + $div) : $totalPag;
  13. }else {
  14.     $pagFin = $totalPag;
  15. }
  16.  
  17. echo '<p>';
  18. echo ($pagActual > 1) ? '<a href="'.$_SERVER['PHP_SELF'].'?pag='.($pagActual - 1).'">Anterior</a>' : 'Anterior';
  19.  
  20. for($i=$pagInicio; $i<=$pagFin; $i++) {
  21.     echo ($i == $pagActual) ? ' <strong>'.$i.'</strong>' : ' <a href="'.$_SERVER['PHP_SELF'].'?pag='.$i.'">'.$i.'</a>';
  22. }
  23.  
  24. echo ($pagActual < $totalPag) ? ' <a href="'.$_SERVER['PHP_SELF'].'?pag='.($pagActual + 1).'">Siguiente</a>' : ' Siguiente';
  25. echo '</p>';
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: limitar, paginador, resultados
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 18:00.