| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

02-06-2010, 13:55
|
|
mwde85
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 15
|
|
Frage zu einem Seitenzahlen Script
Hallo,
ich habe hier ein fertiges Seitenzahlen Script.
Das sieht so aus:
Seite: [1] 2 3 4
Soweit funktioniert auch alles. Meine Frage ist nun, wie bekomme ich es hin, dass das Script nur die ersten 10 Seitenzahlen anzeigt und dann zb nach der 10 Seitenzahl "..." macht.
Ich habe nämlich viele Artikel, sprich es gibt sehr viele Seitenzahlen. Wenn der User die erste Seite aufruft soll er nur die ersten 10 Seitenzahlen sehen. Wenn er auf der 10. Seite ist, sollen die nächsten 10 Seitenzahlen gezeigt werden. Wie bekomme ich das am besten hin?
PHP-Code:
<?php //Abfrage auf welcher Seite man ist
//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1 if($seite == ""){ $seite = 1; } //Verbindung zu Datenbank aufbauen
include "db_login.php";
//Eintraege pro Seite: Hier 15 pro Seite $eintraege_pro_seite = 5;
//Ausrechen welche Spalte man zuerst ausgeben muss:
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
$result = mysql_query("SELECT id FROM xxxxx WHERE page_id=".mysql_real_escape_string($id).""); $menge = mysql_num_rows($result);
//Errechnen wieviele Seiten es geben wird $wieviel_seiten = $menge / $eintraege_pro_seite;
//Ausgabe der Seitenlinks: echo "<div align=\"center\">"; echo "<b>Seite:</b> ";
//Ausgabe der Links zu den Seiten for($a=0; $a < $wieviel_seiten; $a++) { $b = $a + 1;
//Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben if($seite == $b) { echo " <b>[$b]</b> "; }
//Auf dieser Seite ist der User nicht, also einen Link ausgeben else { $next_ok = 1; echo " <a href=\"page.php?page=kat&seite=$b&id=$id\">$b</a> "; }
} if($next_ok == 1 && $seite != $a){ // Rausfiden welche Seite als naechstes kommt $nex_seite = $seite + 1; echo "<a href=\"page.php?page=kat&seite=$nex_seite&id=$id\"> > </a>"; } echo "</div><br>";
//Tabelle Abfragen //Tabelle heißt hier einfach: Tabelle $abfrage = "SELECT * FROM xxxxx WHERE page_id=".mysql_real_escape_string($id)." ORDER BY `id` DESC LIMIT $start, $eintraege_pro_seite"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { // Hier die Ausgabe der Eintraege $id_kat = $id; $id_art = $row->id; include "tmp_einz_artikel.php"; }
//Jetzt kommt das "Inhaltsverzeichnis", //sprich dort steht jetzt: Seite: 1 2 3 4 5
//Wieviele Eintraege gibt es ?berhaupt
//Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten //also der gleiche Text wie in der Variable $abfrage, bloß das hier das LIMIT fehlt //Sonst funktioniert die Bl?tterfunktion nicht richtig, //und hier kann nur 1 Feld abgefragt werden, also id
$result = mysql_query("SELECT id FROM xxxxxx WHERE page_id=".mysql_real_escape_string($id).""); $menge = mysql_num_rows($result);
//Errechnen wieviele Seiten es geben wird $wieviel_seiten = $menge / $eintraege_pro_seite;
//Ausgabe der Seitenlinks: echo "<br><div align=\"center\">"; echo "<b>Seite:</b> ";
//Ausgabe der Links zu den Seiten for($a=0; $a < $wieviel_seiten; $a++) { $b = $a + 1;
//Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben if($seite == $b) { echo " <b>[$b]</b> "; }
//Aus dieser Seite ist der User nicht, also einen Link ausgeben else { echo " <a href=\"page.php?page=kat&seite=$b&id=$id\">$b</a> "; $next_ok = 1; }
} if($next_ok == 1 && $seite != $a){ // Rausfiden welche Seite als naechstes kommt $nex_seite = $seite + 1; echo "<a href=\"page.php?page=kat&seite=$nex_seite&id=$id\"> > </a>"; } echo "</div>"; ?>
|

02-06-2010, 14:04
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von mwde85
Wenn er auf der 10. Seite ist, sollen die nächsten 10 Seitenzahlen gezeigt werden. Wie bekomme ich das am besten hin?
|
Ganz kleines bisschen selber nachdenken, und die Laufweite der Schleife, die die Links ausgibt, entsprechend (dynamisch) anpassen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

02-06-2010, 14:29
|
|
mwde85
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 15
|
|
Wenn ich es wüsste würde ich ja nicht fragen :-). Ich bin Anfänger und habe keinen Plan wie ich es machen soll...
Ich möchte es gerne so haben:
Seite: [1] 2 3 4 5 6 7 8 9 10 ...
Ab der Seite 10:
Seite: 11 12 13 14 15 usw...
|

