0 votes
ago in SoSci Survey (dt.) by s316873 (110 points)

Hallo.
Ich möchte im hinteren Teil meines Fragebogens folgendes Design erstellen.

Es werden randomisiert 7 Audiodateien. Insgesamt 5 Runden
Bei jeder Audiodatei gibt es drei Antwortmöglichkeiten:
Ja: Experiment wird abgeschlossen und zur Endseite geleitet
Nein: Audio wird nicht in die nächste Runde mitgenommen
Vielleicht: Audio wird in die nächste Runde mitgenommen

Sobald keine Audios mehr da sind -> Ende
Wenn zum Ende der 5. Runde noch Audios da sind wird es als Nein gewertet und auch -> Ende

Ich habe bereits erstellt:

Eine Seite -Anfang: Initialisierung
Seite - Runde1: Audio Datei wird angezeigt und die drei Buttons
Seite - Auswertung

Folgende Probleme treten auf:

Das Audio kann nicht abgespielt werden
Sobald man auf einen der drei Buttons drückt wird angezeigt dass meine Variablen nicht mehr definiert sind.

Leider habe ich sehr wenig Programmiererfahrung und bin etwas ratlos PHP und HTML miteinander kommunizieren zu lassen.

Vielleicht hat jemand von euch schon einmal etwas ähnliches gemacht?
Gerne kann ich auch den Code schicken.
Allerdings möchte ich gerne erst wissen, ob das Design wie oben überhaupt möglich ist.

Vielen Dank im Vorraus!

1 Answer

0 votes
ago by SoSci Survey (340k points)

Ich interpretiere Ihre Farge so, dass Sie die Reihenfolge der 7 Audiodateien rotieren und in jedem Interview alle 7 anzeigen.

Eine erste Herausforderung ist, dass Sie unterschiedliche Antworten zu den Audio-Files sammeln. Das heißt, Sie werden die 7 Fragen jeweils 5-mal brauchen, einmal pro Runde.

Für die Fragen würde ich über eine Skala mit 7 Items nachdenken, von denen Sie jeweils nur eines zeigen, und das in der Darstellungsvariante "Kärtchen". Dann müssen Sie nicht so viele Frage erstellen/verwalten.

Und dann ist es gar nicht so schwer: In Runde 1 müssen Sie sich lediglich um die Rotation kümmern. Ich empfehle hier einen Zufallsgenerator mit den Dateinamen der Audio-Files, das Sie dann via loopPage() abarbeiten.

In Runde 2 kommt dann ein Filter hinzu, welche prüft, ob in Runde 1 die Antwort "ja" oder "vielleicht" für das entsprechende Item ausgewählt wurde. Mittels id() und value() lässt sich das recht elegant auslesen. Aber Sie sollten sich die beiden Befehle und die Anleitung zu PHP-Filtern durchlesen, bevor wir hier weiter ins Detail gehen.

In Runde 3 können Sie den gleichen Filter wieder verwenden, nur, dass Sie hier dann die Antworten aus Runde 2 prüfen. Da werden Sie ein paar Warnungen bekommen, dass eine Variable in Runde 2 nicht (mehr) abgefragt wurde. Ein code:ifany blendet das dann aus. Aber um diese Feinheiten kümmern wir uns, wenn Sie soweit sind :)

ago by s316873 (110 points)
Oke dann mach ich das mal so.

Dann muss ich nur noch schauen wie ich die abbruchfunktion einbaue. Also wenn es keine Audios mehr gibt oder nur Nein gedrückt wurde oder nach 5 Runden automatisch.

Ich hoffe ich kann dann später in der Auswertung sehen bei welchem Audio was eingegeben wird und wie viele Runden benutzt wurden.

Danke!
ago by s316873 (110 points)
Hallo ich habe das mit dem ja Filter umgesetzt. Allerdings erlaubt SociSurvey ja nicht den Filter auf die gleiche Seite zu setzen.

Direkt in der ersten Runde muss aber sobald ja gedrückt wird abgebrochen werden. Damit keine doppelte Ja Eingabe möglich ist.

Wenn ich die Bedingung erst auf der nächsten Seite prüfe dann wurden ja bereits 7 Eingaben getätigt und es könnte zu einem doppelten ja kommen. haben sie da eine idee? LG
ago by SoSci Survey (340k points)
>  wie ich die abbruchfunktion einbaue.

