Vorherigen und nächsten Eintrag finden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Vorherigen und nächsten Eintrag finden

    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

  • #2
    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.
    Zuletzt geändert von hand; 18.05.2002, 22:19.

    Kommentar


    • #3
      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

      Kommentar


      • #4
        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

        Kommentar


        • #5
          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
          Zuletzt geändert von CHnuschti; 19.05.2002, 11:11.

          Kommentar


          • #6
            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

            Kommentar

            Lädt...
            X