PHP-String in <option>-Tag wird nicht übermittelt

matthiasschnueriger

Erfahrenes Mitglied
Hallo PHP-Community

Ich bin auf einen etwas (zumindest für mich) verwirrendes Problem gestossen.

Und zwar arbeite ich an folgendem: Daten werden aus einer mySQL-DB geholt und in einem HTML-Formular zur Bearbeitung eingetragen.
Das funktioniert bei allen <input> Feldern ausgezeichnet. Ich habe jedoch auch noch ein Dropdown-Menü mit einer Auswahlliste. Die Darstellung erfolgt zwar auch, wenn ich das Formular jedoch abschicke (POST-Action), wird die Variable nicht weitergegeben und der entsprechende DB-Eintrag wird gelöscht (da er nun leer ist).

Funktioniert:
PHP:
<input type="text" name="angeboteins" id="textfield" value="<? echo $row->angeboteins; ?>"/>

Funktioniert nicht:
PHP:
echo "<select name=\"dropdown-angebote"\><option name=\"angeboteins\" selected=\"selected\" value=\"$row->angeboteins\">$row->angeboteins</option></select>";

Was ist hier das Problem? Habe ich einen Denkfehler gemacht oder gibt es wirklich ein Problem mit dem <option>-Tag?
 
Schau mal auf den farbigen String im Forum ;)
Code:
echo "<select name=\"dropdown-angebote\"><option name=\"angeboteins\" selected=\"selected\" value=\"$row->angeboteins\">$row->angeboteins</option></select>";

EDIT:

Btw, ich weiß gar nicht ob das mit Objekten so funktioniert...
So gehts auf jeden Fall:
Code:
echo "<select name=\"dropdown-angebote\"><option name=\"angeboteins\" selected=\"selected\" value=\"".$row->angeboteins."\">".$row->angeboteins."</option></select>";
 
Zuletzt bearbeitet:
Die Lösung hat queicherius dir ja schon gezeigt. Solche Fehler lassen sich viel leichter finden und die Zeile auch viel leichter schreiben, wenn du als einfassendes Zeichen das ' Hochkomma verwendest und nicht die normalen " Anführungszeichen. PHP interpretiert nichts, was in Hochkomma steht, deshalb kannst du dir dabei die verwirrenden / Maskierungen sparen. Außerdem wird der String schneller verarbeitet. Das würde dann so aussehen:
PHP:
echo '<select name="dropdown-angebote"><option name="angeboteins" selected="selected" value="'.$row->angeboteins.'">'.$row->angeboteins.'</option></select>';
Wie gesagt, dadurch sparst du dir die ganzen Maskierungen und was nicht da ist, kann auch keine Probleme machen.
 
@Sprint:
Da hast du Recht :)

Allerdings gehen mir beim Code-Schreiben die " sehr viel schneller von der Hand... Und bevor irgendwas in ein Live-System kommt läuft bei mir eh nochmal ein Programm drüber, wo das automatisch ändert :D

Welchen farbigen String im Forum?
Und danke für die Backslash-Korrekturen, aber an dem lags nicht... :-(

Der gehighlightete String halt :D
(Und es war ein Fatal-Error...)

Hm schreibst du das ganze mit einer Schleife rein? Wenn ja, dann lass uns die mal sehen...
 
Zuletzt bearbeitet:
Welchen farbigen String im Forum?

Und danke für die Backslash-Korrekturen, aber an dem lags nicht... :-(

Sieh dir mal den fehlerhaften String in deinem ersten Posting an und dann den aus meinem. Alles was String ist, muß rot sein, alle Befehle grün und alle Daten blau. Und damit war auf jeden Fall in den Backslash Masierungen ein Fehler.
 
Ok, das mit den ' sehe ich ein und werde ich ab sofort so umsetzen, versprochen! ;-)

Aber irgendwo scheint's doch noch zu happern.

PHP:
 <p> URL <input type="text" name="url" id="textfield" value="<? echo $row->url; ?>"/>
  </p>
<p>
Angebot 1  <select name="dropdown-angebote">

 <?	   
 echo '<option name="angeboteins" selected="selected" value="'.$row->angeboteins.'">'.$row->angeboteins.'</option>';  
?>

</select>

Beim Input-Feld "URL" funktioniert's, beim "Angeboteins"-Option nicht....

Das Formular wird an edit.php?id=datensatz_xy weitergeleitet, dort drin sieht's so aus:

PHP:
$id = $_REQUEST['id'];

$url_edited = $_POST["url"];
$angeboteins_edited = $_POST["angeboteins"];

$aendern = "UPDATE tabelle_xy Set
url='$url_edited', angeboteins='$angeboteins_edited' WHERE id = '$id'";
$update = mysql_query($aendern);
 
PHP:
$angeboteins_edited = $_POST["angeboteins"];

Müsste es nicht anstatt angeboteins der name des select feldes sein : <select name="dropdown-angebote">
 
Nicht wirklich oder? Es muss ja schon der value aus dem option-tag ausgewählt werden. Wie soll PHP sonst wissen, welche Auswahl getroffen wurde?
 
Zurück