Ankündigung

Einklappen
Keine Ankündigung bisher.

Dropdown Menü auslesen

Einklappen

Neue Werbung 2019

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

  • Dropdown Menü auslesen

    Liebe Forumgemeinde,

    ich trete an euch mit einer vermeintlich wirklich einfachen Fragen .

    Ich hab ein Dropdown menü und möchte dies nun mittels POST Methode an die selbe Seite übergeben und das Dropdown Menü mittels $_POST['dropdown] den Wert auslesen.

    was mache ich falsch ?

    HTML-Code:
       <form action="index.php?page-id=6000"method="POST">
    <?php
    
    if ($result->num_rows > 0) {
    
    while($row = $result->fetch_assoc()) {
    
    
    $value = $row['wertung'];
    echo"<tr>
    <td>".$row['bezeichnung']."</td>
    <td><center>".$row['wertung']."</center></td>
    <td><center>
    <select name='dropdown'>
    <option></option>
    <option value='-10'>-10</option>
    <option value='-9'>-9</option>
    <option value='-8'>-8</option>
    <option value='-7'>-7</option>
    <option value='-6'>-6</option>
    <option value='-5'>-5</option>
    <option value='-4'>-4</option>
    <option value='-3'>-3</option>
    <option value='-2'>-2</option>
    <option value='-1'>-1</option>
    
    <option value='0'>0</option>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='3'>3</option>
    <option value='4'>4</option>
    <option value='5'>5</option>
    <option value='6'>6</option>
    <option value='7'>7</option>
    <option value='8'>8</option>
    <option value='9'>9</option>
    <option value='10'>10</option>
    </select> 
    </center></td> 
    
    <td><center><input type='submit' > </td></center>
    der PHP Teil lautet wie folgt:

    PHP-Code:
       if (isset($_POST['dropdown'])) {
    $test $_POST['dropdown'] ;
    echo 
    $test;

    wenn ich ein var_dump ausgebe wird mir string(0) ""


    ausgegeben

    Ich wäre für eure Hilfe sehr dankbar .

    Liebe Grüße

  • #2
    Zitat von likemike90 Beitrag anzeigen
    wenn ich ein var_dump ausgebe wird mir string(0) ""
    Dann hast du nichts ausgewählt und der Wert des leeren option-Elements (=ein Leerstring) direkt nach <select> wird als Wert mitgeschickt - wenn ich mit deinem Code einen anderen Wert auswähle wird mir der ausgegeben. Mit name="dropdown" wirst du aber wohl nicht glücklich werden, bei mehreren Zeilen steht da dann immer nur der Wert der letzen Zeile drin (->eckige Klammern verwenden, dann wird es ein Array).

    Sonstige Hinweise zu deinem Code:
    - du berücksichtigst den Kontextwechsel nicht, die Daten aus der Datenbank müssen entsprechend behandelt werden
    - die value-Attribute in deinen option-Elementen sind nicht nötig, ohne diese wird der Inhalt des Elements verwendet was ja überall gleich ist
    - vergiss <center> (in der letzten Zeile ohnehin noch falsch verschachtelt) und verwende CSS
    - der Absenden-Knopf wäre gerne ein richtiger Button -> <button> verwenden
    - <table>/</table>/</form>/</tr> fehlen

    Kommentar


    • #3
      Den Tabellenkram kannst du ganz weglassen, du hast ja noch gar keine tabellarischen Werte, sondern ein Formular.

      Lesetipp:
      https://wiki.selfhtml.org/wiki/PHP/Tutorials/Formulare
      https://php-de.github.io/jumpto/eva-prinzip/
      https://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel
      https://php-de.github.io/#form

      Kommentar


      • #4
        Danke vielmals für die Antworten, es funzt nun .

        Könntest du mir noch erklären was genau du meinst mit
        du berücksichtigst den Kontextwechsel nicht, die Daten aus der Datenbank müssen entsprechend behandelt werden

        Kommentar


        • #5
          Das wird im 3. Link aus #3 erklärt (auch Fortsetzung am Ende der Seite lesen!).

          Kommentar


          • #6
            der Link funzt leider nicht bzw. die Seite enthält einen noch nicht angefertigten Artikel

            Kommentar


            • #7
              Zitat von likemike90 Beitrag anzeigen
              der Link funzt leider nicht bzw. die Seite enthält einen noch nicht angefertigten Artikel
              oh, sorry, der Artikel wurde inzwischen verschoben (@protestix: du solltest deine Links aktualisieren, der Link ist seit 10/2014 nicht mehr aktuell) und ist jetzt unter https://wiki.selfhtml.org/wiki/Progr...Kontextwechsel zu finden, die Fortsetzung unter https://wiki.selfhtml.org/wiki/Progr..._und_behandeln

              Kommentar


              • #8
                Danke nochmals für den Link .

                Im bezug dessen was ich gerade gelesen habe - und einige Fehler darauf in meinen Code gefunden habe die mir bis dato so nicht bewusst sind -
                verstehe ich dennoch nicht in welchen bezug das zu meinen Codeschnipsel oben steht . Hätte ich hier Platzhalter verwenden sollen und diese dann später die Variablen zuweisen ? Ich sehe hier keine exploit möglichkeit oder wo verpasse ich da etwas ?

                Kommentar


                • #9
                  Zitat von likemike90 Beitrag anzeigen
                  verstehe ich dennoch nicht in welchen bezug das zu meinen Codeschnipsel oben steht . Hätte ich hier Platzhalter verwenden sollen und diese dann später die Variablen zuweisen ? Ich sehe hier keine exploit möglichkeit oder wo verpasse ich da etwas ?
                  Du gibst mit z.B. »<td>".$row['bezeichnung']."</td>« die Daten aus der Datenbank aus. Was passiert wenn in der Spalte Bezeichnung z.B. »<h1>Bezeichnung</h1>« steht? richtig, dann bekommst du »<td><h1>Bezeichnung</h1></td>« und das Wort »Bezeichnung« wird als Überschrift dargestellt - korrekt wäre »<td>&lt;h1&gt;>Bezeichnung&lt;/h1&gt;</td>«. Das ist noch ein harmloser Fall, gefährlich wird es wenn in der Spalte Javascript o.ä. steht und dann ausgeführt wird - deswegen musst du Kontextwechsel *immer* behandeln (hier: htmlspecialchars() verwenden, siehe Artikel). Wie du das genau machst (erst Platzhalter o.ä.) ist egal, wichtig ist nur dass du den Kontextwechsel behandelst.

                  Kommentar


                  • #10
                    Danke für die Erklärung Hilfe

                    Kommentar

                    Lädt...
                    X