Wert von html select in variable schreiben

Dominic Bucher

Grünschnabel
Hallo allerseits :)

Ich verzweifle langsam und bitte darum euch um Hilfe.
Nun ich möchte aus einem normalen HTML select der ausgewählte Wert in eine Variable schreiben.

Mein Code:

HTML:
<select name="anzahl[]">
		<option value="1">
			1
		</option>
		<option value="2">
			2
		</option>
		<option value="3">
			3
		</option>

</select>

<a href="&wkeintrag">Weiter!></a>

PHP Teil:


PHP:
if (isset($_GET['wkeintrag']))
	{
		foreach($_POST['anzahl'] as $value){
			if(!empty($value))
			{
			$anzahl = $value;
			echo $anzahl;
			}
	}


Die Meldung im Browser bei Ausführung ist dann folgende:

Warning: Invalid argument supplied for foreach() in /var/www/vhosts/scare.ch/subdomains/shop/httpdocs/artikeldetail.php on line ...

Bin Dankbar um jeden Lösungsansatz :)
 
Moin,

wenn du bei dem geposteten Code nicht zu stark gekürzt hast, kann das gar nicht funktionieren. Die Fehlermeldung kommt, weil du die Schleife startest, ohne daß in dem Array ein Wert vorhanden ist.
Du kannst ein Formular nicht über einen normalen Link absenden. Der wird immer nur das übergeben, was du per GET an ihn dran hängst. In deinem Fall eben das "wkeintrag". Bau zum Absenden einen echten Submit-Button ein und es wird funktionieren. Und wenn du willst, kannst du an den ja auch noch den GET Wert anhängen.
 
Ich lese bei dem PhP-Teil einmal $_GET[''] und einmal $_POST['']
Es ist unnötig diese bei der gleichen Abfrage zu nutzen, da nur eine dieser beiden Methoden in einer Abfrage angewendet werden kann.
Welche Du verwendest hängt davon ab, ob Du dem Benutzer die übertragenen Daten in der Adressezeile anzeigen möchtest oder nicht.

method="get" <-> $_GET[''] <-> http://example.com?vorname=martin&nachname=N
method="post" <-> $_POST[''] <->http://example.com


Ansonsten kannst Du auch einfach:
HTML:
<form action="datei.php" method="post">
<select name="anzahl">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>

<input type="submit" name="submit" value="weiter" />
</form>
PHP:
<?php
if ($_POST['submit'] == true /* überprüft ob der submit button mit dem Namen "submit" gedrückt worde. Da immer eine option gewählt ist, ist die isset() abfrage in diesem Fall nicht nötig */) {
echo $_POST['anzahl'];
}
?>

benutzen. Ich bitte Dich jedoch NICHT copy & paste zu nutzen sondern Stück für Stück den Code abzuschreiben und den code zu verstehen. Für fragen bin ich und sicherlich andere auch immer für Dich da.
 
Mit einem normalen Submit hat es wunderbar geklappt, vielen dank euch dreien für die guten Antworten. Hätte ich mir eigentlich denken können, dass GET und POST nicht kombinierbar in einer Abfrage sind :)
Die If Abfrage habe ich auch noch (ohne copy paste!)eingebaut. danke :D
 
Zurück