Mailinglisten-Archive |
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