phpbar.de logo

Mailinglisten-Archive

[php] Pear DB und mysql_data_seek

[php] Pear DB und mysql_data_seek

Sebastian Mendel lists at sebastianmendel.de
Die Feb 21 09:26:02 CET 2006


Julian Schwarz wrote:
> 
> Tach zusammen!
> Schon wieder hab ich ein Problemchen:
> 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.
> 
> 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.
> 
> Zu meiner Enttäuschung mußte ich feststellen, dass meine Lieblingsklasse = PEAR
> DB (ich benutze sie überall) diese Funktion nicht unterstützt.
> 
> Kann ich dennoch irgendwie mir Pear_DB auf die mysql_data_seek zugreifen? Wie
> habt Ihr dieses Problem gelöst (ich denke ihr kennt soetwas)...

ich hatte das selbe Problem, eine Kundenliste (30 Einträge pro Seite) 
und in der Kunden-Detail-Ansicht soll man durch die gesamten Liste 
durchblätteren können (nicht nur die zuletzt 30 geholten)

  - suche in der DB die Kunden (mit oder ohne Suchstring)
  - LIMIT 30 + 2, einen Datensatz davor und einen danach, bei der ersten 
Seite nur den danach

also:

Seite 1: SELECT * FROM `kunden` LIMIT 31,0
Seite 2: SELECT * FROM `kunden` LIMIT 32,28
Seite 2: SELECT * FROM `kunden` LIMIT 32,58
...

angezeigt werden 30 in der Ergebnis-Liste

in der Detail-Ansicht gibt es je einen Link mit vor und zurück die die 
entsprechenden Kunden-Id's übergeben

über die Id lade ich den Kunden und zeige ihn an, außerdem überprüfe ich 
die Position der ID in meinem Result-Array (array(ID->Kundendatensatz, 
...,)), ist die ID die erste oder letzte wird automatisch die nächste 
oder vorige Seite geladen.

So habe ich immer nur 30 Datensätze in der Session, ohne Details nur die 
für die Listenanzeige notwendigen Daten, und der Benutzer kann durch 
seine gesamte Suche blättern

  - er landet, wenn er wieder zur Listenansicht wechselt, immer auf der 
aktuellen Seite wo der zuletzt angeschaute Kunde ist
  - ist vollkommen unabhängig von der Tabellengröße/Ergebnissätze


-- 
Sebastian Mendel

www.sebastianmendel.de
www.sf.net/projects/phpdatetime | www.sf.net/projects/phptimesheet

php::bar PHP Wiki   -   Listenarchive