02-06-2010, 15:44
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
PHP-Code:
...
$anfang = max(min($seite - 5, $wieviel_seiten - 10), 0);
for ($a = $anfang; $a < min($anfang + 10, $wieviel_seiten); $a++)
...
Ist etwas anders als du wolltest, aber mit Absicht, damit man von Seite 11 auch wieder zurück kommt.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (02-06-2010 um 16:46 Uhr)
|

02-06-2010, 16:43
|
|
mwde85
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 15
|
|
Danke schonmal für das Beispiel,
Ab Seite 10 geht es dann aber nicht mehr weiter. Da soll es ja dann weiter gehen mit 11, 12, 13, 14 usw... Dann sollen also die nächsten 10 weiteren Zahlen kommen wenn es noch mehr Seiten gibt. Geht das auch?
|

02-06-2010, 16:45
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von mwde85
geht das auch?
|
LOL, aber klar. War noch ein Fehler drin. Jetzt ist er raus. Mal wieder ein typischer Fehler, wenn man es nicht selbst testen kann.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

02-06-2010, 16:59
|
|
mwde85
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 15
|
|
Ok das klappt schonmal gut. Ich habe jetzt zb 13 Seiten und und die letzte Seite von hinten ist die Seite 4. Wenn ich also jetzt auf Seite 4 zurück springe sehe ich die restlichen Zahlen aber nicht mehr :-). Also 3, 2, 1...
So sieht das aus:
Seite: [4] 5 6 7 8 9 10 11 12 13 >
Das Symbol zeigt in diesem Fall die aktuelle Seite an...
Die Zahl 5 in deinem Script ist ja für die Anzahl der Einträge, also das 5 Einträge pro Seite maximal angezeigt werden, richtig?
|

02-06-2010, 17:04
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Ich hab mich drauf verlassen, dass in $wieviel_seiten dann z. B. immer 13 drin steht, wenn es 13 Seiten sind. Das müsstest du aber selbst mal überprüfen.
Zitat:
Zitat von mwde85
Die Zahl 5 in deinem Script ist ja für die Anzahl der Einträge, also das 5 Einträge pro Seite maximal angezeigt werden, richtig?
|
Nein, das sorgt dafür, dass auch 5 Seiten vor der aktuellen angezeigt werden:
[1] 2 3 4 5 6 7 8 9 10
1 2 3 4 5 [6] 7 8 9 10
3 4 5 6 7 [8] 9 10 11 12
4 5 6 7 8 9 10 [11] 12 13
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (02-06-2010 um 17:08 Uhr)
|

02-06-2010, 17:06
|
|
mwde85
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 15
|
|
Ja $wieviel_seiten gibt aus wie viele Seiten es gibt. Das ist korrekt. Hmm woran kann das sonst noch liegen
|

02-06-2010, 17:10
|
|
mwde85
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 15
|
|
Ahh ok dann habe ich einen Fehler gemacht... Jetzt funktioniert es super!
Vielen Dank für deine Hilfe!
|

02-06-2010, 17:26
|
|
mwde85
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 15
|
|
Es gibt nur noch ein Problem das ich gerade festgestellt habe. Es gibt immer eine Seite (meistens die 2. Seite) wo er nur 2 Ergebnisse (statt 5) anzeigt. Bei den restlichen zeigt er dann wieder die vollen 5 Ergebnisse an. Komisch oder?
|

02-06-2010, 17:29
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Da musst du aber langsam selbst sehen, woran das liegen kann. Eigentlich wollte ich dir ursprünglich nur ein Beispiel geben. Es sei denn, du willst mich engagieren…
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

02-06-2010, 17:34
|
|
mwde85
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 15
|
|
Ne ne das passt schon :-). Ich versuche es zu lösen.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|