Hannes: Blätterfunktion erweitern

Moin,

ich brauche Hilfe bei der Erweiterung meiner Blätterfunktion

Das was ich bisher habe:

erste << 1 2 3 4 5 || 6 || 7 8 9 10 11 12 13 14 15 16 17 18 19 20 >> letzte

Gibt es nun 100 Seiten stehen dort natürlich alle Seiten von 1 bis 100. Und genau das gefällt mir nicht.
Ich möchte nur eine bestimmte Spanne anzeigen. z.B. 5 Seiten davor und 5 Seiten danach. So dass es aussieht wie:

erste << ... 10 11 12 13 14 || 15 || 16 17 18 19 20 ... >> letzte

  
  
// Beispiel Werte  
  
$limit = 50;  
$total = 10000;  
  
// Schleife  
  
for ($i = 1; ($i <= $total/$limit ); $i++) {  
  
  $fwd = ($i-1) * $limit;  
  
  
  if($i > 40) continue;  
  
  echo '<a href="index.php?start='.$fwd.'">'.$i.'</a>&nbsp;';  
  
}  

Hierbei bricht er selbstverständlich nach 40 Seiten mit der Ausgabe ab.
Jedoch hätte ich das oben genannte gewünschte Ergebnis.

Kann mir jemand die / den entscheidenden Tipp geben?

Herzlichen Dank
Hannes

  1. Kann mir jemand die / den entscheidenden Tipp geben?

    zähle alle elemente, lasse einen zähler in der schleife mitlaufen

    wenn der zähler 5 schritte kleiner ist als die aktuelle seite oder 5 schritte größer als die aktuelle seite, dann lass den link ausgeben ansonsten nicht

    hast du in der schule in mathematik aufgepasst? wenn nein und du der meinung warst, du wirst es sowieso nie wieder brauchen: falsch gelegen ;)

  2. Moin

    Deine Herangehensweise ist nicht ganz richtig

    $limit = 50;
    $total = 10000;

    // Schleife

    for ($i = 1; ($i <= $total/$limit ); $i++) {

    $fwd = ($i-1) * $limit;

    if($i > 40) continue;

    echo '<a href="index.php?start='.$fwd.'">'.$i.'</a>&nbsp;';

    }

    du darfs nicht von der Gesamtzahl, sondern musst von der aktuellen Seitenposition ausgehen!

    Also musst du abfragen wenn i > "Aktuelle Seite"-"5 Seiten" Oder i < "Aktuelle Seite " + 5Seiten soll eine Ausgabe geschehen. Als weiteres musst du die Anzahl der ausgegebenen Links prüfen und einen Bereich mitgeben in dem die Zahlen liegen dürfen.

    Jetzt versuche mal alle Bedingungen in eine (oder mehrere) Abfragen zu packen

    Gruß Bobby

    --
    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
    -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
    ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
  3. Hello,

    vielleicht hilft Dir das Beispiel weiter:

    http://selfhtml.bitworks.de/artikel_locking/show_visitors.php

    Ist momentan beim Weiterschalten etwas langsam wegen der Host-zur-IP-Auflösung...

    Ein harzliches Glückauf

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  4. Hallo,

    das gleich Problem habe ich bisher immer so gelöst

      
    <?PHP  
    function linkPages($seitenzahl, $differenz) {  
      # $Seitenzahl => Anzahl der Seiten insgesamt  
      # $differenz => Anzahl der Seiten vor und nach der aktuellen Seite  
      # $_GET['page'] => Enthält die aktuelle Seitenzahl  
      # Aktuelle Seiten werden nicht verlinkt!  
      $min_page = $_GET['page'] - $differenz;  
      $max_page = $_GET['page'] + $differenz;  
      $return = "<p>Seite: ";  
      if ($_GET['page'] == 1) {  
        $return .= " 1 ";  
      } else {  
        $return .= "<a href=\"?page=1\" title=\"Seite 1\"> 1 </a>";  
      }  
      if ($min_page >= ($differenz)) {  
        $return .= "&hellip;";  
      }  
      for($i = $min_page; $i <= $max_page; $i++) {  
        if($i > 1 && $i <= $seitenzahl) {  
          if ($_GET['page'] == $i) {  
            $return .= " || $i || ";  
          } else {  
            $return .= "<a href=\"?page=$i\" title=\"Seite $i\"> $i]</a>";  
          }  
        }  
      }  
      if (($_GET['page'] + $differenz + 1) < $seitenzahl) {  
        $return .= "&hellip;";  
      }  
      if (($_GET['page'] + $differenz) < $seitenzahl) {  
        $return .= "<a href=\"?page=$seitenzahl\" title=\"Seite $seitenzahl\"> $seitenzahl </a>";  
      }  
      $return .= "</p>";  
      return($return);  
    }  
    ?>  
    
    

    Funktioniert soweit, meine Frage wäre nur, ab das auch eleganter ginge.

    netten Tag
    ^da Powl

    --
    ===============================
    powl.hat-gar-keine-homepage.de/