Seiteneinteilung: Ausgabe d. Seitenzahl

Experience1986

Erfahrenes Mitglied
Hi,

ich möchte gerade eine Seiteneinteilung realisiereren. Dies stellt soweit auch kein Problem da, jedoch möchte ich bei der Ausgabe der Seitenzahlen eine einschränkung vornehmen.

Wenn diese eine bestimmte Anzahl überschreitet (zb. 12), werden nur die ersten bzw. die letzten 3 Seiten sowie die 2 Seiten vor und nach der aktuellen Seite ausgegeben.

Daran scheitere ich derzeit.

Mein derzeitiger Code:
Code:
      if (empty($page)) { $page=1; }

      $ipp=10;
      $itotal=SQL_NUM_ROWS("SELECT * FROM forum_posts WHERE topic_id=$topic_id AND enable=1");
      $pages=ceil($itotal / $ipp);
      if ($pages == 0) { $pages=1; }
      $sqlstart=($page*$ipp)-$ipp;
      $sqlend=$ipp;
      $lastcounts=($page*$ipp)-$ipp;

      if ($pages <= 12)
        {
          for ($i=1; $i <= $pages; $i++)
            {
              if ($page != $i)
                { echo '<a href="'.$PHP_SELF.'?topic_id='.$topic_id.'&page='.$i.'" style="text-decoration: none; font-size:11pt; font-weight:bold;">'.$i.'</a>'; }
              else { echo '<font  style="text-decoration: none; font-size:14pt; ">&raquo;'.$i.'&laquo;</font>'; }
              if ($i < $pages) { echo ", "; }
            }
        }
       else
        {

              $dots=0;
              $middle=ceil($pages/2);
              $output='';
              for ($i=1; $i <= $pages; $i++)
                {
                 // $middle=$j;
                  if (($i <= 3) or ($i >=$pages-2) or (($i > $middle-2) and $i <= ($middle+1)))
                    {
                      if ($page != $i)
                        { $output.='<a href="'.$PHP_SELF.'?topic_id='.$topic_id.'&page='.$i.'" style="text-decoration: none; font-size:11pt; font-weight:bold;">'.$i.'</a>'; }
                      else { $output.='<font  style="text-decoration: none; font-size:14pt; ">&raquo;'.$i.'&laquo;</font>'; }
                      if ($i < $pages) { $output.=", "; }
                    }
                   else
                    {
                      $output.="%";
                      $dots++;
                    }
                }

             $SDots='';
             for ($i=1; $i <= ceil($dots/2)-1; $i++)
               {
                 $SDots.='%';
               }

             $output=str_replace($SDots, ' .., ', $output);
            // echo $output;

             for ($i=0; $i <=strlen($output); $i++)
               {
                 if ($output[$i] == '%') { $output[$i]=''; }
               }
             echo $output;

        }

Bin für jeden Hinweis oder auch nur einen Suchbegreiff für Google dankbar, denn dort fand ich bislang nichts.

Vielen Dank schonmal im voraus.
 
Ist an sich garnicht schwer. Hier mal der Lösungsansatz:

- Gesamtzahl der Seiten ermitteln
- Aktuelle Seite ermitteln
- Erstelle Link: Seite 1, aktuelle Seite - 3, aktuelle Seite - 2, aktuelle Seite - 1, aktuelle Seite, aktuelle Seite +1,...
Das einzigste was man noch bedenken muss, dass er nicht mehr als die Gesamtseitenzahl und weniger als Seite 1 anbietet...
 
Zurück