In diesen Zeilen...
foreach (array('B201', 'B202', 'B203', 'B204') as $question) {
if (value(id($question, $item)) == 2) {
$any = true; // Min. ein Kreuzchen gesetzt
}
}
Prüfen Sie, ob die Eingabefelder (offene Eingabe oder Kästchen) den Wert 2 haben. Diesen erzielt man bei der offenen Eingabe nur, wenn man eine "2" einträgt. Daher ist Zeile 2 auch nicht als fehlend markiert.
Ändern Sie diesen Teil bitte wie folgt:
foreach (array('B201', 'B202', 'B203') as $question) {
if (trim(value(id($question, $item))) != '') {
$any = true; // Min. ein Kreuzchen gesetzt
}
}
// Kästchen
if (value(id('B204', $item)) == 2) {
$any = true; // Min. ein Kreuzchen gesetzt
}
Hier wird nun für die ersten drei Spalten geprüft, ob dort irgend etwas steht (legen Sie als Eingabebeschränkung noch fest, dass man nur Zahlen eintragen darf!) und darunter, ob das Kästchen angekreuzt wurde.