Here we go:
1.) die URL, die die Werte übergibt, wird ergänzt durch ein
&ifsetFELDNAME=true, in diesem Fall also
&ifsetFMitgliedsrabatt=true
Damit weiß das Formular, was auf Werte geprüft werden muß (das muß so sein, weil sonst JEDE fehlende Eingabe im Formular das zugehörige Feld verschwinden lassen würde).
2.) Auch im Formular selbst muß dies weitergetragen werden, damit bei mehrstufiger Bearbeitung diese Info nicht verlorengeht, also muß ein Platzhalter in der Form
<!-- Text: ifsetFELDNAME; type=hidden; value=true; --> hinein, also in diesem Fall
<!-- Text: ifsetMitgliedsrabatt; type=hidden; value=true; -->
3.) parser_c_form. inc.php muß folgendermaßen ergänzt werden
Code: Alles auswählen
while ($db_content->next_record()) {
$content[$db_content->v('fieldname').' ('.$_type.')'] = array(
'type' =>$_type,
'name' =>$db_content->v('fieldname'),
'input' =>$_REQUEST[keyFix($db_content->v('fieldname'))],
);
}
wird zu
Code: Alles auswählen
while ($db_content->next_record()) {
$content[$db_content->v('fieldname').' ('.$_type.')'] = array(
'type' =>$_type,
'name' =>$db_content->v('fieldname'),
'input' =>$_REQUEST[keyFix($db_content->v('fieldname'))]
);
if ($_REQUEST['ifset'.keyFix($db_content->v('fieldname'))] && ($_REQUEST[keyFix($db_content->v('fieldname'))] == '')) {
unset ($content[$db_content->v('fieldname').' ('.$_type.')']);
}
}
(bei der Gelegenheit wird auch das überflüssige Komma eliminiert...)
Und wichtig: der Mitgliedrabatt muß LEER sein, nicht Null (0).
Hintergrundinfo: Das ifSet selbst funktionierte bereits vorher. Allerdings war natürlich immer ein Inhalt vorhanden, weil egal ob etwas übergeben wurde oder nicht das Modul für den Parser ein Eingabefeld als Inhalt erzeugte. Jetzt wird also geprüft, ob gepüft werden soll und ob das zu prüfende bereits Inhalt hat. Wenn nicht wird das ganze Feld entsorgt und somit kann ifSet keinen Inhalt (mangels Feld) mehr ausmachen.