php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.02.2008, 10:18  
Neuer Benutzer
 
Registriert seit: 26.02.2008
Beiträge: 6
bobfi
Standard Blättern mit LIMIT Befehl

Hallo!

Ich würde gerne mit PHP "blättern".
Wenn ich z.B. in einer MySQL-Datenbank bzw. Tabelle 128 Datensätze habe und diese auslesen möchte und pro Seite nur 25 von ihnen Anzeigen lassen möchte.... könnte ich ja folgendes machen (???):

PHP-Code:
SELECT FROM `tabelle-xLIMIT 0 25 
PHP-Code:
SELECT FROM `tabelle-xLIMIT 26 50 
usw...

Nun ändert sich ja die Anzahl der Datensätze in einer Tabelle und ich habe auch keine Lust für alle neuen 25 Datensätze eine neue *.php Datei mit entsprechendem Skript zu erstellen...

Das Skript müsste also zunächst zählen wie viele Datensätze in der Tabelle sind und diese dann automatisch in 25er Schritten anzeigen und auf die Folgeseite verlinken, bis der letzte Datensatz erreicht ist....


Wie realisiere ich sowas?


Gruß
__________________
Da wo nur die Sonne scheint ist meistens Wüste!
bobfi ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.02.2008, 11:36  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

1. das mit dem LIMIT stimmt nicht ganz! Der erste Wert gibt an ab dem wie vielten Eintrag an zurückgegeben werden soll (Startpunkt) und der zweite Wert wie viele (Anzahl)!

Wäre bei dir also
Code:
LIMIT  0, 25
LIMIT 25, 25
LIMIT 50, 25
LIMIT 75, 25
etc.



2. Um ein "paging", wie man es nennt, zu realisieren brauchst du eine zusätzlich Variable die du per Link immer weiter gibst! Undzwar deine Seitenanzahl, ist ja logisch!

Und dann hast du sowas:

PHP-Code:
<?php
// diese Variable solltest du übergeben, also sollte vom User kommen
$page 2;

// wie viele Einträge sollen pro Seite angezeigt werden?
$rows_per_page 25



/* Jetzt zum lustigen Teil. Angenommen dein User gibt Seite 1 an!
Dann brauchen wir Beiträge 0-24 z.B. wenn du genau 25 Beiträge
haben willst. Bei Seite 2 wären es dann 25 - 49! Also was machen */

// page - 1 damit erreichen wir bei Seite 1 -> (1-1) * 25 = 0
// bei Seite 2 wären es (2-1) * 25 = 25 genau das was wir wollen!
$start = ($page 1) * $rows_per_page

// Gut damit haben wir schon unseren Query!
$query "SELECT * FROM tabelle LIMIT $start, $rows_per_page";
?>
Du musst allerdings dran denken:
1. Überprüfe was für eine Seite der User angibt, darf er die überhaupt aufrufen? bei 128 Einträgen wird er bestimmt nicht Seite 200 öffnen können. Also überprüf erst wie viele Seiten es gibt ... wäre also ceil($rows / $rows_per_page); also 128 / 25 = 5,12 sind also aufgerundet 6 Seiten! Also darf die Seite vom User angegeben nur zwischen 1-6 liegen.

2. Und damit der User navigieren darf musst du ihm ja die einzelnen Seiten als Link anzeigen. Wenn du jetzt 6 Seiten hast machst du eben sowas:

PHP-Code:
<?php
for ($i 1$i <= $rows$i++) {
    echo 
'[url="script.php?page='.$i.'"]'.$i.'[/url]';
}
?>
Um das dann noch schöner zu gestallten könntest du z.B. nur folgende Links anzeigen:
erste Seite = immer 1
vorherige Seite = $page - 1
nächste Seite = $page + 1
letzte Seite = ceil($rows / $rows_per_page)

oder zwischen drinnen noch ein paar Zahlen, jenach dem was du jetzt möchtest, kann aber recht komplex werden!
Flor1an ist offline  
Alt 26.02.2008, 12:33  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Razor hat bereits alles sehr gut dokumentiert...
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline  
Alt 26.02.2008, 17:42  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

... bis auf die Verwendung des Variablennnamens $rows. Besser wäre, $pages zu verwenden, denn $rows bezeichnet eigentlich eher die Anzahl der Datensätze, $pages dagegen das Ergebnis der Ausdrucks ceil($rows / $rows_per_page);
nikosch ist offline  
Alt 26.02.2008, 17:57  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Habe ich doch! Zwar hatte ich anfangs noch "letzte Seite = $rows" aber das wäre eh ein Fehler gewesen, habs grad noch ausgebessert. Aber sonst nutz ich doch schon $page?!?
Flor1an ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySQL-Abfrage mit LIMIT geht nicht PhilCGN PHP Tipps 2008 16 30.05.2008 15:39
MySQL Befehl als default? DannyD Datenbanken 5 25.10.2006 17:38
Seitenanzeige bei LIMIT befehl in MySQL PHP Tipps 2007 2 09.12.2005 20:11
Warning: filesize(): SAFE MODE Restriction in effect. nicobischof PHP Tipps 2005-2 9 17.08.2005 19:05
include Befehl! PHP Tipps 2005-2 0 05.08.2005 10:03
include Befehl! PHP Tipps 2005-2 0 05.08.2005 10:02
[Erledigt] include Befehl! PHP Tipps 2005-2 0 05.08.2005 10:01
include Befehl! PHP Tipps 2005-2 0 05.08.2005 09:59
[Erledigt] include Befehl! PHP Tipps 2005-2 0 05.08.2005 09:57
PHP system Befehl PHP-Fortgeschrittene 9 02.08.2005 14:59
Befehlsoptimierung faux Datenbanken 4 31.05.2005 19:11
Befehl erst nach Bestimmter Zeit ausführen? PHP Tipps 2005 21 28.02.2005 00:13
Befehl zum prüfen ob Datensatz vorhanden &amp;lt;= Please Help M Datenbanken 4 12.01.2005 14:20
Feldname bei LIMIT setzen? Datenbanken 8 30.11.2004 18:52
LIMIT(?) Fehler Schaelle Datenbanken 0 28.08.2004 14:11

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php mysql limit blättern, php paging, php mysql seiten blättern, paging php, php mysql blättern, mysql blättern, mysql limit befehl, php limit blättern, php paging script, mysql befehl limit, http://www.php.de/php-tipps-2008/45565-blaettern-mit-limit-befehl.html, paging mit php, limit php befehl, blättern php mysql, limit befehl, php seiten blättern mysql, php limit befehl, php pager, mysql limit blättern, php befehl limit

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:18 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.