Sortierungs(funktion)

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

  • Sortierungs(funktion)

    Hallo Leute!
    Ich habe mal ne Frage zu einer Sortierungsfunktion...wie zB bei einer Forum die Anordnung der einzelnen Boards...

    Ich habe das jetzt folgendermaßen geregelt das ich nen extra INT feld namens SORT gemacht habe und dann wenn ich etwas verschieben will dieses feld um eins erhöhe oder es um eins runtersetze.

    Das Problem ist da natürlich das es nicht immer nur in der "Ansicht" um eins nach oben verschoben wird sondern manchmal gar nicht oder auch mehr als einmal, natürlich kann man so oft das hin und herklicken bis es passt...aber das reicht mir nicht *gg*

    Ich habe das so das ich 2 Pfeile an jedem Feld habe, eins das um eins erhöht und eins das runtersetzt.

    Jedes Feld ist ein Formular für sich, also nen SELECT field wie das bei manchen Foren ist ist leider nicht so möglich

    Würde mich freuen wenn jemanden da was spontan einfällt

    MfG, Chris

  • #2
    brainstorming? *verschieb*

    evtl hilft http://www.php-resource.de/forum/sho...light=menumenu weiter

    Kommentar


    • #3
      tja, es reicht nicht, nur die Sortierspalte (das int-dings) von dem einen Element zu ändern, du musst natürlich auch die anderen entsprechend anpassen.

      Ich mach das so, dass für nach oben schieben, wird die Sortiervariable mit der von dem Element dadrüber ausgetauscht, und für nach unten schieben entsprechend mit der von dem dadrunter.
      hopka.net!

      Kommentar


      • #4
        Wie komme ich bitte an den vorigen mysql eintrag um den dann mit der gewählten auszutauschen?

        mysql_insert_id() wäre mir da spontan eingefallen aber das geht auch net....

        EDIT: Lezte ID kein Problem, aber die ID die danach kommt??? da bin ich mit meinem Latein am Ende
        Zuletzt geändert von stf]Daywalker; 28.12.2003, 15:01.

        Kommentar


        • #5
          entweder sorgst du dafür, dass es eine durchgehende nummerierung gibt, dann musst du einfach +1 bzw. -1 machen,

          oder du machst es folgendermaßen:
          Code:
          SELECT * FROM tabelle WHERE sort < [sort des zu verschiebenden Elements] ORDER BY sort LIMIT 1
          dann hast du schonmal das Element, was drüber steht, austauschen ist dann recht einfach.
          wenn du das haben willst, was drunter steht musst du entweder andersrum sortieren, oder statt dem < ein > verwenden.
          hopka.net!

          Kommentar


          • #6
            Gut, damit kann ich glaube ich was anfangen, ich werd das ausprobieren ansonsten komm ich wieder *gg*

            Danke nochmal

            Kommentar


            • #7
              Ok, ich kriegs nicht hin...

              Das Problem ist ja das die Nummern wenn man erstellt immer 0 sind...da man ja nicht 2 auto increment felder machen kann, sagt jedenfalls mein phpmyadmin...

              Könnte man nicht einfach die IDs austauschen?
              und dann danach sortieren?

              MfG, Chris

              P.S.: Mit brainstorming hat das meiner Meinung zwar weniger zu tun aber ok

              Kommentar


              • #8
                Könnte man nicht einfach die IDs austauschen?
                und dann danach sortieren?
                Dann wärens keine IDs mehr

                P.S.: Mit brainstorming hat das meiner Meinung zwar weniger zu tun aber ok
                meiner meinung nach schon, du musst ja erstmal ein prinzip entwickeln. Außerdem sitz ich am längeren heben

                es sollte eigentlich kein prob darstellen, wenn sort 0 ist. dann werden die eben als erstes angezeigt. und wenn sie nicht als erstes angezeigt werden sollen, dann musst du halt ein anderes sort angeben. alternativ kannst du evtl was mit NULL machen, würd ich aber nicht.

                Kommentar


                • #9
                  In PHPMYADMIN kann ich dir IDs auch abändern....aber in meinen script, ich habe es gerade probiert geht es wirklich nicht....verdammt, das hätte funktionieren können...

                  Dann muss ich halt es halt nochmals abändern

                  Ok du sitzt am längeren hebel...deswegen bin ich lieber ruhig

                  EDIT: Jetzt hilf mir doch einer Verdammte hacke ich kriegs nicht hin...ich brauche 2 Auto increment felder aber das geht nicht....und ich will die Felder austauschen, wenn aber überall 0 drinne steht nützt das ja auch nichts.....
                  Zuletzt geändert von stf]Daywalker; 28.12.2003, 15:54.

                  Kommentar


                  • #10
                    dann musst du halt beim erstellen dem Ding schon ne Position verpassen.
                    ganz unten z.B. mit
                    Code:
                    INSERT INTO tabelle (sort) VALUES (MAX(sort)+1)
                    (hoffe mal, dass das so geht, habs nicht getestet, auf jeden fall soll das Feld sort um 1 höher als das größte bisher vorhandene werden)
                    hopka.net!

                    Kommentar


                    • #11
                      Nein das funktioniert leider nicht....ist aber ne gute Idee

                      Kommentar


                      • #12
                        dann musst du das halt vorher extra auslesen.
                        Code:
                        SELECT MAX(pos)+1 new_pos FROM tabelle
                        dann hast du direkt die neue position, ansonsten lässt du das +1 weg und addierst die 1 dann in PHP - ist egal.
                        Jetzt hast du den Wert, den du in dem Insert verwenden musst.

                        hättest du aber auch selber drauf kommen können, oder?
                        hopka.net!

                        Kommentar


                        • #13
                          Bin ich natürlich, habe ich auch schon, bin gerade dran das fertig zu machen

                          Kommentar

                          Lädt...
                          X