Marco: Variablenzuweisung klappt nicht

Hallo!

Ich habe mir fast die ganze Nacht um die Ohren geschlagen und bin zu keinem endgültigem Ergebnis gekommen. Könntet ihr mir helfen.

Gegeben:

  • 1 Formularfeld
  • 1 Listenauswahlfeld mit 5 Einträgen (Person 1 bis Person 5)
  • 1 Textfeld zur Eingabe des Namens für die Person 1 bis 5

Gesucht:
Bei entsprechender Wahl aus dem Listenmenü wird die Auswahl selektiert. Eine anschließende Eingabe eines Namens im Textfeld soll der Auswahl einen Namen zuweisen. Jeder der 5 Listeneinträge soll einen anderen Namen bekommen können.

Problem:
Die Variable für das Textfeld wird an eine andere Variable für die entsprechende Listenauswahl übermittelt. Wenn ich dann einen neuen Namen eingebe, und diesen Namen einem anderen Listeneintrag zuweise, ist der Name aus der ersten Variable, z.B. für die Person 1, nicht mehr in der ersten Variable gespeichert, sondern bekommt den Wert aus der zweiten Eingabe.

Kann mir jemand diesbezüglich helfen.

  1. Hi,

    Kann mir jemand diesbezüglich helfen.

    Welche Sprache denn? PHP?

    MfG Hopsel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    1. Ja, ich habe es mit PHP versucht.

      1. Hi,

        Ja, ich habe es mit PHP versucht.

        Kannst du uns zufälliger Weise ein paar Codeschnipsel zukommen lassen?

        Ansonsten mach doch für jede Person 1-5 ein extra Textfeld, wo die jeweiligen Namen eingegeben werden. Nicht ganz so elegant, aber das stört keinen.

        MfG Hopsel

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        1. Für die 5 Textfelder reicht der Platz nicht aus. Hatte ich mir auch schon überlegt. Muss doch eine andere Lösung geben.

          Hier die Auswahlliste:

          <select name="Auswahlliste" size="1" onChange="Merkenamen(this.value)" >
             <option selected value = "WA1">Wettk&auml;mpfer 1</option>
             <option value = "WA2">Wettk&auml;mpfer 2</option>
             <option value = "WA3">Wettk&auml;mpfer 3</option>
             <option value = "WA4">Wettk&auml;mpfer 4</option>
             <option value = "WA5">Wettk&auml;mpfer 5</option>
          </select>

          Hier das Textfeld:

          <input type="text" name="Namen">

          Hier die Funktion Merkenamen:

          <?
          function Merkenamen($Auswahlliste)
          {
          global $W1, $W2, $W3, $W4, $W5, $Auswahlliste, $Namen, $Arr, $NamenNeu;

          $NamenNeu = array ();

          if ($Auswahlliste == "WA1")
          {
             $NamenNeu[0] = $Namen;  //weiß nicht ob das mit dem Array
                                     //richtig ist
             $W1 = $NamenNeu[0];
          }
          if ($Auswahlliste == "WA2")
          {
             $NamenNeu[1] = $Namen;
             $W2 = $NamenNeu[1];
          }
          if ($Auswahlliste == "WA3")
          {
             $Zeig[2] = $Namen;
             $W3 = $NamenNeu[2];
          }
          if ($Auswahlliste == "WA4")
          {
             $NamenNeu[3] = $Namen;
             $W4 = $NamenNeu[3];
          }
          if ($Auswahlliste == "WA5")
          {
             $NamenNeu[4] = $Namen;
             $W5 = $NamenNeu[4];
          }
          }
          ?>

          So sieht mein Code aus. Bin aber Anfänger und weiß nicht, ob dies der richtige Weg ist.

          1. Hi,

            Ich habe trotzdem noch nicht ganz verstanden, wie du das eigentlich bewerkstelligst. Wird das Formular nach jeder Eingabe abgeschickt?

            MfG Hopsel

            --
            "It's amazing I won. I was running against peace, prosperity, and incumbency."
            George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
            1. Ja, das Formular wird nach jeder Eingabe abgeschickt.

              Die PHP-Sprache ist für mich Neuland. Ich weiß es nicht, ob mein Vorhaben sehr aufwändig ist, oder ob ich nur kleine formale Dinge nicht beachte. Ist es besser die Namen in einem Array zu speichern, oder in eine Datei und diese Zeilenweise wieder auszulesen?

              Mit dem Array wäre mir lieber. Oder kann ich auf das Array verzichten und jede Eingabe unter der Variable $Namen folgenden Variablen zuweisen:

              $Name1 = $Namen; (bei erster Eingabe im Textfeld Namen)
              $Name2 = $Namen; (bei zweiter Eingabe im Textfeld Namen)
              usw...

              1. Hi,

                <select name="Auswahlliste" size="1" onChange="Merkenamen(this.value)" >

                Hau dieses onChange raus. Javascript hilft dir hier nicht.

                <option selected value = "WA1">Wettk&auml;mpfer 1</option>
                   <option value = "WA2">Wettk&auml;mpfer 2</option>
                   <option value = "WA3">Wettk&auml;mpfer 3</option>
                   <option value = "WA4">Wettk&auml;mpfer 4</option>
                   <option value = "WA5">Wettk&auml;mpfer 5</option>
                </select>
                <input type="text" name="Namen">

                Das kann so stehen bleiben. Verschickst du das Formular per POST oder GET?

                Angenommen, du verschickst es über POST, dann sieht dein Quelltext ungefähr so aus:

                if($_POST["Auswahlliste"] == "WA1")
                     $person1 = $_POST["Namen"];
                if($_POST["Auswahlliste"] == "WA2")
                     $person2 = $_POST["Namen"];
                ...

                Das Problem ist, deine Variablen werden nicht gespeichert. Wozu brauchst du diese Namen? Du könntest diese Variablen in einer Session speichern, in einem versteckten Formularfeld, in einer Datenbank, in einer Datei oder gleich weiterverarbeiten. Was soll letztendlich passieren?

                MfG Hopsel

                --
                "It's amazing I won. I was running against peace, prosperity, and incumbency."
                George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
                1. Hallo Hospel!

                  Ich verschicke das Formular mit "get". Was wäre besser - dein "Post"-Vorschlag?

                  <form method="get" name="Berechnung" class="Stil14">

                  Ich brauche die Daten nur auf der gleichen Seite zum Weiterverarbeiten. Sie sollen weiter unten im Fenster in einer Tabellespalte untereinander eingetragen und angezeigt werden.

                  Würdest du mir deine E-Mailadresse mitteilen?

                  1. Hi,

                    Würdest du mir deine E-Mailadresse mitteilen?

                    Schreib an webmaster@der-muh-clan.de

                    MfG Hopsel

                    --
                    "It's amazing I won. I was running against peace, prosperity, and incumbency."
                    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
          2. hi,

            <select name="Auswahlliste" size="1" onChange="Merkenamen(this.value)" >

            Hier die Funktion Merkenamen:

            <?
            function Merkenamen($Auswahlliste)

            das ist also eine PHP-funktion - die kannst du natürlich nicht einfach per onChange aus javascript heraus aufrufen.

            dir ist offenbar der unterschied zwischen client- und serverseitigen abläufen noch nicht klar.

            du musst das formular abschicken o.ä., um PHP zu einer verarbeitung der daten zu bewegen.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }