SteffiMichi Geschrieben 24. Februar 2010 Geschrieben 24. Februar 2010 Hallo, ich habe folgendes Problem: switch (value('TV02')) { case 1: //Besuchsfrage für Privatler if (value('TV04') == 2){ question('TV05'); } else { if (value('TV06') == 2){ question('TV07'); } else { if (value('TV08') == 2){ question('TV09'); } else { if (value('TV10') == 2){ question('TV11'); } else { if (value('TV12') == 2){ question('TV13'); } else { if (value('TV14') == 2){ question('TV15'); } else { if (value('TV16') == 2){ question('TV17'); } else { goToPage('FBS6'); } break; case 2: //Weg zur Soziodemographie für Corporatler goToPage('FBS6'); break; case 3: //Bekanntheitsfrage für Misch-Accountler if (value('TV01_01') == 2) { question('TV04'); } if (value('TV01_02') == 2) { question('TV06'); } if (value('TV01_03') == 2) { question('TV08'); } if (value('TV01_04') == 2) { question('TV10'); } if (value('TV01_05') == 2) { question('TV12'); } if (value('TV01_06') == 2) { question('TV14'); } if (value('TV01_07') == 2) { question('TV16'); } break; } [/PHP] Es geht um den Bereich CASE 1: Zum besseren Verständnis bitte unter https://www.soscisurvey.de/twittermuseen/ testweise den Fragebogen ausfüllen (PW = test1) Folgender Fall, man wählt mindestens 1 Museum aus, bei Frage 1 man wählt "Privataccount" bei Frage 2 Die nächste Frage beanwortet man mit "JA" (also, man kennt das Museum schon). Klickt man jetzt auf "Weiter" kommt die Fehlermeldung... Ich bin grad am verzweifeln... Vielleicht aber auch "nur" betriebsblind? Danke für Eure Hilfe! Gruß Stefan Zitieren
Klotzkopp Geschrieben 24. Februar 2010 Geschrieben 24. Februar 2010 Im erste Case-Block machst du 14 geschweifte Klammern auf, aber nur 8 wieder zu. Kann ja nicht passen. Zitieren
SteffiMichi Geschrieben 24. Februar 2010 Autor Geschrieben 24. Februar 2010 Danke für den Hinweis! Also doch betriebsblind ;-) Ich habe zudem festgestellt, dass ich so mein Problem gar nicht gelöst bekomme. Ich muss es mit einer FOR-Schleife machen, leider funktioniert es noch nicht ganz, denn ich habe sicher noch einen Denkfehler darin. Blöderweise kann man die Fragekennungen, die z.B. "TV01 - TV16" heißen können, nicht ändern. --> Die 01, 02, 03, 04... stört mich!!! $items = 7; // Anzahl der auswählbaren Museen $qk1 = 'TV0'; $qk2 = 'TV'; // Kennung der Frage $zaehler_qk = 4; // interner Zähler für die Fragekennung switch (value('TV02')) { case 1: //Besuchsfrage für Privatler for ($i=1; $i<=$items; $i++) // Schleife soll 7 Runden durchlaufen { for ($k=1; $k<=4; $k++) // im 1. bis 4. Durchlauf { $item=$qk1.$zaehler_qk; // ergibt z.B. TV04, bis zum 4. Durchlauf if (value($item) == 2) // Prüfen, ob Frage mit "NEIN" beantwortet wurde, wenn ja, zeige nächste Frage an (z.B. TV05) { question($qk1.($zaehler_qk+1)); // Folgefrage mit ungerader Kennung ausgeben! $zaehler_qk=($zaehler_qk+2); // internen Zähler un 2 erhöhen, damit im nächsten Durchlauf wieder eine Frage mit gerader Kennung bearbeitet werden kann } } // end for for ($k=5; $k<=$items; $k++) // im 5. bis 7. Durchlauf { $item=$qk2.$zaehler_qk; // ergibt z.B. TV10, ab dem 5. Durchlauf if (value($item) == 2) { question($qk2.($zaehler_qk+1)); $zaehler_qk=($zaehler_qk+2); } } // end for } // end for [/PHP] So habe ich mir das gedacht, aber es funktioniert leider nicht... Was mache ich falsch? Er soll quasi in den ersten 4 Durchläufen die Kennung anders zusammensetzen, als in den restlichen. Und natürlich, wenn Fragen (mit der geraden Kennung), die mit "NEIN" beantwortet wurden, eine Folgefrage ausgeben (mit einer ungeraden Kennung), Wenn mehrere "gerade Fragen" mit "NEIN" beantwortet wurden, sollen natürlich auch mehrere "ungerade Folgefragen" ausgegeben werden. ich verzweifle schon... Zitieren
SteffiMichi Geschrieben 25. Februar 2010 Autor Geschrieben 25. Februar 2010 Problem ist mittlerweile gelöst! In den Else-Zweigen muss der interne Zähler auch um 2 erhöht werden, sonst kommt er ja nicht weiter, falls eine vorher gestellte Frage mit "JA" beantwortet wurde... Viele Grüße... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.