Einträge in FORM-SELECT-Box tauschen

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

  • Einträge in FORM-SELECT-Box tauschen

    Hi,
    ich habe zwei HTML-Select-Formulare, die ich mit Einträgen aus der DB fülle. In der unteren Liste sind alle bereits eingeladene Gäste eines Events, oben sind alle nicht eingeladenen Gäste.

    Jetzt soll da eine Art Button (oder auch zwei) dazwischen, damit man die Personen aus der einen Liste in die andere (und vice versa) transferieren kann. Wie lässt sich das am Besten realisieren?

    Dannach möchte ich die untere Liste durchlaufen um ggf. Änderungen an der DB vornehmen zu können. Das krieg ich wohl noch hin, geht hier primär um das austauschen der Einträge.

    Viele Grüße


  • #2
    http://de.selfhtml.org/javascript/objekte/options.htm

    Alternativ sollte auch appendChild funktionieren, um die Options einfach ins andere SELECT „umzuhängen“.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Danke! Ein praxisnahes Beispiel gibt es hier: Example: Get the form element value using JavaScript

      Muss nur etwas an die eigenen Bedürfnisse angepasst werden.

      Kommentar


      • #4
        Habe ein Problem was mit den Daten aus der Select-Box anzufangen.

        Der Test-Code:

        PHP-Code:
        $guestlist=array();
        $guestlist $_POST['Invited'];

        foreach (
        $guestlist as $g) {
            echo 
        $g;

        Als Fehler erhalte ich: Invalid argument supplied for foreach().. Der Fehler kommt, egal ob ich das Feld nur Invited oder Invited[] benenne..
        hab ich da einen Denkfehler?

        EDIT: Ah ist klar, eigentlich wählt man normalerweise ja nur eine Option aus einem Select-Menu aus, daher ist das kein Array. Ist es denn möglich, alle Options (nicht selektiert) per POST zu übergeben?
        Zuletzt geändert von royale; 19.08.2010, 18:13.

        Kommentar


        • #5
          Zitat von royale Beitrag anzeigen
          EDIT: Ah ist klar, eigentlich wählt man normalerweise ja nur eine Option aus einem Select-Menu aus, daher ist das kein Array. Ist es denn möglich, alle Options (nicht selektiert) per POST zu übergeben?
          Nein.

          Aber du baust doch das select schon vorher auf. Woher kommen denn die Daten dazu?

          Peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Hi,
            die daten für das Select kommen aus der MySQL-DB. Wird bei Laufzeit generiert. Aber die options können sich ja durch das Javascript zur Laufzeit ändern, da einträge von einem zum anderen select-feld getauscht werden können.

            ich benötige beim submit aber nur die einträge aus dem einen select-feld.

            Was mir als "trick" noch einfiele wäre vielleicht, dass man das select-feld auf multiple stellt und dann beim onClick-Event vom Submit-Button per JavaScript alle Einträge selektieren lässt. Ginge das? Oder gibts da doch ne schönere Möglichkeit?

            Viele Grüße
            Zuletzt geändert von royale; 19.08.2010, 20:37.

            Kommentar


            • #7
              Schreib zu Beginn alle Einträge per PHP in ein JS-Array. Dann setzt du per PHP eine JS-Variable entsprechend der übergebenen POST-Werte und arbeitest dann bei einem onload alles per JavaScript ab. Ist nicht schön, ist nicht fein, aber es funktioniert.

              Alternative kannst du nach dem Absenden die select-Elemente auch direkt mit PHP erzeugen. Wenn dann etwas per Javascript ausgewählt wird, greifst du wieder auf das Array zu.

              Peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Die Daten kommen aus der MySQL-DB und werden dann in zwei Arrays geladen (für jedes Select-Feld einzeln).

                Hmm danke für den Tipp, aber da blick ich noch nicht so durch JS ist nicht so mein Steckenpferd.

                Man müsste das vorhandene JavaScript, welches zum Tauschen der Options zwischen den Listen genutzt wird, so umschreiben, dass auch die Elemente in den beiden PHP-Arrays direkt mitgetauscht werden. Aber das php-Array müsste man dann beim POST auch irgendwie übergeben, ist ja nicht direkt ans Formular gebunden.

                Kompliziert!

                Kommentar


                • #9
                  Denk einfach an die Reihenfolge. Zuerst wird PHP ausgeführt, dann Javascript. Damit JS die select-Felder manipulieren kann, benötigt es die Infos dazu. Die erzeugst du per PHP, da die Daten aus der DB kommen. Damit JS damit klarkommt, haust du sie in ein JS-Array.

                  Wenn nun jemand wild herumklickt, manipulierst du die select-Felder mit Javascript. Dann wird das Formular abgeschickt. PHP hat also neue Informationen. Ausgehend davon baust du die select-Felder neu auf. Wenn nun jemand wieder wild herumklickt, kommt Javascript zum Zuge. Und dafür benötigst du dann wiederum das von PHP erzeugte Array, das alle(!) Informationen beinhaltet.

                  Vielleicht schaust du dir mal das Tutorial an. Da wird zwar mit Ajax gearbeitet, aber vielleicht hilft es dir weiter.

                  Peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    Habe gerade sogar das hier gefunden

                    HTML/JavaScript - Submit all select list options - mredkj.com

                    Kommentar


                    • #11
                      Zitat von royale Beitrag anzeigen
                      Das ist ein ziemlich übler Hack. Pro option-Element benötigt man ein hidden-Feld. Oder es werden alle option-Elemente auf selected gesetzt. Dann weiß aber das serverseitige Script nicht, was nun tatsächlich ausgewählt worden ist. Zumindest schließe ich das aus den Code.

                      Peter
                      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                      Meine Seite

                      Kommentar


                      • #12
                        Wieso? Wenn alles auf select gesetzt wird beim absenden, werden doch alle options in das entsprechende array des multiple-select-felds gespeichert und können mit php verarbeitet werden. Dazu muss man nur das zu übertragene select-feld ja z.B. "guestlist[]" nennen. Es sollten ja alle Options aus dem einen Feld übertragen werden, vielleicht ist die Problemstellung nicht ganz klar geworden. Vielleicht wird das durch den Thread (http://www.php-resource.de/forum/use...anagement.html) klarer.

                        Aber Problem sollte dadurch ja gelöst sein, nehme die "selectAll" Variante.

                        Kommentar

                        Lädt...
                        X