Einzelnen Beitrag anzeigen

Benutzerbild von S2B
S2B

Registriert seit: 1. Feb 2004
Ort: Aachen
1.268 Beiträge
 
#5

Re: [PHP] Pagination "berechnen"

  Alt 8. Mai 2006, 13:21
Mal wieder. *g*

Code:
//
// Generates the pagination
//
function prepare_pagination($item_count, $per_page, $page_now, $action)
{
   global $root_path;

   if ($item_count == 0)
   {
      return '';
   }

   $action = $action2 = $root_path . $action;
   $action2 .= (strpos($action2, '?') !== false) ? '&' : '?';

   $page_count = ceil($item_count / $per_page);

   if ($page_count == 1)
   {
      return "Seite $page_now von $page_count";
   }
   else
   {
      // Which numbers should be shown?
      if ($page_count <= 5)
      {
         $showed_numbers = range(1, $page_count);
      }
      else if ($page_now == 1 || $page_now == $page_count)
      {
         $showed_numbers = array(1, 2, $page_count - 1, $page_count);
      }
      else
      {
         $showed_numbers = array(1, 2, $page_now - 1, $page_now, $page_now + 1, $page_count - 1, $page_count);
         $showed_numbers = array_unique($showed_numbers);
      }

      // generate pagination
      $pagination = '';
      $last_number = 0;
      foreach ($showed_numbers as $number)
      {
         if (($last_number + 1) < $number)
         {
            $pagination .= ' ... ';
         }
         else
         {
            $pagination .= ($pagination != '') ? ', ' : '';
         }

         $this_action = ($number != 1) ? $action2 . "page=$number" : $action;
         $pagination .= ($page_now != $number) ? '[url="' . $this_action . '"]' . $number . '[/url]' : $number;

         $last_number = $number;
      }

      // add "<" and ">" to browse faster ;-)
      if ($page_now != 1)
      {
         $this_action = ($page_now != 2) ? $action2 . 'page=' . ($page_now - 1) : $action;
         $pagination = '[url="' . $this_action . '"]&lt;[/url] ' . $pagination;
      }

      if ($page_now != $page_count)
      {
         $pagination .= ' [url="' . $action2 . 'page=' . ($page_now + 1) . '"]&gt;[/url]';
      }

      return "Seite $page_now von $page_count: $pagination";
   }
}
Deine Funktion ist um einiges umständlicher als meine, deswegen ausnahmsweise mal C&P.
Simon Praetorius
Gruß
S2B
  Mit Zitat antworten Zitat