0 votes
in SoSci Survey (dt.) by s283574 (140 points)

Guten Tag,

In meiner Studie teile ich die Versuchspersonen in drei Gruppen auf. Danach möchte ich aus folgenden Listen für jede Gruppe zufällig10 Steckbriefe (Geschlecht, Name, Alter, Hobby) ohne zurücklegen erstellen und anzeigen lassen. Jeder der 10 Steckbriefe soll der Versuchsperson auf einer einzelnen Seite angezeigt werden, sodass sie mit weiter zum nächsten kommt.

Ein Beispiel für einen Steckbrief, wie er angezeigt werden soll wäre:

Geschlecht: weiblich
Name: Nyxar
Alter: 15
Hobby: Wolkenmalerei

Für Gruppe 1 soll aus folgenden Listen gezogen werden:
weiblich, weiblich, weiblich, weiblich, weiblich, männlich, männlich, männlich, männlich, männlich
Nyxar, Lysander, Xalos, Cyra, Aurix, Zenithar, Thalos, Xerath, Sylph, Enigma
25, 20. 43, 15, 33, 12, 67, 54, 72, 47
Wyrm-Kommunikation, Wolkenmalerei, Hypernova-Beobachtung, Nebula-Tauchen, Sternenblütenzüchtung, Extragalaktische Küchenkunst, Aurora-Glide, Somnium, Hydro-Domino, Chrono-Exploration

Für Gruppe 2 aus folgenden Listen:
weiblich, weiblich, männlich, männlich, männlich, männlich, männlich, männlich, männlich, männlich
Nyxar, Lysander, Xalos, Cyra, Aurix, Zenithar, Thalos, Xerath, Sylph, Enigma
25, 20. 43, 15, 33, 12, 67, 54, 72, 47
Wyrm-Kommunikation, Wolkenmalerei, Hypernova-Beobachtung, Nebula-Tauchen, Sternenblütenzüchtung, Extragalaktische Küchenkunst, Aurora-Glide, Somnium, Hydro-Domino, Chrono-Exploration

Und für Gruppe 3 aus folgenden Listen:
männlich, männlich, weiblich, weiblich, weiblich, weiblich, weiblich, weiblich, weiblich, weiblich,
Nyxar, Lysander, Xalos, Cyra, Aurix, Zenithar, Thalos, Xerath, Sylph, Enigma
25, 20. 43, 15, 33, 12, 67, 54, 72, 47
Wyrm-Kommunikation, Wolkenmalerei, Hypernova-Beobachtung, Nebula-Tauchen, Sternenblütenzüchtung, Extragalaktische Küchenkunst, Aurora-Glide, Somnium, Hydro-Domino, Chrono-Exploration

Ich komme leider nicht weiter und frage mich, wie ich das machen kann. Über Hilfe würde ich mich wirklich sehr freuen.

Ich habe bisher den folgenden Code geschrieben, jedoch funktioniert er nicht. Ich bin mir auch nicht sicher, ob das mit der Auswahl von zufälligen Indizes nötig ist und wie mir die Steckbriefe angezeigt werden. Und ob das mit dem speichern in nur einer Variable funktioniert.

