Aber gibt es für mich eine einfache Art und Weise meinen PHP-Code zu kürzen
Ja, und übersichtlicher wird er dann auch. Zumindest dann, wenn Sie in jeder Bedingung dieselben Variablen prüfen. Legen sie ein Array mit den Beindungen an, z.B. für Ihren Code oben:
$conditions = [
[2, 30, 19, 1, 'PM2S'],
[2, 30, 19, 2, 'PM2M'],
[2, 30, 19, 3, 'PM2L'],
// u.s.w.
];
Das können Sie dann in einer Schleife einfach abarbeiten:
foreach ($conditions as $condition) {
if (value('DG02') == $condition[0] && value('DG03_01') < $condition[1] && value('DG03_01') > $condition[2] && value('DG07') == $condition[3]) {
goToPage($condition[4]);
}
}
Ich bin mir nur zu 99% sicher, dass goToPage()
eine Variable als Sprungziel erlaubt - testen Sie das bitte einmal, bevor Sie alles umstellen.
Aber: Meistens ist das Springen im Fragebogen aber keine gute Lösung. Das bedeutet vermutlich, dass Sie sehr viele Seiten haben und das Ganze ziemlich unübersichtlich ist. Meistens ist es deutlich (!) besser zu pflegen, wenn Sie die Inhalte auf derselben Seite variieren (mittels PHP-Code).
Und: Sie könnten den Code auch schon wesentlich vereinfachen, wenn Sie die Filter verschachtel, für Ihre oben stehenden Code z.B.
if (value('DG02') == 2) {
if (value('DG03_01') < 30 && value('DG03_01') > 19) {
if (value('DG07') == 1) {
goToPage('PM2S');
} if (value('DG07') == 2) {
goToPage('PM2M');
} if (value('DG07') == 3) {
goToPage('PM2L');
}
.....
}
....
}