Hansimglück: <input type radio Übergabe in PHP klappt nicht

Hallo,

seit gestern Doktor ich an folgendem Problem rum:

<input type="radio" name="tsg" value="nein"<? if($tab['tsg'] != 'ja'){ echo "checked"; } ?> id='notsg'><label for='notsg'> nein</label>
<input type="radio" name="tsg" value="ja" <? if($tab['tsg'] == 'ja'){ echo "checked"; } ?> id ='jatsg'><label for='jatsg'> ja</label>

<input type="radio" name="tsg2" value="nein"<? if($tab['tsg'] != 'ja'){ echo "checked"; } ?> id='notsg2'><label for='notsg2'> nein</label>
<input type="radio" name="tsg2" value="ja" <? if($tab['tsg'] == 'ja'){ echo "checked"; } ?> id ='jatsg2'><label for='jatsg2'> ja</label>

Im Ziel skript kommt $_POST[tsg] an. $_POST[tsg2] aber nicht.

Mit phpinfo(INFO_VARIABLES); überprüft.

Nichts Niente!

Ich starre auf den Code wie ein Kaninchen und seh keinen Fehler

Wer weiß rat?

  1. @@Hansimglück

    <input type="radio" name="tsg2" value="nein"<? if($tab['tsg'] != 'ja'){ echo "checked"; } ?> id='notsg2'><label for='notsg2'> nein</label>
    <input type="radio" name="tsg2" value="ja" <? if($tab['tsg'] == 'ja'){ echo "checked"; } ?> id ='jatsg2'><label for='jatsg2'> ja</label>
    

    Hier soll es doch sicher $tab['tsg2'] heißen, oder?


    Ich würde – wie immer im Markup – die alternative Syntax für Kontrollstrukturen verwenden:

    <input type="radio" name="tsg" value="nein" <?php if($tab['tsg'] != 'ja') ?>checked<?php endif; ?> id='notsg'><label for='notsg'> nein</label>
    

    oder in lesbar:

    <input
      type="radio"
      name="tsg2"
      value="nein"
      <?php if($tab['tsg'] != 'ja') ?>checked<?php endif; ?>
      id='notsg2'
    
    >
    
    <label for='notsg2'>nein</label>
    

    Insb. bei Radiobuttons und Checkboxen bietet es sich an, das input-Element ins label-Element zu packen. Dann kann man den Code besser formatieren (Umbruch zwischen <input> und <label>) und hat trotzdem keinen nicht clickbaren Bereich dazwischen. Auf ID und for-Attribut könnte man dann verzichten.

    Eine Gruppe von Radiobuttons sollte in ein fieldset-Element mit legend eingeschlossen werden.

    LLAP 🖖

    --
    Wenn der Faschismus wiederkommt, wird er nicht sagen: Hallo, ich bin der Faschismus! Sondern er wird sagen: Ich nehme die Wahl an.
  2. Ich starre auf den Code wie ein Kaninchen und seh keinen Fehler

    Nun, wenn !='ja' =='nein' sein soll warum schreibst Du das dann nicht gleich so? Das würde den Code deutlich lesbarer machen.

    MFG

    1. Ich habs komplett umgeschmissen jetzt klappts.

  3. Hallo Hansimglück,

    das, was du zeigst, liefert keinen Grund, warum tsg2 nicht in $_POST enthalten sein sollte.

    Wenn es am Server nicht ankommt, stellt sich die Frage, ob der Browser es sendet. Sowas kannst Du im Netzwerk-Tab der Browser-Entwicklerwerkzeuge überprüfen, da kann man sich den Body eines POST Requests anschauen.

    Kontrollfragen:

    • Hat das <form> die POST-Methode gesetzt?
    • Ist die tsg2 Gruppe in dem Form enthalten, das Du postest? Oder hast Du das Form versehentlich zu früh beendet?

    Rolf

    --
    sumpsi - posui - clusi