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

0 votes

Hallo,

ich habe leider das Problem, dass ich gerne eine PHP-Funktion zur Randomisierung eines Bildes formulieren würde, die sich auf einen Random Generator auf der Seite davor bezieht. Das Bild wird zwar wie gewünscht angezeigt und variiert auch, jedoch nicht so wie ich es im Random Generator definiert habe.

Ich habe z.B. auf Seite 2 den RG eingefügt und definiert und bereits auf dieser Seite 2 PHP-Funktionen, die sich auf den RG beziehen.
Die erste PHP-Funktion lautet:

$zahl = value('RG01');

if ($zahl == 1) {
  html('<p><img src="Szenario_A.JPG" style="max-width: 100%"></p>');
} elseif ($zahl == 2) {
  html('<p><img src="Szenario_B.JPG" style="max-width: 100%"></p>');
} elseif ($zahl == 3) {
  html('<p><img src="Szenario_C.JPG" style="max-width: 100%"></p>');
} elseif ($zahl == 4) {
  html('<p><img src="Szenario_D.JPG" style="max-width: 100%"></p>');
}

Die zweite PHP-Funktion lautet:

if (value('RG01') == 1) {
  replace('%data%', 'A');
} elseif (value('RG01') == 2) {
  replace('%data%', 'A');
} elseif (value('RG01') == 3) {
  replace('%data%', 'B');
} elseif (value('RG01') == 4) {
  replace('%data%', 'B');
}

Diese beiden Funktionen funktionieren auch wie sie sollen, die passenden Szenarien werden angezeigt und die Platzhalter werden passend ersetzt.

Nun möchte ich zu Beginn der nächsten Seite (S. 3) eine weitere PHP-Funktion zur Anzeige eines Bildes verwenden, die sich wiederum auf den RG von Seite 2 bezieht.
Ich habe nun versucht den Code aus dem ersten PHP zu wiederholen und durch die neuen Bilder zu ersetzen. Die Bilder werden wie gesagt angezeigt, jedoch nicht so randomisiert wie sie sollten.
Alternativ habe ich nun nochmal folgenden Code genutzt:

if (value('RG01') == 1) {
  html('<div class="spacing"><img src="Picture A.JPG" style="max-width: 100%"></div>');
} elseif (value('RG01') == 2) {
  html('<div class="spacing"><img src="Picture A.JPG" style="max-width: 100%"></div>');
} elseif (value('RG01') == 3) {
  html('<div class="spacing"><img src="Picture B.JPG" style="max-width: 100%"></div>');
} elseif (value('RG01') == 4) {
  html('<div class="spacing"><img src="Picture B.JPG" style="max-width: 100%"></div>');
}

Die Anzeige funktioniert wie gesagt, jedoch passt Sie nicht zur Auswahl des RG....

Können Sie mir helfen?

in SoSci Survey (dt.) by s149817 (125 points)
edited by SoSci Survey
> Die Bilder werden wie gesagt angezeigt, jedoch nicht so randomisiert wie sie sollten.

Der Code sieht korrekt aus. Was zeigt denn die Debug-Information an?
Mit Blick auf die Debug Infos ist mir gereade tatsächlich aufgefallen, dass die Randomisierung der Bilder auf Seite 2 leider nicht funktioniert....

Dort wird mir folgendes angezeigt:
[Information]    Interview Nummer 321 wird fortgesetzt
[Information]    Der Fragebogen Base im Projekt privacy_2020 wird verwendet
[Information]    Die Verweildauer auf Seite 2 war 7 Sekunden
[Verarbeitung]    Lese Antworten von Seite 2
[Information]    Antwort auf SC01 = 1
[Information]    Bedingung in Filter SC01/1 ist nicht erfüllt.
[Information]    Fragen bisher zu 100% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 3 in Fragebogen Base
[Inhalt]    Zeige Text Timer
[Inhalt]    Erstelle Frage RG01
[Information]    Vom Zufallsgenerator RG01 wurden folgende Codes gezogen: 4
[Inhalt]    Zeige Text Product Presentation
[Information]    value("RG01") = 4
[Information]    value("RG01") = 4
[Information]    value("RG01") = 4
[Information]    value("RG01") = 4
[Information]    value("RG01") = 4
[Information]    value("RG01") = 4
[Information]    value("RG01") = 4
[Information]    value("RG01") = 4
[Information]    Folgende Platzhalter sind vorbereitet:
%data% = (Text) Nutzungs- sowie personenbez...

Warum wird die Info value RG01 = 4 eigentlich so oft angzeigt?
> Warum wird die Info value RG01 = 4 eigentlich so oft angzeigt?

Für jeden Aufruf von value(). Deshalb ist die Lösung mit dem $zahl = value() ei wenig eleganter :)

Welches Bild wurde denn nun auf der Seite angezeigt?

Und ... nur zur Sicherheit ... Sie arbeiten nicht auf www.soscisurvey.de, oder? Denn dann wären die Leerzeichen in den Bildnamen beim Hochladen durch Unterstriche ersetzt worden, also Picture_B.JPG
Danke für die Antworten.
Doch ich arbeite auf SoSci.de, aber ich habe die Unterstriche bei den Bildern berücksichtigt - das war nur ein Fehler im Post hier. Sorry dafür. Also die Einbindung der Bilder an sich ist kein Problem.

Tatsächlich habe ich nun mal den "eleganteren Weg" mit $zahl = value () ersetzt, da mir aufgefallen ist, dass dieser Code leider nicht zur Anzeige der richtigen Bilder geführt hat. Statt $zahl = value, habe ich nun die unelegante Variante mit

if (value (RG01) = ) dafür benutzt und bei 3 von 3 Versuchen hat es nun funktioniert und um Debug auch die richtigen Ziehungen angezeigt. Mit dem if (value( ) habe ich nun auch die Bilder auf der nächsten Seite eingebunden und hier scheint es jetzt auch zu funktionieren! :)

Hat es denn irgendwelche Nachteile wenn ich if (value ()) statt $zahl = value benutze?

Weil offensichtlich hat dieser Code komischerweise nicht funktioniert...

1 Answer

0 votes
 
Best answer

Hat es denn irgendwelche Nachteile wenn ich if (value ()) statt $zahl = value benutze?

Nein, abgesehen davon, dass SoSci Survey bei der value()-Variante öfters in den Datensatz schauen muss (entsprechend mehr Debug-Information) funktionieren die Varianten identisch.

Insofern darf auch kein Unterschied in der Funktion auftreten. Wenn Sie den PHP-Code 1:1 in Ihre Frage kopiert haben (ich frage wg. dem Unterstrich), dann müsste dieser in beiden Varianten identisch funktionieren.

by SoSci Survey (193k points)
selected by s149817
Ja ich habe den Unterstrich berücksichtigt uns auch die Einbindung der Bilder klappt ja ohne Probleme. Tatsächlich klappt es jetzt auf beiden Seiten mit der Verwendung des if (value()) statt des eleganten Wegs über $zahl = value.

Demnach würde ich es jetzt dabei belassen, da es so funktioniert :)

Danke für den Support!
...