Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Vorherigen und nächsten Eintrag finden [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Vorherigen und nächsten Eintrag finden


 
JanS
18-05-2002, 10:32 
 
Hallo zusammen,

folgendes Problem tut sich mir auf und ich finde keine Lösung.
Ich habe eine Tabelle in der Datensätze gespeichert sind
(ID | Name | Datum | etc.)

Man kann sich jetzt ein Liste mit allen Datensätzen anzeigen lassen welche beispielsweise nach dem Namen sortiert absteigend/aufsteigend angezeigt werden. Durch eine Klick auf den entsprechenden Eintrag gelangt man auf eine Detailseite auf welcher durch die übergebene ID weitere Informationen aus der Datenbank gelesen und angezeigt werden.

Auf dieser Detailseite möchte ich eine Link zum nächsten bzw. vorherigen Eintrag darstellen. Dazu versuche ich in Abhängigkeit der Sortierung die entsprechenden IDs auszulesen.

Das Problem ist, dass Einträge mit gleichem Namen vorhanden sind. Ich habe versucht die Einträge mit Abfragen wie "WHERE name < $aktueller_name" etc. herauszufiltern, was aber nicht funktioniert, da Einträge mit gleichem Name so ignoriert werden.

Auch Abfragen à la "WHERE name <= $name AND id <> $aktuelle_id" funktionieren nicht, da dann auch Einträge gefunden werden, die eigentlich nach dem aktuellen Eintrag stehen.

Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt und ihr habt eine Tipp für mich.

Gruß Jan

 
hand
18-05-2002, 22:16 
 
Original geschrieben von JanS
Auch Abfragen à la "WHERE name <= $name AND id <> $aktuelle_id" funktionieren nicht, da dann auch Einträge gefunden werden, die eigentlich nach dem aktuellen Eintrag stehen.
Das schnalle ich nicht ganz. Nach dem aktuellen Eintrag? Die Selektionskriterien sind doch gleich geblieben oder? (Jetzt wirds kompliziert weil ich mir sicher bin, wenn ich meine Frage lese nicht erwarten kann, daß Du verstehen kannst was ich damit meine :()

Aber so müßte es doch funzen wenn Du die Sortierung mit DESC kombinierst, beim Vorlesen (ach wieder ein witziges Wort, beim Nach Vor Lesen meine ich) mit ASC.

Alternativ dazu müßte es auch funktionieren, wenn Du die IDs mittels Array über Sessionvariable weiterreichst. Dann brauchst Du nur mehr durch den Array zu schleifen und nie mehr die Treffer-Records aus der DB selektieren. Kommt aber sicher auf die Datenmenge drauf an.

Oder Du reichst die Suchbegriffe weiter (was Du vermutlich ohnehin tust) und selektierst immer von neuem, schleifst durch das Ergebnis, bis Du die ID erreichst, die Du anzuzeigen hast. Die ID davor hast Du Dir gemerkt und einmal schleifst Du noch weiter um die nächste ID zu ermitteln.

Pfoa - ich werde es nicht ganz getroffen haben denke ich, aber vielleicht ist der eine oder andere Ansatz darin verborgen, den Du nutzen kannst.

 
CHnuschti
18-05-2002, 22:30 
 
Am einfachsten ist es vermutlich, wenn du bei jeder Sortierung gleichzeitig ein 2-dimensionaler Array schreibst wo du alle gemäss der durchgeführten Sortierung aktuelle Paare ID <=> temp_ID reinschreibst. Dabei wäre dann temp_ID eine fortlaufende Nummer. Dieser array musst du dann jeweils mit auf die Detailseite rüberschaufeln. Dort musst du dann nur noch 1 vorwärts und rückwärts und hast den gewünschten Datensatz.

mfg

 
JanS
19-05-2002, 10:10 
 
Hallo!

Danke für Eure Antworten. Leider haben die mich noch nicht weitergebracht.
An die Möglichkeit der Übergabe der vorherigen/nächsten ID habe auch schon gedacht. Nur leider erfolgt der Aufruf der Detailseite nicht immer von der Liste aus. Er kann auch direkt erfolgen ohne die Gesamtliste auf der vorherigen Seite generiert zu haben.

Das PHP-Script das die Daten auf der Detailseite ausliest, müsste wohl quasi das Auslesen der Liste simulieren, aber nur jeweils 1 Datensatz vor bzw. hinter der aktuellen ID. Das Auslesen der Gesamtliste kommt leider auch nicht in Frage, da es insgesamt zu viele Datensätze wären.

Naja, vielleicht habt Ihr noch weitere Tipps....

Gruß Jan

 
CHnuschti
19-05-2002, 11:05 
 
Naja, begreifs eigentlich nicht voll und ganz.
Wenns darum geht, dass du nicht "endlose" Schleifen durchsuchlaufen willst, könntest du doch eigens eine Table machen, in der alle Paare ID <=> temp_ID für alle zur Verfügung stehende Sortierarten drinstehen. Diese wäre dann bei hinzufügen von Datensätzen neu zu schreiben. Dann musst du jeweils nur noch die ID & "Sortierart" zwischen den Seiten weitergeben und kannst die beiden benachbarten Datensätze gezielt mit 2 mysql-Abfragen ermitteln.
mfg

 
JanS
19-05-2002, 11:24 
 
Nunja, wenn ich 10 000 Datensätze habe, was nicht unrealistisch ist, und dann eine Extratabelle für 5 Sortiervariationen mal Absteigend/Aufsteigend anlege, erhalte ich nochmal locker 100 000 Datensätze in der neuen Tabelle....daran, dass diese Tabelle dann auch noch bei jedem neu hinzugefügten Datensatz aktualisiert werden muss, will ich gar nicht denken.

Gruß Jan

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:14 Uhr.