if (value('P102') == 1) {

// Definition der Listen für Geschlecht, Name, Alter und Hobby
$genders = array("weiblich", "weiblich", "weiblich", "weiblich", "weiblich", "männlich", "männlich", "männlich", "männlich", "männlich");
$names = array("Nyxar", "Lysander", "Xalos", "Cyra", "Aurix", "Zenithar", "Thalos", "Xerath", "Sylph", "Enigma");
$ages = array(25, 20, 43, 15, 33, 12, 67, 54, 72, 47);
$hobbies = array("Wyrm-Kommunikation", "Wolkenmalerei", "Hypernova-Beobachtung", "Nebula-Tauchen", "Sternenblütenzüchtung", "Extragalaktische Küchenkunst", "Aurora-Glide", "Somnium", "Hydro-Domino", "Chrono-Exploration");

// Auswahl von zehn zufälligen Indizes ohne Wiederholung
$random_indexes = array_rand($genders, 10);

// Sammeln der HTML-Ausgabe in einer Variablen
$html_output = '<h2>Zufällig generierte Steckbriefe:</h2>';
for ($i = 0; $i < 10; $i++) {
    $gender = $genders[$random_indexes[$i]];
    $name = $names[$random_indexes[$i]];
    $age = $ages[$random_indexes[$i]];
    $hobby = $hobbies[$random_indexes[$i]];
    $html_output .= '<p>Steckbrief ' . ($i + 1) . ': Geschlecht - ' . $gender . ', Name - ' . $name . ', Alter - ' . $age . ', Hobby - ' . $hobby . '</p>';
}

// Speichern des HTML-Codes in einer SoSci Survey-Variable
put('P105_01', $html_output);

} elseif (value('P102') == 2) {

// Definition der Listen für Geschlecht, Name, Alter und Hobby
$genders = array("männlich", "männlich", "männlich", "weiblich", "weiblich", "männlich", "männlich", "männlich", "männlich", "männlich");
$names = array("Nyxar", "Lysander", "Xalos", "Cyra", "Aurix", "Zenithar", "Thalos", "Xerath", "Sylph", "Enigma");
$ages = array(25, 20, 43, 15, 33, 12, 67, 54, 72, 47);
$hobbies = array("Wyrm-Kommunikation", "Wolkenmalerei", "Hypernova-Beobachtung", "Nebula-Tauchen", "Sternenblütenzüchtung", "Extragalaktische Küchenkunst", "Aurora-Glide", "Somnium", "Hydro-Domino", "Chrono-Exploration");

// Auswahl von zehn zufälligen Indizes ohne Wiederholung
$random_indexes = array_rand($genders, 10);

// Sammeln der HTML-Ausgabe in einer Variablen
$html_output = '<h2>Zufällig generierte Steckbriefe:</h2>';
for ($i = 0; $i < 10; $i++) {
    $gender = $genders[$random_indexes[$i]];
    $name = $names[$random_indexes[$i]];
    $age = $ages[$random_indexes[$i]];
    $hobby = $hobbies[$random_indexes[$i]];
    $html_output .= '<p>Steckbrief ' . ($i + 1) . ': Geschlecht - ' . $gender . ', Name - ' . $name . ', Alter - ' . $age . ', Hobby - ' . $hobby . '</p>';
}

// Speichern des HTML-Codes in einer SoSci Survey-Variable
put('P105_01', $html_output);

} elseif (value('P102') == 3) {

// Definition der Listen für Geschlecht, Name, Alter und Hobby
$genders = array("weiblich", "weiblich", "weiblich", "weiblich", "weiblich", "weiblich", "weiblich", "weiblich", "männlich", "männlich");
$names = array("Nyxar", "Lysander", "Xalos", "Cyra", "Aurix", "Zenithar", "Thalos", "Xerath", "Sylph", "Enigma");
$ages = array(25, 20, 43, 15, 33, 12, 67, 54, 72, 47);
$hobbies = array("Wyrm-Kommunikation", "Wolkenmalerei", "Hypernova-Beobachtung", "Nebula-Tauchen", "Sternenblütenzüchtung", "Extragalaktische Küchenkunst", "Aurora-Glide", "Somnium", "Hydro-Domino", "Chrono-Exploration");

// Auswahl von zehn zufälligen Indizes ohne Wiederholung
$random_indexes = array_rand($genders, 10);

// Sammeln der HTML-Ausgabe in einer Variablen
$html_output = '<h2>Zufällig generierte Steckbriefe:</h2>';
for ($i = 0; $i < 10; $i++) {
    $gender = $genders[$random_indexes[$i]];
    $name = $names[$random_indexes[$i]];
    $age = $ages[$random_indexes[$i]];
    $hobby = $hobbies[$random_indexes[$i]];
    $html_output .= '<p>Steckbrief ' . ($i + 1) . ': Geschlecht - ' . $gender . ', Name - ' . $name . ', Alter - ' . $age . ', Hobby - ' . $hobby . '</p>';
}

// Speichern des HTML-Codes in einer SoSci Survey-Variable
put('P105_01', $html_output);

}

