Antwort an „Robert B.“ verfassen

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;		  
    }
}
?>
  1. Abgesehen von der Zuweisung an $HTTP_POST_VARS['Auswahl'] sind beide Zweige deiner Abfrage gleich, es wird exakt der gleiche Code ausgeführt.
  2. 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'].
  3. In der äußeren if-Bedingung kann daher $wert == $_POST['Auswahl'] nie erfüllt sein: Dein Array enthält keinen leeren String.
  4. 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">
  1. Deine Radio-Buttons habe keine labels.
  2. $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

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen