phpbar.de logo

Mailinglisten-Archive

[php] Pear DB und mysql_data_seek

[php] Pear DB und mysql_data_seek

Ringo Großer swek at gmx.net
Mon Feb 20 18:17:27 CET 2006


Hallo Julian,

Julian Schwarz wrote:
> Ich habe eine Listenausgabe als Ergebnis einer MySql-Abfrage. Ich
> kann nun einen Datensatz aus der Liste anzeigen lassen. Nun sollte es
> auf dieser Datensatzansicht aber auch möglich sein zum nächsten bzw.
> letzten Datensatz im Ergebnis zu blättern ohne extra in die Liste
> zurück zu müssen.

So etwas löst man üblicherweise mit ORDER BY und LIMIT.
Das ODER BY sorgt für die ständig gleiche Sortierung des
Query Results. Mittels LIMIT X,Y kannst du dann die Position
im gesamten Ergebsnis beeinflussen. Also entweder mit einem
Y > 1 einen Ausschnitt von mehreren Ergebnissen darstellen
oder mit Y = 1 genau ein Ergebnis darstellen.
Das X bestimmt dann die Startposition des Ausschnittes.
Wenn du alle diese Parameter in der URL oder Session mitführst,
kannst jederzeit zwischen Listen und Einzeldatensatz hin- und her-
schalten sowie in beiden Ansichten blättern.

Du schreibst dir für die Navigation eine kleine Klasse, welche dir
zu einer aktuellen Position, der gesamten Anzahl und der
Ausschnittgröße (dargestellte Ergebnisse pro Seite) die entsprechenden
Parameter für die Navigation ausrechnet. Also Positionen:
- erste Seite, erster Datensatz
- letzte Seite, letzter Datensatz
- nächster Seite, nächster Datensatz
- vorige Seite, voriger Datensatz

> Ich habe mich etwas umgesehen und bin auf die Funktion
> mysql_data_seek gestoßen. Die müsste Abhilfe schaffen, da ich einen
> direkten Record aus dem Result anspringen kann.

Sicher ist dafür jedesmal eine Query notwendig, aber wie willst du
ein Result über mehrere Klicks (Formular oder Links) behalten?
Das Ergebnis existiert ja nur zur Laufzeit im DB-Objekt und ist spätestens
bei Ausgabe im Browser hinfällig. Dann gäbe es noch den MySQL Cache,
aber da machst du dir mehr Arbeit als notwendig. Ich meine, dass die
oben beschriebene Lösung üblich ist. Also über jeweils eine neue Query
mit Position gezielt den Datensatz aus der DB holen.

regards, Ringo 


php::bar PHP Wiki   -   Listenarchive