by SoSci Survey (320k points)
Sind Sie sicher, dass Sie die Steckbriefe rein zufällig erstellen möchten? Das kann dazu führen, dass manche Kombinationen häufiger vorkommen, andere hingegen gar nicht. Das wiederum kann zu Schweirigkeiten in der Auswertung/Interpretation führen.
by s283574 (140 points)
Ja, ich würde sie gerne zufällig erstellen. Ich manipuliere nur wie oft man weiblich oder männlich sieht. Gruppe 1 sieht 5 Steckbriefe mit weiblich und 5 mit männlich. Gruppe 2 8 mit männlich und 2 mit weiblich und Gruppe 3 8 mit weiblich und 2 mit männlich
by s283574 (140 points)
Hallo, Ich habe jetzt meinen Code beispielhaft für die Gruppe 1 nochmal bearbeitet und es müsste jetzt klappen, dass 10 Steckbriefe zufällig ohne zurücklegen erzeugt werden und in der Variable P1 gespeichert werden. Wie kann ich jetzt die Steckbriefe im Fragebogen anzeigen lassen?

if (value('P102') == 1) {

// Definition of the lists for gender, name, age and hobby
$genders = array("female", "female", "female", "female", "female", "male", "male", "male", "male", "male");
$names = array("Nyxar", "Lysander", "Xalos", "Cyra", "Aurix", "Zenithar", "Thalos", "Xerath", "Sylph", "Enigma");
$ages = array(25, 20, 43, 15, 33, 12, 67, 54, 72, 47);
$hobbies = array("Wyrm Communication", "Cloud Painting", "Hypernova Observation", "Nebula Diving", "Starflower Cultivation", "Extragalactic Cuisine", "Aurora Glide", "Somnium", "Hydro Domino", "Chrono Exploration");

// Selection of ten random indices without repetition
$random_indexes = array_keys($genders);
shuffle($random_indexes);
$random_indexes = array_slice($random_indexes, 0, 10);

// Collect the HTML output in a variable
$html_output = '<h2>Randomly generated indexes:</h2>';
for ($i = 0; $i < 10; $i++) {
    $gender = $genders[$random_indexes[$i]];
    $name = $names[$random_indexes[$i]];
    $age = $ages[$random_indexes[$i]];
    $hobby = $hobbies[$random_indexes[$i]];
    $html_output .= '<p>Steckbrief ' . ($i + 1) . ': Gender - ' . $gender . ', name - ' . $name . ', age - ' . $age . ', hobby - ' . $hobby . "</p>\n";
}

// Use the `put` function to output the HTML content in Sosci Survey
put('P1', $html_output);

}

1 Answer

+1 vote
by SoSci Survey (320k points)
selected by s283574
 
Best answer

Ihr Code mischt die Arrays alle in der derslben Reihenfolge. Heißt, die ersten Einträge aller Arrays würden immer zusammen bleiben. Ich weiß nicht, ob das erwünscht ist. Falls nicht, sähe die Lösung wie folgt aus:

/ Definition of the lists for gender, name, age and hobby
$genders = array("female", "female", "female", "female", "female", "male", "male", "male", "male", "male");
$names = array("Nyxar", "Lysander", "Xalos", "Cyra", "Aurix", "Zenithar", "Thalos", "Xerath", "Sylph", "Enigma");
$ages = array(25, 20, 43, 15, 33, 12, 67, 54, 72, 47);
$hobbies = array("Wyrm Communication", "Cloud Painting", "Hypernova Observation", "Nebula Diving", "Starflower Cultivation", "Extragalactic Cuisine", "Aurora Glide", "Somnium", "Hydro Domino", "Chrono Exploration");