Das wird nur für das "Ja" notwendig sein (s. oben). Wenn aller erstmal ein "Nein" haben, wird der Filter einfach sehr viele Loop-Wiederholungen und Seiten überspringen.

> Ich hoffe ich kann dann später in der Auswertung sehen bei welchem Audio was eingegeben wird

Deshalb verwenden wir ja die Skala ;) Aber ja, es ist definitiv eine gute Idee, dass Sie sich mit den Daten vertraut machen, die in dem Procedere gespeichert werden. Nutzen Sie dafür auch den Debug-Modus, dann sehen Sie nach jedme Klick auf "Weiter" genau, was in welcher Variable gespeichert wird.
ago by s316873 (110 points)
ich habe jetzt folgenden Ablauf ab seite 14 (ich wdh das für 5 runden, immer mit neuem RG und RT:

14 zufallsgenerator
15 :
// Zähle von 0 bis 6 (insgesamt 7 Runden)
$i = loopPage(7);

// Lade Code (z. B. speaker2.mp3) und Label (z. B. Herr Birne) aus RG01
$var = id('RG01', $i + 1);
$nummer = value($var);   


$var = id('RG01', $i + 1);
$speakerData = value($var, 'csv');
$audio = $speakerData[0];
$name = $speakerData[1];
html($name);

// Zeige den Audioplayer mit Platzhalterersetzung

show('TX01', ['%audiofile%' => $audio]);

// Zeige nur ein Item aus der Skala (z. B. Zeile 3 in RT02)
question('RT02_' . $i, [$nummer]);

16: Zufallsgenerator2
17:
// Runde zählen (7 Runden insgesamt)
$i = loopPage(7);

// Hole die Zeilennummer (Position in RT02) für diese Runde aus RG04
$var = id('RG04', $i + 1);
$nummer = value($var);  // Zeile aus RT02 und RT04

// Prüfe Antwort aus Runde 1 (RT02) an Position $nummer
$antwortVorher = value(id('RT02', $nummer), 'code');

// Wenn in Runde 1 "Ja" (1) → direkt zum Ende
if ($antwortVorher == 1) {
    goToPage('end');
}

// Wenn in Runde 1 "Nein" (3) → überspringen
if ($antwortVorher == 3) {
    goToPage('next');
}

// Wenn "Vielleicht" → zeige Audio und Frage
if ($antwortVorher == 2) {
    // Audiodaten laden
    $speakerData = value($var, 'csv');
    $audio = $speakerData[0];
    $name = $speakerData[1];

    // Optional: Name anzeigen
    html('<p><strong>' . $name . '</strong></p>');

    // Audio zeigen
    show('TX01', ['%audiofile%' => $audio]);

    // Frage RT06 anzeigen
    question('RT04_' . $i, [$nummer]);
}


wenn ich jetzt in runde 1 vielleicjt drücke und sonst nur nein, dann kommt später die Fehlermeldung :

Fehler im Fragebogen (Seite 17)
Dieses Interview versuchte, auf Seite Nr. 17 (Kennung Runde2) zu springen, die bei der Ausgabe der aktuellen Darstellung bereits verarbeitet wurde. Bitte überprüfen Sie, ob goToPage() eine Schleife erzeugt.


Hier die Debug Infos:

ung]    Lese Antworten von Seite 15
[Information]    Antwort auf RT02_07 = 3
[Information]    Fragen bisher zu 100% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 16 in Fragebogen sociodemographics
[Inhalt]    Erstelle Frage RG04
[Information]    Vom Zufallsgenerator RG04 wurden folgende Codes gezogen: 4, 7, 5, 1, 2, 3, 6
[Information]    Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 17
[Verarbeitung]    Erstelle Seite 17 in Fragebogen sociodemographics
[Information]    loopPage() wiederholt die Seite 17 nun 7 mal, beginnend mit dem Wert 0
[Information]    value("RG04x01") = 4
[Information]    value("RT02_04") = 3
[Information]    Springe zur nächsten Seite Nr. 17
[Verarbeitung]    Erstelle Seite 17 in Fragebogen sociodemographics
ago by SoSci Survey (340k points)
Bitte platzieren Sie den Zufallsgenerator nicht auf einer separaten Seite, sondern direkt oben auf der Seite mit dem loopPage().

Möchten Sie die Reihenfolge der Audio-Files eigentlich in jeder Runde neu mischen? Oder werden neue Namen zugeordnet? Wenn nicht, dann würden Sie nämlich immer denselben Zufallsgenerator verwenden.

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

...