Antwort an „Rolf B“ verfassen

Hallo Gerald,

gelesen haben wir dies hier und Dich auf der Liste gesehen, weshalb einige recht(s) pointierte Anspielungen fielen.

Vielleicht ist das auch ein Namensvetter, vielleicht auch nicht, jedenfalls ist hier ist kein Politikforum, und solange deine Webseite keine AfD-Politik verkündet, sehe ich auch keinen Anlass, sie zu boykottieren. Dass ich persönlich die Inhalte fragwürdig finde, ist genau das: persönlich. Deswegen soll es mich nicht bei Fragen zur Formularerstellung mit PHP beeinflussen.

Wenn Du eine Gruppe zusammengehöriger Radiobuttons auf einer Seite hast und diese sich gegenseitig ausschalten sollen, dann müssen sie alle das gleiche name-Attribut haben. Zum Beispiel name="nodes". Beim Submit kommt das in $_POST["nodes"] an – dieser Eintrag kann aber auch leer sein, wenn kein Radiobutton ausgewählt war.

Wenn Du die Seite generierst, hast Du vermutlich irgendwo ein Array mit den möglichen Nodes-Werten. Oder auch nicht, dann gibst Du die <input type="radio"> Elemente nacheinander aus.

Du musst also an 2 Stellen aktiv werden:

1. beim Einlesen der POST-Werte - hier musst Du $_POST["nodes"] auf Existenz prüfen. Fehlt es, setze $nodes auf 0, ansonsten auf intval($_POST["nodes"]), um den Zahlenwert zu haben.

2. beim Ausgeben des Formulars. Ich nehme mal an, dass Du die möglichen nodes-Werte in einem Array stehen hast, ich nenne es mal $nodes_werte.

...
$id_nr = 0;
foreach ($nodes_werte as $nodes_wert):
   $id_nr += 1;
   $id = "nodes_$id_nr";
?>
   <input type="radio" 
          name="nodes" id="<?= $id ?> 
          value="<?= $nodes_wert ?>"
          <?= ($nodes == $nodes_wert ? "checked" : "") ?>>
   <label for="<?= $id ?>"><?= $nodes_wert ?></label>
<?php
endforeach;
...

Dieser Code gibt für jeden Wert in $nodes_werte einen Radiobutton zusammen mit einem Label aus. Ist der Wert, der dem Radiobutton zugeordnet wird, mit dem gespeicherten Wert in $nodes identisch, wird für diesen Radiobutton das checked-Attribut hinzugefügt.

Das Label ist übrigens wichtig. Wichtig ist auch, Label und Input-Element über eine ID zu verknüpfen. Andernfalls ist die Seite nicht zugänglich.

Da ich für die Ausgabe der HTML Elemente den PHP-Modus verlasse (das ist deutlich eleganter als eine echo-Wüste zu produziere), verwende ich die alternative Syntax für Kontrollstrukturen. Die ist in diesem Fall besser lesbar als die geschweiften Klammern.

Das Einsteuern von PHP-Werten mit dem Echo-Tag <?= ... ?> kennst Du?

Den ternären Bedingungs-Operator ?: kennst Du auch?

Die Zeilenumbrüche im input-Element sind nur für die Lesbarkeit im Forum.

Rolf

--
sumpsi - posui - obstruxi
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