Update mit option select

  • Hallo,
    ich bin mir nun nicht sicher ob ich hier richtig bin aber ich hoffe jemand hat eine Lösung für mich.
    Ich hab einen kleine DB die ich mit einem HTML Formular befülle, in diesem Formular ist unter anderem ein Feld mit einer Auswahl:


    Funktioniert auch alles super gut, nun würde ich das Feld aber auch gerne ändern, bzw. den Inhalt. Da kommt mein Problem:
    Für das Update habe ich folgende Zeile (beim Namen)


    <li><span> <label for="nname"><input type="text" id="nname" name="nname" value="' . $nachricht["nname"] . '"></span>Name: </li><br>


    Wenn ich das ganze dann mit dem anderen Feld mit Option Value versuche wird das Feld immer mit dem ersten Wert gefüllt, nicht mit dem aus der DB.

    Code
    <li><span>
           <select type="text" name="art"  value="' . $nachricht["art"] . '" id=art>
              <option value="Hund">Hund</option> 
    	  <option value="Katze">Katze</option>
    	  <option value="Hamster">Hamster</option>
    	  <option value="Maus">Maus</option>
    	  <option value="Frettchen">Frettchen</option>
    	  <option value="Kanninchen">Kanninchen</option>
          </select> </label></span> Tierart: 
    </li>


    Nun hoffe ich das jemand mir weiterhelfen kann, ich habe bis dato im Netz nichts gefunden das mir weiterhilft.


    Vielen Dank im vorraus
    Gruß
    Manfred

  • Hi.


    Ein select Element kann kein value Attribut beinhalten, dafür sind ja die option Elemente da. Siehe hier unter dem Punkt Attribute.


    Du müsstest mittels PHP ein weiteres option Element erstellen:



    Ich habe dem dynamisch erstellten option Element noch das Attribut selected gegeben. Das stellt sicher, dass diese Option anfangs angewählt wird.

  • Hallo Basi,


    vielen Dank für deine schnelle Antwort, ich hab das gleich mal getest, und bekomme nun " selected> in der Inbox angezeigt.


    PHP
    <?php if(isset($nachricht["art"])) { ?>
            <option value="<?php print $nachricht["art"]; ?>" selected><?php print $nachricht["art"]; ?></option> 
            <?php } ?>


    ich finde den Fehler in der Zeile nicht. Was ich auch nicht so ganz verstehe, warum 2 mal <?php print $nachricht["art"]; ?> ????


    Danke
    Manfred

  • Warum es nicht funktioniert, ist aus dem Codeausschnitt leider nicht zu erkennen. Wie sieht dein restlicher Code aus?


    Deine option-Elemente haben den Aufbau:


    HTML
    <option value="[art des tieres]">[art des tieres]</option>


    Also zum Beispiel:


    HTML
    <option value="Hamster">Hamster</option>


    Hamster kommt zwei mal vor, darum auch zwei Ausgaben mit PHP.


    Wenn ich den Code so ausprobiere...



    ... erhalte ich folgende Ausgabe:



    Das ist so alles korrekt.

  • Hallo Basi,


    ich habs jetzt genau so übernommen wie du das gepostet hast, bekomme immer das gleiche Ergebnis.
    Der erste Wert aus der Box wird angezeigt.
    Vieleicht liegt ja der Fehler wo anders, ich muss sagen ich kapiers leider nicht.


    Hamster kommt zwei mal vor, darum auch zwei Ausgaben mit PHP.


    Es ist doch so, das der erste "Hamster" in die DB eingetragen und der zweite auf der Webseite in der Optionbox angezeigt wird ?!


    Hier der komplete Code:


    Wenn ich die Zeile von dir

    PHP
    <?php if(isset($nachricht["art"])) { ?>
                    <option value="<?php print $nachricht["art"]; ?>" selected><?php print $nachricht["art"]; ?></option> 
                    <?php } ?>


    nicht unten sonder nach

    PHP
    <select name=art id=art>
                   <?php if(isset($nachricht["art"])) { ?>
                    <option value="<?php print $nachricht["art"]; ?>" selected><?php print $nachricht["art"]; ?></option> 
                    <?php } ?>


    stelle, dann wird "selected>" in der Box angezeigt. :|


    Vielen Dank!
    Gruß
    Manfred

  • Auf Anhieb sehe ich nur das:


    PHP: 60
    <?php echo '
    <?php if(isset($nachricht["art"])) { ?>
        <option value="<?php print $nachricht["art"]; ?>" selected><?php print $nachricht["art"]; ?></option> 
    <?php } ?>
    '; ?>


    Das kann natürlich nicht funktionieren. Alles zwischen den Anführungszeichen ist ein String, der PHP Code wird also auch nicht ausgeführt.


    Sind dir die PHP Basics geläufig? Verkettung ist hier das Stichwort.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!