Blätterfunktion erweitern
Hannes
- php
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> ';
}
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
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 ;)
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> ';
}
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
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
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 .= "…";
}
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 .= "…";
}
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