Positionierung von Links (nach oben/ unten) verschieben bei Open Source Appl

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

  • Positionierung von Links (nach oben/ unten) verschieben bei Open Source Appl

    Guten Abend Nachtarbeiter,

    ich hab schon ein bisschen im Forum geblättert und auch einen Eintrag gefunden, der sich mit meinem Problem beschäftigt, in eine DB eingetragene Links nach oben oder unten verschieben zu können. Leider sind hier die Links, die zu Scripten führen, tot. Kann mir nicht jemanden einen Script/Code posten, an dem ich nachvollziehen kann, wie das genau funktioniert.

    Besten Dank im Voraus
    (PS: Google hat auch keine Vernünftigen Resultate geliefert!)

  • #2
    Wie sehen deine Ansätze aus?

    Kommentar


    • #3
      ich hab mir überlegt, eine spalte position anzulegen. beim verschieben des links soll mit einer update-anweisung der vorherige und der folgende eintrag in der tab um eins verringert oder erhöht werden. ungefähr so:

      Link Pos
      Link 1 1
      Link 2 2
      Link 3 3
      Link 4 4


      Würde man jetzt den 3. Link um eins nach oben verschieben, wäre die anweisung für den 2. Link +1 und für den 3. Link -1. So ungefähr habe ich mir das überlegt habe allerdings gehofft, irgendwo ein script zu finden, an dem ich das erstmal nachvollziehen kann. Mein Problem beginnt schon bei der UPDATE Anweisung. Wie krieg ich z.B. hin, den vorherigen datensatz zu verändern ohne vorher eine select-anweisung ausführen zu müssen?

      Kommentar


      • #4
        hier hatte ich das schon ein mal erklärt, vielleicht hilft dir das.
        http://www.php-resource.de/forum/sho...threadid=60429

        Kommentar


        • #5
          Ja den hatte ich schon gelesen, nur leider ist der Link tot
          (http://devdesign.de/log/programmier...ustauschen.html)

          Kommentar


          • #6
            das wichtigste daraus habe ich wiedergegeben.

            Kommentar


            • #7
              okay ist alles gut nachzuvollziehen. Hab allerdings einen Hänger.

              Ich sag mal was ich denke

              Code:
              UPDATE ...
              SET position = ([summe] - position) 
              WHERE position IN ([alte_position],[neue_position]);
              link pos
              blabla 1
              blabla 3
              blabla 7

              jetzt soll pos 3 um eins nach oben geschoben werden. Muss ich dann nicht nur in pos 3 --> 1 setzen und in pos 1 --> 3 ??? Also einfach tauschen? Wenn ich jetzt aber die Position hab, wie krieg ich den davor oder danach liegenden Datensatz raus? -1 oder +1 wäre dumm, da ja bspw. ein Link gelöscht werden könnte.

              Kommentar


              • #8
                jetzt soll pos 3 um eins nach oben geschoben werden. Muss ich dann nicht nur in pos 3 --> 1 setzen und in pos 1 --> 3 ??? Also einfach tauschen?
                jetzt überleg mal, wie die zusammengesetzte query aussehen würde:

                Code:
                UPDATE ...
                SET position = (4 - position) 
                WHERE position IN (3,1);
                verstehst du das?

                Wenn ich jetzt aber die Position hab, wie krieg ich den davor oder danach liegenden Datensatz raus?
                angenommen, die 3 ist unser aktuelles element, welches wir nach oben schieben wollen. dann ermitteln wir das nächstkleinere element mittels
                Code:
                SELECT position FROM ...
                WHERE position < 3 
                ORDER BY position DESC
                LIMIT 1
                und erhalten unsere eins.

                beim nächstgrößeren - analog mit "größer" statt "kleiner" und "ASC" statt "DESC".

                Kommentar


                • #9
                  Code:
                  SELECT position FROM ...
                  WHERE position < 3 
                  ORDER BY position DESC
                  LIMIT 1
                  und erhalten unsere eins.

                  beim nächstgrößeren - analog mit "größer" statt "kleiner" und "ASC" statt "DESC".
                  Na, sortieren um das Maximum/Minimum zu finden, was der Prof da immer über den Aufwand gemeckert hat

                  Kommentar


                  • #10
                    ja prima. Mein Aussetzer hatte ich bei kleiner oder größer gleich in Verbindung mit LIMIT. Prima, prima, prima, jetzt ist alles Glas klar.

                    Besten Dank!!!

                    Kommentar


                    • #11
                      Original geschrieben von PHP-Desaster
                      Na, sortieren um das Maximum/Minimum zu finden, was der Prof da immer über den Aufwand gemeckert hat
                      das hab ich irgendwie nicht verstanden...

                      Kommentar

                      Lädt...
                      X