Radiobutton sollen wie angewählt bleiben
m.mietke
- php
Guten Abend zusammen,
wir haben unser Kontaktformular soweit mit PHP am Laufen und alles geht gut. Wenn man das Formular absenden will und z.B. die e-mail- Adresse vergessen hat, kommt ein Hinweis darauf, und die bereits in den Textfeldern eingegebenen Daten bleiben erhalten. Das Formular wird dann noch nicht abgesendet.
Soweit so gut, aber leider ist es bei den Radiobuttons für 'Herr' und 'Frau' so, daß sie nach dem (erfolglosen) Absendeversuch wieder in ihre Ersteinstellung zurückgehen. Der code hierfür sieht folgendermaßen aus:
<input type="radio" name="anrede" id="anrede_herr" value="Herr" checked="checked">
<label for="anrede_herr">Herr</label>
<input type="radio" name="anrede" id="anrede_frau" value="Frau">
<label for="anrede_frau">Frau</label>
Testhalber haben wir mal die checked="checked"
Anweisung herausgenommen, aber dann erscheinen bei der Fehlermeldung beide Buttons wieder leer, wie grundeingestellt.
Dann ärgert sich der Benutzer, daß er schon wieder angeben muß, ob er Männchen oder Weibchen ist. Da ich öfter aus Fernost Nachrichten bekomme, ist für mich diese Angabe wichtig :).
Was wir gerne hätten: Daß ebenso wie die Textfelder auch die Radiobuttons mit der vom user gemachten Einstellung erhalten bleiben, bis die Sendung erfolgreich durchgeführt wird.
Dankbar für jede Hilfe ist
m.mietke
Hi!
Das checked durch php setzen. Was angewaehlt war weiss php schliesslich.
Das checked durch php setzen. Was angewaehlt war weiss php schliesslich.
Klingt interessant!
Könntest Du das genauer beschreiben? Soll ich checked="php"
schreiben oder wie?
Gruß von
m.mietke
Hallo,
Soll ich
checked="php"
schreiben oder wie?
Wie machst Du es denn bei den anderen Input-Feldern? Irgendwie mit value="<?php echo htmlspecialchars($_POST['...']); ?>", oder? Für die Radio-Buttons brauchst Du nur noch eine kleine If-Abfrage:
<?php if(isset($_POST['anrede']) && $_POST['anrede']=='Herr') { ?> checked="checked"<?php } ?>
Alex
Für die Radio-Buttons brauchst Du nur noch eine kleine If-Abfrage:
<?php if(isset($_POST['anrede']) && $_POST['anrede']=='Herr') { ?> checked="checked"<?php } ?>
Alex
Danke,
das haben wir probiert, hat aber nicht genützt.
Geht es noch konkreter bzw. vollständiger, bitte?
Die anderen Inputfelder machen wir wie von Dir vermutet mit htmlspecialchars.
Gruß,
m.mietke
Hallöchen,
Geht es noch konkreter bzw. vollständiger, bitte?
Noch konkreter geht nicht.
Noch vollständiger - was meinst du damit???
Du hast einen Radiobutton definiert. Damit der angewählt erscheint, muss innerhalb der spitzen Klammern <>, die die Definition umschließen, das Wort checked, bzw. bei xhtml die Phrase checked="checked" stehen. Der PHP-Code von Alex macht genau das, was dein Problem löst: nämlich checked="checked" ausgeben, wenn der Radiobutton angewählt war.
Brauchst du jetzt immer noch mehr Info's, um zu wissen, wohin du die PHP-Code-Zeile von Alex schreiben musst? Dann vergleiche von deinem ersten Posting die Code-Zeilen 1 und 3 und überlege, worin sie sich in Bezug auf checked unterscheiden.
MfG
vaudi
Hello,
Für die Radio-Buttons brauchst Du nur noch eine kleine If-Abfrage:
<?php if(isset($_POST['anrede']) && $_POST['anrede']=='Herr') { ?> checked="checked"<?php } ?>
Danke,
das haben wir probiert, hat aber nicht genützt.
Geht es noch konkreter bzw. vollständiger, bitte?
Ja,
es geht konkreter, wenn Du deinen Codeversuch hier bekannt gibst.
Dann kann man schauen, was daran falsch oder unvollständig ist.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Ja,
es geht konkreter, wenn Du deinen Codeversuch hier bekannt gibst.
Dann kann man schauen, was daran falsch oder unvollständig ist.
Danke,
Alex, Tom und Vaudi,
ich wußte nicht genau, wo ich diese if- Abfrage einbauen muß. Jetzt habe ich sie mit in die spitzen Klammern von <input type ... genommen, und zwar einmal bei 'Herr' und einmal bei 'Frau'. Dann hat es geklappt.
Der code sieht jetzt folgendermaßen aus:
<input type="radio" name="anrede" id="anrede_herr" value="Herr" <?php if(isset($_POST['anrede']) && $_POST['anrede']=='Herr') { ?> checked="checked"<?php } ?>>
<label for="anrede_herr">Herr</label>
<input type="radio" name="anrede" id="anrede_frau" value="Frau" <?php if(isset($_POST['anrede']) && $_POST['anrede']=='Frau') { ?> checked="checked"<?php } ?>>
<label for="anrede_frau">Frau</label>
Danke für die Hilfe allerseits!
Wenn es noch Anmerkungen dazu gibt, bitte gerne.
Aber wie gesagt: es geht jetzt! Danke!
Gruß von
m.mietke
Hallöchen,
Wenn es noch Anmerkungen dazu gibt, bitte gerne.
Aber wie gesagt: es geht jetzt! Danke!
Unwesentlich für die Funktionalität, aber im Sinne eines guten Quellcodes: Du brauchst nur ein Leerzeichen. Entweder hier im HTML-Teil
value="Herr" <?php
____________^
oder hier im PHP-Teil
?> checked
__^
MfG
vaudi
Hi,
<input type="radio" name="anrede" id="anrede_frau" value="Frau" <?php if(isset($_POST['anrede']) && $_POST['anrede']=='Frau') { ?> checked="checked"<?php } ?>>
Wenn es noch Anmerkungen dazu gibt, bitte gerne.
Ich würde Dir raten, Dir gar nicht erst diese Art von Notation anzugewöhnen; sie ist extrem unübersichtlich und ergibt eine nicht wirklich logische Struktur. Schreibe stattdessen besser:
<input type="radio" name="anrede" id="anrede_frau" value="Frau"<?php
if(isset($_POST['anrede']) && $_POST['anrede']=='Frau') echo ' checked="checked"'; ?>>
Oder noch besser: setze dafür eine Funktion ein - dann wird's noch übersichtlicher.
freundliche Grüße
Ingo
Schreibe stattdessen besser:
<input type="radio" name="anrede" id="anrede_frau" value="Frau"<?php
if(isset($_POST['anrede']) && $_POST['anrede']=='Frau') echo ' checked="checked"'; ?>>
> Oder noch besser: setze dafür eine [Funktion](http://www.1ngo.de/web/formmailer.html#Sonderfall) ein - dann wird's noch übersichtlicher.
Danke Ingo und auch vaudi,
habe jetzt den obigen code verwendet, der ja auch ein Leerzeichen weniger hat. Jetzt bin ich erstmal froh, daß alles geht; mit dem Einbau einer Funktion werde ich mich später befassen.
Vielen Dank und Gruß,
m.mietke
Hi!
Du hast als Thema php angegeben, du hast geschrieben, das das Formular mit den Benutzereingaben (ausser den checkboxen) wieder aufgerufen wird. Ergo schliesse ich auf eine Art Affenformular, in dem das Formular nach Submit wieder dargestellt wird, wenn etwas nicht stimmt.
Also: giev php code plz.
Aber im Grunde laeufts auf sowas hinaus: 'wenn variable fuer checkbox = true dann echo checked'
Also: giev php code plz.
Aber im Grunde laeufts auf sowas hinaus: 'wenn variable fuer checkbox = true dann echo checked'
Danke für die Nachricht, aber was bedeutet das: giev php code plz.?
Was muß ich in die Datei schreiben?
Gruß,
m.mietke