Moin G(e)rald,
wenn Du auf eine Antwort von @Rolf B antworten möchtest, tu das bitte auch. Ich bin Robert und definitiv eine andere Person als Rolf 😉
Ich habe jetzt einen für mich einfacheren Ansatz gewählt. An sich geht es auch. Aber eines geht nicht. Beim Start ist Auswahl ="". Ich habe eigentlich dieses ab getestet. Er müsste diese auf 1 setzen also das erste Element. Macht er aber nicht.
Dann funktioniert es entgegen der Aussage des ersten Satzes eben doch nicht.
Wenn die erste Auswahl eines Radio gewählt ist arbeitet es ordentlich. was mache ich nun wieder falsch?
Auf meine Beobachtungen in Deinem Code komme ich gleich. Vorab möchte ich Dich bitten, einmal kurz zu formulieren, was Du genau vorhast. Oft bewirkt eine solche Formulierung die ersten „Aha-Momente“ und es wird klarer, wo es klemmt.
Jetzt spezifisch zu Deinem Code:
<form action="Radio.php" method="post"> <td colspan="6"> <p>
form
darf kein td
enthalten.
Den folgenden Code habe ich der Lesbarkeit umbrochen und einige kleine Abkürzungen durchgeführt:
<?php $WZ = array ('1' => '100', '2' => '200', '3' => '1000', '4' => '2000', '5'=> '5000', '6' => '10000', '7' => '20000', '8' => '50000'); foreach ($WZ as $wert => $bezeichner) { if ($_POST['Auswahl']=="") { $HTTP_POST_VARS['Auswahl'] = "1"; ?> <input type="radio" name="Auswahl" value="<?= $wert ?>" <?php if ($wert == $_POST['Auswahl']) { echo 'checked="checked"'; $test = $bezeichner; } ?>> <?php echo $bezeichner; } else { ?> <input type="radio" name="Auswahl" value="<?= $wert ?>" <?php if ($wert == $_POST['Auswahl']) { echo 'checked="checked"'; $test = $bezeichner; } ?>> <?php echo $bezeichner; } } ?>
- Abgesehen von der Zuweisung an
$HTTP_POST_VARS['Auswahl']
sind beide Zweige deiner Abfrage gleich, es wird exakt der gleiche Code ausgeführt. - Kann es sein, dass
$HTTP_POST_VARS
früher einmal synonym zu$_POST
war? Es ist jedenfalls keine vordefinierte Variable (mehr) und daher führt die Zuweisung daran zu keiner Änderung von$_POST['Auswahl']
. - In der äußeren
if
-Bedingung kann daher$wert == $_POST['Auswahl']
nie erfüllt sein: Dein Array enthält keinen leeren String. - Falls
$wert == $_POST['Auswahl']
erfüllt ist, ist der HTML-Code für deinen Radio-Button auf Grund eines fehlenden Leerzeichens ungültig:
<input type="radio" name="Auswahl" value="…"checked="checked">
- Deine Radio-Buttons habe keine
label
s. $test
wird nie ausgewertet.
<input name="submit" type="submit">
Der Absendebutton hat eine vom Browser vorgegebene Default-Beschriftung, weil der value
fehlt.
Viele Grüße
Robert