Den nächsten Datensatz eines Results ermitteln

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

  • Den nächsten Datensatz eines Results ermitteln

    Hallo,

    folgendes Problem:
    in einem Galerie Script habe ich eine Tabelle wo die Galerien gespeichert sind und eine für die Bilder die über die Galerie ID verknüpft sind.

    Wenn nun jemand ein Bild anguckt wird also aus der Bilder Tabelle das Bild mit der aktuellen ID geholt, soweit kein Thema.

    Um nun aber einen Link auf das nächste oder letzte BIld zu erstellen brauche ich natürlich die ID des letzten bzw nächsten bildes. Auf die ID einfach 1 addieren / abziehen geht nicht weil der Datensatz mit der ID ja nicht zwangsläufig zum gleichen Galerie gehören muss bzw auch nachträglich gelöscht worden sein kann.

    Bisher ist das so gelöst das ich halt alle IDs der aktuellen Galerie einlesen muss um die nächste / letzte zu bestimmten, mir wurde aber gesagt das ginge auch anders, so das man nur einen Query braucht und nicht alle Datensätze jedesmal einlesen muss.
    Ich habe jetzt längere Zeit danach gesucht aber nichts gefunden, daher bitte ich um Hilfe.
    Ist das evetuell etwas ähnliches wie SQL_CALC_FOUNDROWS oder so ?

    vielen dank für jeden tipp!

  • #2
    http://www.php-resource.de/forum/sho...threadid=60117

    letzte antwort.

    Kommentar


    • #3
      hm bringt mich auch nicht wirklich weiter

      foo.php überprüft die existenz der variable "direction" und wertet sie aus. daraufhin lässt sich der nächste bzw. vorige datensatz mithilfe einer query ermitteln.
      genau der query würde mich interessieren, da müsste ich doch trotzdem wieder alle ids einlesen oder ich kenne da irgendwas in SQL nicht womit das geht, aber genau danach frage ich ja

      Kommentar


      • #4
        Du kennst LIMIT nich?

        Kommentar


        • #5
          sicher kenne ich LIMIT, ich wüsste aber nicht wie mich das weiterbringt...

          wenn ich die galleryid mit übergebe könnte ich mir was mit LIMIT vorstellen, aber wenn ich nur die bildid habe nicht

          Kommentar


          • #6
            Dann besorgst du dir die Galery ID. Die BildID ist überflüssig.

            Ich überlege gerade ob du der Typ warst, dem ich da letztens schon ne Frikadelle ans Knie gelabert habe.

            Kommentar


            • #7
              grob:
              Code:
              SELECT `id` FROM `tabelle`
              WHERE `id` < $_GET['id']
              ORDER BY `id` ASC
              LIMIT 1
              das ist fürs nächste element. fürs vorige muss man das ungleichheitszeichen und die sortierrichtung ändern.

              Kommentar


              • #8
                Original geschrieben von TobiaZ
                Ich überlege gerade ob du der Typ warst, dem ich da letztens schon ne Frikadelle ans Knie gelabert habe.
                AUTSCH! Ja, der warst du! http://www.php-resource.de/forum/sho...highlight=Haxe

                Alles umsonst und dann machst du auch noch nen neuen Thread auf.

                Kommentar


                • #9
                  Original geschrieben von TobiaZ
                  Dann besorgst du dir die Galery ID. Die BildID ist überflüssig.

                  Ich überlege gerade ob du der Typ warst, dem ich da letztens schon ne Frikadelle ans Knie gelabert habe.
                  genau der bin ich aber ich habe trotzdem keine lösung.

                  eure lösungen klappen alle wenn ich auch eine Gallery ID habe, die wollte ich aber eigentlich nicht mit übergeben, aber wenn es nicht anders geht muss ich das wohl.

                  blah, in dem anderen thread waren nur irgendwelche ungenauen angaben die mir nicht geholfen haben. wenn du gleich gesagt hättest übergib die galleryid mit hätte ich ja gewusst was du meinst...

                  da fällt mir gerade noch ein, wenn ich das so mit < > mache brauche ich ja jeweils einen query für das nächste und einen für das vorherige, ich kann ja nicht gleichzeitig nach < und > suchen.

                  man könnte allerdings die bilid ganz weglassen und einen normalen index für alle bilder machen und dann per LIMIT $index-1,2
                  das müsste gehen und ist vermutlich auch das was tobiaz meint
                  Zuletzt geändert von kaguya; 09.10.2005, 21:06.

                  Kommentar


                  • #10
                    wenn ich das so mit < > mache brauche ich ja jeweils einen query für das nächste und einen für das vorherige
                    Kannst beide Queries zu einer vermengen, zum Beispiel mit UNION.

                    Kommentar


                    • #11
                      da fällt mir gerade noch ein, wenn ich das so mit < > mache brauche ich ja jeweils einen query für das nächste und einen für das vorherige, ich kann ja nicht gleichzeitig nach < und > suchen.
                      So ein schwachsinn! Du brauchst natürlich nur eine der beiden Queries. Je nach dem, ob du auf der Vorgängerseite oder auf der Nachfolgerseite bist!

                      Kommentar


                      • #12
                        Original geschrieben von TobiaZ
                        So ein schwachsinn! Du brauchst natürlich nur eine der beiden Queries. Je nach dem, ob du auf der Vorgängerseite oder auf der Nachfolgerseite bist!
                        Ich habe das ganze jetzt eh gelöst, einfach für jede Galerie einen inkrementierenden BIldindex und dann beim query LIMIT $pos,1 fertig.

                        Ich will kein &direction= irgendwas, dann würde sich doch id in der adressleiste nicht ändern und wenn dann jemand den link kopierrt und in nem forum oder icq reinstellt sehen die leute nen anderes bild.
                        aber wie gesagt problem ist gelöst, brauchst dich nicht weiter aufregen
                        Zuletzt geändert von kaguya; 10.10.2005, 09:27.

                        Kommentar


                        • #13
                          und wenn dann jemand den link kopierrt und in nem forum oder icq reinstellt sehen die leute nen anderes bild.
                          nein. warum sollten sie?

                          Kommentar


                          • #14
                            Ich habe das ganze jetzt eh gelöst, einfach für jede Galerie einen inkrementierenden BIldindex und dann beim query LIMIT $pos,1 fertig.
                            Juhu! Für jede Galerie eine eigene Tabelle...
                            Schon mal nen Bild gelöscht???

                            aber wie gesagt problem ist gelöst, brauchst dich nicht weiter aufregen
                            Ich rege mich nicht auf, aber ich halte es für notwendig, deine Lösung als absolut unausgereift zu bezeichnen. Nicht dass die suchenden User den Kram übernehmen. Wenn du sowas verbockst, kann es ja egal sein.

                            Kommentar


                            • #15
                              naja wenn ich ne url habe ala showbild.php?id=55&direction=next würde in der showbild.php geguckt welche ID ist größer 55 LIMIT 1 und das bild angezeigt, in der URL Zeile würde doch aber immernoch die 55 als bildid stehen, aber dann würde man immer das nächste Bild zu 55 sehen.

                              Man könnte höchstens das Bild auslesen und dann ein header redirect auf die showbild.php mit der neuen bildid machen, oder habe ich gerade ein brett vorm kopf ?

                              aber wie gesagt, meine lösung mit &pos und gallery id als übergabeparameter funzt wie es soll und ich brauche nur einen query der nur einen datensatz ausliest.

                              Kommentar

                              Lädt...
                              X