Für so etwas musst du zuerst eine Varibale definieren, die das Geld darstellt (und am Anfang bei 0 liegt);
Nein, davon würde ich abraten. Denn wenn eine Seite erneut geladen wird (keine Antwort trotz Antwortpflicht oder einfach F5 gedrückt), dann würde da weitergezählt - das ist unnötig kompliziert und fehleranfällig.
Einfacher ist es, wenn Sie einfach jedesmal alle Entscheidungen zusammenzählen. Und die, die bisher nicht präsentiert wurden, fließen solange eben mit einer 0 in die Rechnung ein.
Wenn ZG01 Zettel 1 zieht, dann 1€, außer OF ist 2 (ablehnung), dann 0
Ich hoffe, Sie haben in OF auch für jede Runde eine eigene Variable angelegt. Also entweder OF01 bis OF 06 oder Sie haben eine Skala angelegt und präsentieren daraus in jeder Runde ein Item (OF01_01 bis OF01_06). Ich nehme im folgenden Beispiel mal ersteres an.
In Programmcode formuliert man das wie folgt:
$werte = [
1 => 1,
2 => 2,
3 => 3,
4 => 7,
5 => 8,
6 => 9
];
$summe =
$werte[value('ZG01x1')] * ((value('OF01') == 2) ? 1 : 0) +
$werte[value('ZG01x2')] * ((value('OF02') == 2) ? 1 : 0) +
// u.s.w.
Das Array oben ist nur dafür verantwortlich, dass wir die Wertigkeit jedes Angebots kennen. Das wird dann unten verwendet, wo value('ZG01x1')
abgerufen wird.
Und dann gibt es da diese Konstruktion aus (... ? 1 : 0)
Das ist eine Kurzschreibweise für einen IF-Filter. Wenn die Bedingung (...) erfüllt ist, wird der erste Wert (1) verwendet, sonst der zweite Wert (0).
Ergänzung
Wenn Sie nicht nur 6 Wiederholungen haben, sondern 24, dann lässt sich der zweite Teil besser mit einer Schleife formulieren. Die Definition des Arrays $werte = [...
bleibt unverändert. Und darunter dann:
$summe = 0;
for ($i=0; $i<24; $i++) {
if (value(id('OF', $i + 1)) == 2) {
$summe+= $werte[value(id('ZG01', $i+1)];
}
}
Damit beschwert sich die Vorab-Prüfung in PHP-Code-Elementen auch nicht mehr über die Konstruktion mit (... ? ... : ...)
.