Ankündigung

Einklappen
Keine Ankündigung bisher.

Dynamische Auswahlliste erzeugen

Einklappen

Neue Werbung 2019

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

  • Dynamische Auswahlliste erzeugen

    Hallo zusammen,
    ich brauche mal wieder eure Hilfe.
    Ist mein nachfolgender Code so korrekt und wird abgearbeitet oder habe ich was übersehen?
    Es sollen zwei Auswahllisten / Menüs erscheinen, wo mehrere Einträge auswählbar sind und nach dem Klick auf "absenden" sollen die Ergebnisse der Auswahl angezeigt werden. Bzw. "Das nichts gewählt wurde".

    Vielen Dank für eure Mühen und Ideen bzw. Hilfen.

    PHP-Code:
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8" />
      <title>E1_dynAuswahl</title>
      <?php
        
    function set_option($id$name$options$multiple)
        {
        
    $ausgabe =  "value='{$name}'";

        if (isset(
    $_POST["dynAuswahl"]))
        {
            if (
    $_POST[$id] == $name)
            {
                
    $ausgabe .= " selected";
            }
        }

        if(empty(
    $text))
        {
            
    $text $name;
        }

        
    $ausgabe .= ">$text";
        echo 
    $ausgabe;
        }

        function 
    auswerten()
        {
        if (
    $_POST["dynAuswahl"] == ""
            
    && $_POST["dynausWahl1"] == "")
        {
            echo 
    "<p>Es wurde keine Auswahl getroffen, bitte wählen Sie etwas aus.</p>";
        }
        else
        {
            echo 
    "<h3>Vielen Dank..</h3>\n";
            echo 
    "<p>Sie wählten:</p>\n";
            echo 
    "<ul>\n";
            if(
    $_POST["dynAuswahl"] != "")
            {
                echo 
    "<li>Auswahl: {$_POST["dynAuswahl"]}</li>\n";
            }
            if(
    $_POST["dynAuswahl1"] != "")
            {
                echo 
    "<li>Auswahl: {$_POST["dynAuswahl1]}</li>\n";
            }

            echo "
    </ul>\n";
        }    
        }
      ?>
    </head>
    <body>
    <?php
    if (isset(
    $_POST["dynAuswahl"]))
    {
        
    $dynAuswahl = $_POST["dynAuswahl"];
        
    $dynAuswahl1 = $_POST["dynAuswahl1"];
        auswerten();
    }
    else
    {
        
    $dynAuswahl = "";
        
    $dynAuswahl1 = "";
    }
    ?>
    <form action = "
    <?php echo $_SERVER["PHP_SELF"]; ?>" method = "post">
      <h1>Getroffene Auswahl</h1>

    <fieldset>
    <h2>Bitte wählen Sie</h2>
    <p>
    <label for="dynAuswahl">dynAuswahl:</label>
    <select id="dynAuswahl" name="dynAuswahl" >
        <option <?php set_option("dynAuswahl""""Brot");?></option>
        <option <?php set_option("dynAuswahl""Butter"""); ?></option>
        <option <?php set_option("dynAuswahl""Milch"""); ?></option>
        <option <?php set_option("dynAuswahl""Eier"""); ?></option>
    </select>
    </p>
    <p>
    <label for="dynAuswahl1">dynAuswahl1:</label>
    <select id="dynAuswahl1" name="dynAuswahl1">
        <option <?php set_option("dynAuswahl1""""Schrauben"); ?></option>
        <option <?php set_option("dynAuswahl1""Nägel""");?></option>
        <option <?php set_option("dynAuswahl1""Nadeln""");?></option>
        <option <?php set_option("dynAuswahl1""Haken""");?></option>
        <option <?php set_option("dynAuswahl1""Dübel""");?></option>
    </select>
    </p>
    </fieldset>    
    <input type = "submit" value="abschicken"/>
    </p>
    </fieldset>
    </form>

    </body>
    </html>

  • #2
    Das zu prüfen ist Deine Aufgabe!

    Kommentar


    • #3
      Hallo!

      Was ich gefunden habe:
      1. Wozu braucht set_option() den Parameter $multiple?
      2. Du gibst im ersten PHP-Block in einer der letzten Zeilen
      echo "<li>Auswahl: {$_POST["dynAuswahl1]}</li>\n";
      eine Auswahl aus. Da befindet sich ein Syntaxfehler.. Richtig wäre
      echo "<li>Auswahl: {$_POST["dynAuswahl1"]}</li>\n";
      3. Funktion auswerten(): Du überprüfst, ob die $_POST-Variablen leer sind. Überprüfe dabei bitte auch isset($_POST[...]) für die beiden Variablen. Ich denke, nämlich, dass ($_POST[...] == "") im Fall, dass $_POST[...] nicht gesetzt wurde, FALSE zurückliefert weil null != ""

      Ansonsten zum Codestil: bitte auf Einrückungen achten. Das erleichtert die Arbeit und Lesbarkeit erheblich

      Grüße
      Florian

      Kommentar


      • #4
        Und bitte E-V-A beachten - siehe Link Wissenssammlung. Eine PHP-Funtkion hat inmitten von HTML nichts verloren. Und PHP_SELF ist Böse und du beachtest den Kontextwechsel zum HTML nicht.. XSS Lücke. Siehe auch Wissenssammlung.
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Vielen Dank

          Kommentar

          Lädt...
          X