shuffle($genders);
shuffle($names);
shuffle($ages);
shuffle($hobbies);

putList('IV01', $genders);
putList('IV02', $names);
putList('IV03', $ages);
putList('IV03', $hobbies);

Eventuell müssen Sie mit isset() und registerVariable() noch dafür sorgen, dass das ganze Mischen nur einmal passiert. Auch ein value('IV01_01', 'code:ifany') wäre für einen entsprechenden Filter geeignet.

Wie kann ich jetzt die Steckbriefe im Fragebogen anzeigen lassen?

Es kommt ein wenig darauf an, was Sie sonst noch auf den Seite anzeigen möchten. Hier wäre eine Lösung, die alles auf einer Seite erledigt.

$i = loopPage(10);
$num = $i + 1;
replace('%name%', id('IV01', $num), 'response');
replace('%gender%', id('IV02', $num), 'response');
replace('%age%', id('IV03', $num), 'response');
replace('%hobbies%', id('IV04', $num), 'response');

Und darunter ein Text, der eben die Platzhalter %name% u.s.w. verwendet.

by s283574 (140 points)
Danke für die Antwort.

Ich bekomme leider aber noch Fehlermeldungen... Ich bekomme die Fehlermeldung, dass keine Frage mit der Kennung 'IV01', 'IV02'... existiert. Was muss ich da machen?


Ich hätte gerne, dass die 10 Steckbriefe jeweils auf einzelnen Seiten angezeigt werden, sodass man immer mit einem weiter klick zum nächsten Steckbrief kommt.

Auf der Seite soll es also so aussehen:

Geschlecht:

Name:

Alter:  

Hobby:

Das soll dann ausgefüllt werden mit den erzeugten Steckbriefen.


Und muss der code zum anzeigen der Steckbriefe auf die nächste Seite, oder in dasselbe Feld, wie der Code zum erstellen der Steckbriefe?

Ich frage mich auch wie genau ich den Text mit dem Platzhalter erstelle... ist das ein einfacher Text oder ein html-Textfeld?



Das folgende verstehe ich leider auch nicht ganz:
"Eventuell müssen Sie mit isset() und registerVariable() noch dafür sorgen, dass das ganze Mischen nur einmal passiert. Auch ein value('IV01_01', 'code:ifany') wäre für einen entsprechenden Filter geeignet."  

Ich würde mich über weitere Hilfe wirklich sehr freuen.
by s283574 (140 points)
Außerdem bekomme ich folgende Fehlermeldung:  Für die Funktion replace() wurden nicht ausreichend Argumente angegeben, 2 Argumente sind zwingend erforderlich. Weitere Details finden Sie in der Anleitung zur Funktion.
by SoSci Survey (320k points)
> Ich bekomme die Fehlermeldung, dass keine Frage mit der Kennung 'IV01', 'IV02'... existiert. Was muss ich da machen?

Die internen Variablen, die Sie in put() oder putList() verwenden möchten, müssen Sie vorher bitte im Fragenkatalog anlegen. 4 Fragen à 10 Variablen. Und wenn die Kennungen anders sind als IV01 bis IV04, passen Sie dies bitte im Code an.

> Außerdem bekomme ich folgende Fehlermeldung:

Das ist lediglich ein Folgefehler der fehlenden internen Variablen.

> Das folgende verstehe ich leider auch nicht ganz

Am einfachsten schieben Sie die Randomisierung auf eine frühere Seite im Fragebogen als die Präsentation mit loopPage(), dann ist das nicht erforderlich.
by s283574 (140 points)
Vielen vielen Dank!
Ich habe den Code jetzt fertig geschrieben.
Nach meinem Zufallsgenerator, der die Versuchsteilnehmer in drei Gruppen aufteilt, habe ich jetzt folgenden Code:

