Bestimmte Datensatzanzahl (MySQL) per PHP rotierend anzeigen?

preko

Erfahrenes Mitglied
Hi,

ich habe folgendes Problem:

Ausgangssituation:
ich habe etwa 100 Datensätze mit ID-Nr. von z. B. 130 - 230.

Zielsetzung:
ich möchte auf einer (PHP-) Formularseite beim erstmaligen Aufruf der Seite den ersten Datensatz meiner MySQL Datenbanktabelle anzeigen lassen - soweit kein Thema.
Auf dieser Formularseite sind zwei Buttons angebracht mit der Beschriftung "Vor" und "Zurück" - soweit auch kein Thema!

Beim drücken des "Vor" Buttons soll dann der nächstfolgende Datensatz angezeigt werden. Also, wenn z. B. zuerst die ID-Nr. 130 angezeigt wird, soll dann die 131, dann die 132, etc. angezeigt werden - grundsätzlich auch kein Problem, wenn nicht dazwischen ID-Nr. fehlen würden, weil Datensätze gelöscht wurden!
So kann es z. B. sein, dass die ID-Nr. 133 fehlt, da der Datensatz vorher gelöscht wurde. Beim "Zurück" Button soll das ganze natürlich konträr funktionieren.

Und wenn dann die ID-Nr. 230 erreicht wurde, gibt es ja danach keine Datensätze mehr, also soll dann wieder der erste Datensatz angezeigt werden, bzw. in umgekehrter Richtung der letzte Datensatz, usw.!

Ich hoffe, ich habe mich halbwegs verständlich ausgedrückt.

Hat jemand einen Lösungsansatz, mit welcher Methode ich an die Sache rangehen kann, oder wo eine detailierte Anleitung zum Erstellen solch einer Funktionalität zum Studieren ist? :confused:

Ich muss diese Seite heute noch hinkriegen, dacher bin ich für jeden Hinweis dankbar! ;)


Beste Grüße,
preko
 
preko hat gesagt.:
Hat jemand einen Lösungsansatz, mit welcher Methode ich an die Sache rangehen kann, ... ?
Mein Lösungsansatz wäre eine Blätterfunktion. Du musst lediglich darauf achten, dass Du nur einen Datensatz pro Seite anzeigst. Ein kleine Abfrage ob Du beim ersten bzw. letzten Datensatz bist ist dann auch kein Problem mehr.

Gruß hpvw
 
Hi,

ich würds theoretisch so angehen:

Bei jedem Seitenaufruf werden alle gewünschten Datensätze in einen Array geladen.

Die aktuelle Seite ist der key des Arrays, die vorherige der key - 1, der folgende key + 1

Als Daten werden dann nur die Werte mit dem aktuellen Key ausgegeben.

Bei key == 99 ist der folgende Key wieder 0, bei key == 0 ist der vorherige die 99 (bei einer Gesamtmenge von 100 Datensätzen)

Ich hoffe, ich konnte helfen.
Guten Rutsch
 
Hi,

erst einmal vielen Dank für die Anregungen.

Das Blätter-Tut muß ich mir noch verinnerlichen.

@JaguarGorgone:
wird nicht die Datenmenge/Verarbeitungsgeschwindigkeit zu groß, wenn der komplette Datenbestand in ein Array geladen wird? Der Datenbestand wird ja im Laufe der Zeit größer.


Beste Grüße,
preko
 
Vielleicht liest Du dann besser erst nur alle IDs in einen Array und dann erst in einem zweiten Schritt die anderen Daten mit der aktuellen ID. Das sollte die Ressourcen etwas schonen.
 
JaguarGorgone hat gesagt.:
Vielleicht liest Du dann besser erst nur alle IDs in einen Array und dann erst in einem zweiten Schritt die anderen Daten mit der aktuellen ID. Das sollte die Ressourcen etwas schonen.
Das schont die Ressourcen nahezu gar nicht und erfordert eine weitere Abfrage, die Ressourcen kostet.

Wenn es wirklich auf Grund der Datenmenge oder eines schwachen Servers zeitkritisch werden sollte, ist IMHO der einzige Weg, die Datenmenge direkt beim Datenbankserver über LIMIT einzuschränken.

Gruß hpvw
 
Das die Auswahl über LIMIT eingeschränkt wird, davon bin ich mal stillschweigend ausgegangen.

Schont es nicht Serverressourcen, wenn man nur einen Wert statt einen kompletten Datensatz ausliest?

Schöne Grüsse
 
JaguarGorgone hat gesagt.:
Schont es nicht Serverressourcen, wenn man nur einen Wert statt einen kompletten Datensatz ausliest?
Ja schon, aber Auslesen aller IDs und eines ganzen Datensatzes mit einer zweiten Abfrage dauert vermutlich länger als einen Datensatz mit LIMT auszulesen und mit COUNT(*) in einer zweiten Abfrage die Anzahl zu ermitteln. Vor allem das Arbeiten auf dem Array in PHP kostet vermutlich Zeit.

Genauen Aufschluss gibt natürlich nur ein Performancetest.

Gruß hpvw
 
Zurück