Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/06/2012, 13:34
Avatar de Nemutagk
Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 10 meses
Puntos: 406
Respuesta: Duda con paginador..

Te repito, tu código hace demasiado para lo que pretendes hacer, aparte, no muestras el código donde divides los items, tampoco indicas si es para paginar un resultado de una DB, etc...

Cita:
...recien empiezo en esto y me traeria más de un dolor de cabeza.....
Sinceramente dudo que te de mas dolor de cabeza que intentar hacer algo desde 0 con el nivel que tienes, pero bueno, eso no esta del todo mal querer hacerlo tu mismo...

Como no muestras todo el código implicado solo te podré dejar un ejemplo de como construir los links de navegación de tu paginación...

Código PHP:
Ver original
  1. //supondré que los resultados vienen en un array, ya sea de DB o de lo que fuere...
  2. $numTotalItems = count($items);
  3.  
  4. //numero de items mostrados por página...
  5. $numPerPage = 15;
  6.  
  7. //Obtenemos el numero total de páginas, como es una división probablemente obtengamos un
  8. //una fracción, por lo tanto hay que redondear el numero hacia arriba...
  9. $totalPages = ceil($numTotalItems / $numPerPage);
  10.  
  11. //verificamos en que página estamos
  12. $currentPage = (isset($_GET['page'])) ? $_GET['page'] : 1;
  13.  
  14. //verificamos si es la primera página o no
  15. if ($currentPage > 1) {
  16.      echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.($currentPage - 1).'">Anterior</a>';
  17. }
  18.  
  19. //recorremos las página existentes
  20. for($i=0; $i<=$totalPages; $i++) {
  21.      //verificamos si la página dentro del for es igual o no a la página actual
  22.      if ($i != $currentPage) {
  23.           //si no lo es imprimimos el link
  24.           echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i.'</a>';
  25.      }else {
  26.           //si es igual la destacamos como negrita y no agregamos el link
  27.           echo '<strong>'.$i.'</strong>';
  28.      }
  29. }
  30.  
  31. //vemos si la página actual es menor al total de páginas
  32. if ($currentPage < $totalPages) {
  33.      echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.($currentPage + 1).'">Siguiente</a>';
  34. }

Ahora, si obtienes muchas páginas y solo quieres mostrar las 5 anteriores, la página actual y las 5 siguientes podrías hacer algo así...

Código PHP:
Ver original
  1. //verificamos si es la primera página o no
  2. if ($currentPage > 1) {
  3.      echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.($currentPage - 1).'">Anterior</a>';
  4. }
  5.  
  6. $inicio = 1;
  7.  
  8. if ($currentPage > 5) {
  9.      $inicio = $currentPage - 5;
  10. }
  11.  
  12. $fin = $totalPages;
  13. $finTemp = $totalPages - $currentPage;
  14. if ($finTemp > 5) {
  15.      $fin = $currentPage + 5;
  16. }else {
  17.      $fin = $totalPages;
  18. }
  19.  
  20. for($i=$inicio; $i<=$fin; $i++) {
  21.     if ($i != $currentPage) {
  22.         echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i.'</a> ';
  23.     }else {
  24.         echo '<strong>'.$i.'</strong> ';
  25.     }
  26. }
  27.  
  28. if ($currentPage < $totalPages) {
  29.      echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.($currentPage + 1).'">Siguiente</a>';
  30. }
__________________
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 =)

Última edición por Nemutagk; 24/06/2012 a las 13:41