if (value('P102') == 1) {
$genders = array("weiblich", "weiblich", "weiblich", "weiblich", "weiblich", "männlich", "männlich", "männlich", "männlich", "männlich");
$names = array("Nyxar", "Lysander", "Xalos", "Cyra", "Aurix", "Zenithar", "Thalos", "Xerath", "Sylph", "Enigma");
$ages = array(25, 20, 43, 15, 33, 12, 67, 54, 72, 47);
$hobbies = array("Wyrm-Kommunikation", "Wolkenmalerei", "Hypernova-Beobachtung", "Nebula-Tauchen", "Sternenblütenzüchtung", "Extragalaktische Küchenkunst", "Aurora-Glide", "Somnium", "Hydro-Domino", "Chrono-Exploration");

shuffle($genders);
shuffle($names);
shuffle($ages);
shuffle($hobbies);

putList('IV01', $genders);
putList('IV02', $names);
putList('IV03', $ages);
putList('IV04', $hobbies);

}

elseif (value('P102') == 2) {

$genders = array("männlich", "männlich", "männlich", "weiblich", "weiblich", "männlich", "männlich", "männlich", "männlich", "männlich");
$names = array("Nyxar", "Lysander", "Xalos", "Cyra", "Aurix", "Zenithar", "Thalos", "Xerath", "Sylph", "Enigma");
$ages = array(25, 20, 43, 15, 33, 12, 67, 54, 72, 47);
$hobbies = array("Wyrm Communication", "Cloud Painting", "Hypernova Observation", "Nebula Diving", "Starflower Cultivation", "Extragalactic Cuisine", "Aurora Glide", "Somnium", "Hydro Domino", "Chrono Exploration");

shuffle($genders);
shuffle($names);
shuffle($ages);
shuffle($hobbies);

putList('IV01', $genders);
putList('IV02', $names);
putList('IV03', $ages);
putList('IV04', $hobbies);

}
elseif (value('P102') == 3) {

$genders = array("weiblich", "weiblich", "weiblich", "weiblich", "weiblich", "weiblich", "weiblich", "weiblich", "männlich", "männlich");
$names = array("Nyxar", "Lysander", "Xalos", "Cyra", "Aurix", "Zenithar", "Thalos", "Xerath", "Sylph", "Enigma");
$ages = array(25, 20, 43, 15, 33, 12, 67, 54, 72, 47);
$hobbies = array("Wyrm-Kommunikation", "Wolkenmalerei", "Hypernova-Beobachtung", "Nebula-Tauchen", "Sternenblütenzüchtung", "Extragalaktische Küchenkunst", "Aurora-Glide", "Somnium", "Hydro-Domino", "Chrono-Exploration");

shuffle($genders);
shuffle($names);
shuffle($ages);
shuffle($hobbies);

putList('IV01', $genders);
putList('IV02', $names);
putList('IV03', $ages);
putList('IV04', $hobbies);

}

Die Variablen habe ich auch angelegt.

Auf der nächsten Seite des Fragebogens habe ich folgenden Code:
$i = loopPage(10);
$num = $i + 1;
replace('%gender%', id('IV01', $num), 'response');
replace('%name%', id('IV02', $num), 'response');
replace('%age%', id('IV03', $num), 'response');
replace('%hobbies%', id('IV04', $num), 'response');

Ich bekomme nun nur noch die folgende Fehlermeldung, wenn ich versuche ab dem Zufallsgenerator den Fragebogen auszuführen:
Dieses Interview versuchte, auf Seite Nr. 6 (Kennung ) zu springen, die bei der Ausgabe der aktuellen Darstellung bereits verarbeitet wurde. Bitte überprüfen Sie, ob goToPage() eine Schleife erzeugt.
by s283574 (140 points)
Ich habe meinen Fehler selber gefunden! Vielen vielen Dank für die Hilfe das hat meine Bachelorarbeit gerettet!!

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

...