Meine Scripts sehen wie folgt aus:
formular.php
PHP:
<?php
include 'contact.php';
?>
Danach kommt normales html mit <form><table>Kontaktformular...mit besagter Checkbox</table></form>
Besagte Stelle:
HTML:
<input type="checkbox" name="meinebox" <?php echo ((isset($_POST['meinebox'])) ? ' checked="checked" ' : ''); ?> value="1"><label for="meinebox">Titelbeschreibung Checkbox</label>
=> Sobald der Besucher das erste Mal auf die Checkbox klickt, ergibt 'meinebox' für php true und bleibt via echo gesetzt (=checked).
Warum ich das so mache: Es gibt im Formular mehrere Bedingungen die erfüllt sein müssen, damit der User das Formular erfolgreich absenden kann. Diese frage ich per php (if/else...) ab.
Das Problem: Hat der User auf die Checkbox geklickt, aber alle anderen Bedingungen
nicht erfüllt und klickt trotzdem auf Submit, wird das Formular im Browser neu geladen und die angeklickte Checkbox steht wieder auf default (also ist nicht mehr angehackt obwohl er sie schon 1x angeklickt hat).
Meine Lösung um das Reloadproblem zu umgehen: Ich merke ich mir den Status der Checkbox, indem ich überprüfe ob "meinebox" existiert (isset...bla bla bla). Durch die Abfrage weiß ich, dass er sie bereits angeklickt hat und vermeide damit, dass er sie nochmals anklicken muss wenn das Formular reloaded wird.
Das funkt einwandfrei! Soweit so gut.
Sobald nun alle Bedingungen positiv erfüllt sind und der User auf SUBMIT klickt, wird in der contact.php eine Mail generiert, ich gebe ein echo "Vielen Dank für deine Eingaben" aus und leere alle Formularfelder damit der User erkennt, dass sein Formular abgesendet wurde.
(Ich finde es schlüssiger wenn nach erfolgreichen SUBMIT das Formular zurückgesetzt wird und nicht die Usereingaben drinnen stehen bleiben; der User könnte sonst glauben, dass das Formular nicht abgesendet wurde.)
Funkt auch alles wunderbar bis auf den Umstand, dass ich die angehackte Checkbox eben nicht auch wieder auf default setzen kann.
contact.php
PHP:
//ein paar if-else und isset Abfragen, google Captcha,...bis schließlich der positive Hinweis ausgegeben wird:
$hinweis="Vielen Dank für deine Eingaben. Diese wurden an uns gesendet.";
//Eingabefelder zurücksetzen
$_POST['vname']="";
$_POST['nname']="";
$_POST['mail']="";
$_POST['betr']="";
$_POST['nachr']="";
//$_POST['meinebox']=' checked="none" '; //funkt nicht!
//echo ((isset($_POST['meinebox'])) ? ' checked="none" ' : ''); //funkt auch nicht!
Ich hoffe, ich habe das Problem nun verständlicher erläutert
