0 votes
in SoSci Survey (dt.) by s095800 (120 points)
edited by SoSci Survey

Ich würde gerne hier (nach der 1.Frage) einen PHP Code einbauen, bei dem alle ausgewählten Items (hier: vers. Marken) der ersten Frage(Welche lautet: Welche der aufgeführten Marken kaufen Sie am häufigsten?) automatisch bei der zweiten Frage (Welche lautet:Wenn Sie an ⇉ marke ⇇ denken, inwiefern stimmen Sie den nachfolgenden Aussagen...) auftauchen.
Wie funktioniert das?

Falls jemand die erste Frage nicht beantwortet, soll er direkt zum Ende geführt werden...wie baue ich das in den Code mit ein?

Dies hat mir ein Kollege geschickt:

$marken = getItems('MA03', 'is', 2);
if (value('MA03') == 0) {
  goToPage('end');
} // Filter für Leute, die nichts kennen
// Mischen
shuffle($marken);
$code = $marken[0];
put('IV01_01', $code);
replace('%marke%', getItemtext('MA03', $code));

Ich weiß allerdings nicht, wie ich es für meine Umfrage übernehmen soll...

related to an answer for: Bitte um Mithilfe! PHP- Code einstellen

1 Answer

0 votes
by SoSci Survey (327k points)

Das, was der Kollege geschickt hat, sieht doch schon ganz gut aus.

Nur müsste der PHP-Code komplett auf die nächste Seite, vgl. Top 1 unter Problemlösung bei Filterfragen.

Für weitere Antworten müssten Sie bitte (a) beschreiben, was funktioniert und was nicht, (b) eventuelle Fehlermeldungen mitteilen und (c) die Debug-Information zur Filterseite posten. Das ist unter o.g. Link ebenfalls beschrieben.

by s095800 (120 points)
Dies ist mein Code:

$marken = getItems('MA01', 'is', 2);
if (value('MA01') == 0) {
  goToPage('end');
} // Filter für Leute, die nichts kennen
// Mischen
shuffle($marken);
$code = $marken[0];
put('SI02_01', $code);
replace('%marke%', getItemtext('MA01', $code));

Ich möchte, dass in dem Rest der Umfrage, wenn in der Frage das Wort `marke? genannt wird alle Items, die in der ersten Frage ausgewählt wurden angezeigt werden und nicht 'marke'

Bitte beachten Sie, dass die von random() oder shuffle() erzeugten Zufallswerte nicht automatisch im Datensatz gespeichert werden. Zum Speichern können Sie ggf. die Funktion put() verwenden.

Es wird ständig das hier angezeigt.

Starte ich aber einen Versuch kommt folgendes:
[Information]    Interview gestartet (neue Nummer 38)
[Information]    Der Fragebogen base im Projekt tutorial136115 wird verwendet
[Verarbeitung]    Erstelle Fragebogen-Seite Nr. 1
[Inhalt]    Zeige Text Begruessung
[Inhalt]    Erstelle Frage MA01
[Information]    value("MA01") = ""
[Verarbeitung]    Springe zum Ende der Befragung
[Verarbeitung]    Erstelle die letzte Seite des Fragebogens

Der PHP Code vom Kommilitonen stimmt so, nur leider kriege ich es nicht hin diesen auf meinen Fragebogen zu übernehmen, weil der Kommilitone natürlich andere Items verwendet hat...
by SoSci Survey (327k points)
Okay, Ihr Code sucht eine der Marken zufällig aus. Lassen wir den ersten Teil ...

$marken = getItems('MA01', 'is', 2);
if (value('MA01') == 0) {
  goToPage('end');
}

... und darunter dann ...

question('XX01', $marken);

... (sonst nichts mehr) wobei Sie das XX01 durch die Kennung Ihrer Folgefrage ersetzen.
by s095800 (120 points)
Mach ich das so wie Sie es mir oben genannt haben, erscheint folgendes:

[Information]    Interview gestartet (neue Nummer 42)
[Information]    Der Fragebogen base im Projekt tutorial136115 wird verwendet
[Verarbeitung]    Erstelle Fragebogen-Seite Nr. 1
[Inhalt]    Zeige Text Begruessung
[Inhalt]    Erstelle Frage MA01
[Information]    value("MA01") = ""
[Verarbeitung]    Springe zum Ende der Befragung
[Verarbeitung]    Erstelle die letzte Seite des Fragebogens

Und es kommt sofort die letzte Seite des Fragebogens...

Der Code soll, wie Sie bereits richtig gesagt haben, eine der Marken zufällig aussuchen....und zusätzlich bei den Fragen 2 & 3 sollen die ausgewählten Marken aus Frage 1 erscheinen anstatt 'marke'
by SoSci Survey (327k points)
Hier sehen Sie die Problematik:

[Inhalt]    Erstelle Frage MA01
[Information]    value("MA01") = ""

Offenbar liegt Ihr PHP-Code auf derselben Seite wie die Frage MA01. In dem Moment, in welchem die Seite erstellt wird, kennt SoSci Survey aber noch nicht die Antwort des Teilnehmern. Daher kann das nicht funktionieren.

Bitte verschieben Sie den PHP-Code auf die folgende Seite im Fragebogen.
by s095800 (120 points)
$marken = getItems('MA01', 'is', 2);
if (value('MA01') == 0) {
  goToPage('end');
}
question('SI02', $marken);

Diesen Code habe ich so auf die Folgeseite verschoben (wobei SI02 meine zweite Rubrik ist)

Mache ich aber eine Testversion erscheint folgendes:

Nachdem ich zwei Marken ausgewählt habe aus Frage 1 kommt das:
Items in der nachfolgenden Fragen werden auf dieser Seite schon weiter oben angezeigt. Dies führt fast zwangsläufig zu Datenverlust! Falls Sie eine Frage mehrfach benötigen, legen Sie bitte eine Kopie der Frage an. Betroffen sind folgende Items: SI02_03, SI02_05.

Und die Frage verzerrt sich...

Stimmt der Code denn sonst und sucht eine der Marken zufällig aus?
by SoSci Survey (327k points)
Haben Sie die Frage SI02 vielleicht zusätzlich noch in die Seite gezogen?
vgl. Top 3 unter https://www.soscisurvey.de/help/doku.php/de:create:filter-solving

> Stimmt der Code denn sonst und sucht eine der Marken zufällig aus?

Nein, der Code würde in SI02 jene Marken anzeigen, die in MA01 ausgewählt wurden. So beschreiben Sie es in der Frage oben. Nach einer Zufallsauswahl fragten Sie nicht.

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...