Datensätze Anzahlweise auslesen.
bjoern
- php
0 Fabian Transchel0 bjoern0 Tom0 Fabian Transchel0 Tom
0 Tom0 dedlfix0 bjoern
Hallo Leute!
Ich programmiere grad ein Gästebuch, welches jeden Eintrag in einen Datensatz in eine MySQL-Datenbank packt.
Nun möchte ich beim Anzeigen der Einträge immer nur 5 Einträge pro Seite zeigen.
Unter den Einträgen sollen Seitenzahlen aufgelistet sein, mit denen man per Mausklick entsprechenden Seiten mit z.B. Eintrag 25-30 anzeigen kann.
Meine Fragen: Wie kann ich die Einträge immer im 5er-Pack auslesen? Wie kann ich unter den Einträgen die Seitenzahlen bringen (Alle einträge/5=Anzahl der Seitenzahlen)?
Wie kann ich wenn jamand auf z.B. Seite 5 drückt die einträge 5*5=25 bis 5*5+5=30 auslesen?
Hat jemand Codeschnipsel/Tutorials, etc.?
Gruß Bjoern
Hallo bjoern,
Hat jemand Codeschnipsel/Tutorials, etc.?
Was hast du probiert und woran bist du gescheitert?
Du kennst for und foreach?
Grüße aus Barsinghausen,
Fabian
Hallo Fabian!
Was hast du probiert und woran bist du gescheitert?
Mein größtes Problem ist, dass ich die SQL-Abfrage nicht hinbekomme mit der ich z.B. Datensatz 25-30 auslesen kann.
Nach der auto_increment id kann ich nicht gehen, da einzelne Datensäte gelöscht sein könnnen/fehlen. Es könnten somit leere Seiten bzw. Seiten mit nicht 5 Datensätzen entstehen.
Woran soll ich mich orientieren?
Z.B. hat der 25te Eintrag schon die id 32 da 7 Einträge gelöscht wurden.
Gruß Björn
Hello,
Mein größtes Problem ist, dass ich die SQL-Abfrage nicht hinbekomme mit der ich z.B. Datensatz 25-30 auslesen kann.
Nach der auto_increment id kann ich nicht gehen, da einzelne Datensäte gelöscht sein könnnen/fehlen. Es könnten somit leere Seiten bzw. Seiten mit nicht 5 Datensätzen entstehen.
Diese Frage ist gar nicht so trivial, wie man glauben könnte.
Mit einem einfachen "Limit $offset $count" kann man sie jedenfalls nicht beantworten, wird sie aber gerne beantwortet. Und für den Simpel-Fall reicht das auch.
Wenn man aber vermeiden möchte, dass beim Blättern versehentlich Sätze übersehen werden können, da andere berechtigte User inzwischen Änderungen vorgenommen haben, die Auswirlung auf die Ergebnistabelle haben, dann wird es komplex.
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom
Hallo Tom,
Wenn man aber vermeiden möchte, dass beim Blättern versehentlich Sätze übersehen werden können, da andere berechtigte User inzwischen Änderungen vorgenommen haben, die Auswirlung auf die Ergebnistabelle haben, dann wird es komplex.
Ich glaube nicht, dass es hier nötig wird, für ein _privates_ Gästebuch auf LOCKs und der Gleichen zurückzugreifen, da es im Idealfall nur einen administrationsbefugten Benutzer geben *sollte*.
Grüße aus Barsinghausen,
Fabian
Hello,
Ich glaube nicht, dass es hier nötig wird, für ein _privates_ Gästebuch auf LOCKs und der Gleichen zurückzugreifen, da es im Idealfall nur einen administrationsbefugten Benutzer geben *sollte*.
Von Locks war nicht dir Rede.
Ggf. benötigt man zusammengesetzte Schlüssel, um Duplicates handhaben zu können.
Aber für einfache Anwendungen (wie Du ja annimmst) wäre das tatsächlich überskaliert.
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom
Hello Bjoern,
hast Du schon mal unter dem Stichwort "blättern" im Archiv gesucht?
Da gibt es bestimmt fünf bis zehn fertige Funktionen und ausführliche Beschreibungen zum Thema.
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom
Hi Tom!
hast Du schon mal unter dem Stichwort "blättern" im Archiv gesucht?
Hab im Archiv gesucht, aber nicht dass gefunden was ich suche.
Mir wäre geholfen, wenn mir jemand sagen kann, wie ich den z.B. 25ten Datensatz einer Datenbank als diesen Identifizieren kann, auch ohne id.
P.S.: Wo findest du die Funktionen wenn du nach blättern suchst?
Gruß
Björn
Hello,
P.S.: Wo findest du die Funktionen wenn du nach blättern suchst?
gib ein "category:PHP blättern"
Da findest Du auf jeden Fall relevante Threads.
Habe ich sicherheitshalber eben nochmals überprüft ;o)
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom
echo $begrüßung;
Nun möchte ich beim Anzeigen der Einträge immer nur 5 Einträge pro Seite zeigen.
MySQL für Anfänger: SELECT ... FROM ... LIMIT x,y
Unter den Einträgen sollen Seitenzahlen aufgelistet sein, mit denen man per Mausklick entsprechenden Seiten mit z.B. Eintrag 25-30 anzeigen kann.
PHP für Fortgeschrittene: PEAR-Package Pager
echo "$verabschiedung $name";
MySQL für Anfänger: SELECT ... FROM ... LIMIT x,y
Wird so nicht gehen, da Datensätze bzw. id-nummern fehlen können!
PHP für Fortgeschrittene: PEAR-Package Pager
hört sich schon besser an. Man könnte also einfach alle Datensätze auslesen, diese in ein Array packen und dann mit dem Index des Arrays arbeiten.
Fallbeispiel:
Seite 1 wird standardmäßig aufgerufen mit den datensätzen die im array auf position 0-4 liegen. Ruf ich nun seite 5 auf, werden die arrayobjekte 24-29 eingelesen. (usw.)
Übergebe ich einfach die Seite die ich laden möchte (z.B. 1 oder 5)per GET-String, wäre dies nicht recht Resourcenaufreibend, wenn ich dann bei jedem Seitenladen alle Einträge aus der Datenbank auslesen und in das Arry packen müsste?
Geht dass nicht eleganter?
Gruß Björn
Hallo bjoern,
MySQL für Anfänger: SELECT ... FROM ... LIMIT x,y
Wird so nicht gehen, da Datensätze bzw. id-nummern fehlen können!
Hast du es ausprobiert?
Geht dass nicht eleganter?
Hast du es ausprobiert?
Grüße aus Barsinghausen,
Fabian
echo $begrüßung;
MySQL für Anfänger: SELECT ... FROM ... LIMIT x,y
Wird so nicht gehen, da Datensätze bzw. id-nummern fehlen können!
LIMIT interessiert sich nicht für die Inhalte der Datensätze.
PHP für Fortgeschrittene: PEAR-Package Pager
hört sich schon besser an. Man könnte also einfach alle Datensätze auslesen, diese in ein Array packen und dann mit dem Index des Arrays arbeiten.
Der Pager arbeitet auch ohne die gesamten Daten zu übergeben. Bei drei Gästebucheinträgen ist das nicht weiter wild, aber...
Es reicht also auch aus, nur ein paar Werte, wie Anzahl der darzustellenden Daten, Daten pro Seite und aktuelle Seite zu übergeben.
Und der Pager baut dir nur eine Blätterleiste zusammen. Die Darstellung der Daten musst du anderweitig vornehmen.
echo "$verabschiedung $name";
echo $begrüßung;
MySQL für Anfänger: SELECT ... FROM ... LIMIT x,y
Wird so nicht gehen, da Datensätze bzw. id-nummern fehlen können!LIMIT interessiert sich nicht für die Inhalte der Datensätze.
LIMIT 1,5 liefert also IMMER den 1.-5. Datensatz EGAL welche ID der entsprechende auto_increment Wert der Datensätze hat?
Gruß
Björn
echo $begrüßung;
LIMIT 1,5 liefert also IMMER den 1.-5. Datensatz EGAL welche ID der entsprechende auto_increment Wert der Datensätze hat?
Genauer gesagt: MySQL ermittelt anhand der anderen Parameter in der Query eine Ergebnismenge (eingeschränkt mit WHERE, sortiert mit ORDER BY, usw.). Auf diese Ergebnismenge wird LIMIT angewendet. Übrigens, LIMIT fängt bei 0 an zu zählen.
Und dann gibt es da noch SQL_CALC_FOUND_ROWS und FOUND_ROWS().
echo "$verabschiedung $name";