0 votes
in SoSci Survey (dt.) by s152392 (155 points)

Liebe Community,

ich möchte in meinem Projekt einen Algorithmus erstellen, der mir eine Seite (mit einer Frage) 20 mal hintereinander darstellt. Das sollte mit loopPage() ja kein Problem darstellen. Die Frage auf der Seite gibt ein dynamisches Angebot aus (wie ich das realisiere weiß ich auch noch nicht, aber darum geht's ja hier auch), das die Teilnehmer dann annehmen oder ablehnen können. Allerdings möchte ich damit ein paar Dinge verbinden. Infos dazu:

  • Meine Frage heißt $qa1
  • Antwortmöglichkeiten bei der Frage sind "annehmen" oder "ablehnen"
  • Ich möchte zählen, wie viele Angebote nacheinander angenommen wurden.
  • Die Anzahl der Annahmen in einer Reihe heißt $rowaccept, wird global mit 0 deklariert.
  • Die Angebotene Anzahl ist in $qa1_offer gespeichert (Interne Variable)
  • Der nächsten Fragebogen im Loop ruft dann den aktuellen Wert von $qa1_offer ab
  • $qa1_offer wird anfangs mit 4 deklariert.

Auf gut Deutsch: Wenn ein Angebot abgelehnt wurde, wird das nächste Angebot um 1 erhöht. Wenn ein Angebot akzeptiert wurde, soll im nächsten Fragebogen dasselbe Angebot gemacht werden. Wurden zwei Angebote hintereinander angenommen, so soll das darauf folgende Angebot um 1 gesenkt werden.

Das ganze wäre glaube ich eine einfache switch-anweisung, die in etwa so aussieht:

Switch($qa1):
{
case ("ablehnen"):
$qa1_offer +1;
break;

case ("annehmen"):
If($rowaccept == 2)
{
$qa1_offer -1;
$rowaccept = 0;
}
else
{
$rowaccept +1
}
break;
}

Dazu müsste ich noch wissen, wie ich ein element in einer Frage dynamisch aktualisieren kann, sodass $qa1_offer jedes mal angepasst erscheint (Ich nehme an, das geht mit replace()).

Nun meine Fragen:

  1. Wie bette ich das ganze in php code mit loopPage() ein?
  2. Ich muss hier ja eigentlich mit globalen Variablen arbeiten.
    Definiere ich die einmal in den internen Variablen einer Sektion
    oder muss das über das Projekt hinweg definiert werden?
  3. WIe deklariere ich $qa1_offer am Anfang, bevor ich den Loop starte?
  4. Wie kann ich $rowaccept nach allen durchläufen wieder auf null setzen (Ich brauche es später nochmals, wieder mit Startwert 0)? Geht das einfach über php code in der darauffolgenden Seite?
  5. Werden alle Antworten im Loop separat erfasst? Muss ich hier etwas spezielles beachten? Ich möchte alle einzelnen Ergebnisse des Loops in meinen Enddaten sehen können.
  6. Wie bereits erwähnt wäre hilfestellung zu replace() noch sehr gut, ich bin ein bisschen überfordert was das ganze angeht :O

In der Hoffnung auf Antwort, mit vorauseilendem Dank:

1 Answer

0 votes
by SoSci Survey (326k points)

Aus meiner Sicht ist hier die Nachvollziehbarkeit ein wichtiger Punkt (weil wir ja von Forschung sprechen). Deshalb würde ich dringen empfehlen, dass nicht eine Frage zum Einsatz kommt, sondern 20 davon. Dafür können Sie natürlich auch eine Skala mit Zwischenwerten nehmen - im Darstellungmodus "Kärtchen" und mit 20 Items. Dann würden Sie in jedem Durchgang ein Item anzeigen.

Das hat den Vorteil, dass Sie den vorherigen Wert - oder besser noch alle vorheigen Antworten - aus den Variablen auslesen können. valueList() würde Ihnen jeweils den aktuellen Stand liefern, sodass Sie ohne mitlaufende Zählung immer spontan das Angebot berechnen können. In der Programmierung ist das "stateless" (wenn wir vom Interview mal absehen, das natürlich einen Zustand hat) und es lässt viele Probleme gar nicht erst entstehen.

Eventuell möchten Sie die gemachten Angebote zur Sicherheit (Nachvollziehbarkeit und vor allem Einfachheit bei der Auswertung) nochmal in 20 interne Variablen speichern.

Dazu müsste ich noch wissen, wie ich ein element in einer Frage dynamisch aktualisieren kann

Das ist einfach, dafür verwenden Sie Platzhalter.

Wie bette ich das ganze in php code mit loopPage() ein?

Verwenden Sie loopPage(), aber lassen Sie das mit dem Switch weg. Zählen Sie einfacher immer das Array ab, das Sie mit valueList() bekommen. Sonst wird es ziemlich konfus, weil eine Seite vielleicht aufgrund einer fehlenden Antwort oder weil der Befragte F5 drückt nochmal angezeigt wird.

Ich muss hier ja eigentlich mit globalen Variablen arbeiten.

Das wäre mit registerVariable() möglich ... aber aufgrund der vorgenannten Gründe behaupte ich, dass Sie sich damit keinen Gefallen tun. Nicht umsonst gibt es loopPage(), damit man eben nicht auf diese ganzen Fallstricke achten muss.

WIe deklariere ich $qa1_offer am Anfang, bevor ich den Loop starte?

Wenn Sie eine Funktion haben, die aus den bisherigen Antworten ein Angebot berechnet, dann können Sie darin natürlich auch einen Bedingung für das erste Angebot (noch keine Werte vorhanden) definieren.

Werden alle Antworten im Loop separat erfasst?

Nur wenn Sie in jeder Wiederholung eine andere Frage zeigen. Daher auch zu Beginn der Hinweis auf die 20 Items - dann ist das ganz einfach:

$i = loopPage(20);
question('AB01', $i+1);

Wie bereits erwähnt wäre hilfestellung zu replace() noch sehr gut, ich bin ein bisschen überfordert was das ganze angeht :O

Schauen Sie mal die oben verlinkte Anleitung zu Platzhaltern durch. Und dann fragen Sie gerne nochmal konkret nach.

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

...