Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
de:create:functions:put [16.01.2015 17:13] – [put()] admin | de:create:functions:put [26.11.2016 14:54] – sprintf() -> id() admin | ||
---|---|---|---|
Zeile 15: | Zeile 15: | ||
**Tipp:** Sie können die Items einer Frage vom Typ " | **Tipp:** Sie können die Items einer Frage vom Typ " | ||
- | |||
- | ===== Beispiel: Randomisierung ===== | ||
- | |||
- | Falls Sie bei einer [[: | ||
- | |||
- | Das folgende Beispiel geht davon aus, dass Sie eine interne Variable mit der Kennung " | ||
- | |||
- | <code php> | ||
- | // Eine ganze Zahl zwischen 1 und 2 würfeln | ||
- | $zahl = random(1, | ||
- | // Die gewürfelte Zahl im Datensatz abspeichern | ||
- | put(' | ||
- | // Und davon abhängig Textbaustein " | ||
- | if ($zahl == 1) { | ||
- | text(' | ||
- | } else { | ||
- | text(' | ||
- | } | ||
- | </ | ||
Zeile 56: | Zeile 37: | ||
} else { | } else { | ||
question(' | question(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Beispiel: Codes transformieren ===== | ||
+ | |||
+ | SoSci Survey speichert für Skalen jeweils positive Antwortcodes ([[: | ||
+ | |||
+ | **Hinweis: | ||
+ | |||
+ | **Hinweis: | ||
+ | |||
+ | Der folgende Code transformiert die Antworten für das Skalenitem SK01_01 vom Wertebereich 1 bis 5 in den Bereich -2 bis +2. Falls für das Skalenitem keine gültige Antwort gegeben wurde (Item ausgelassen oder eine Ausweichoption gewählt), wird im Datensatz kein Wert gespeichert. Der PHP-Code wird auf der Seite nach Frage SK01 platziert (vgl. Hinweise zu '' | ||
+ | |||
+ | Voraussetzung ist, dass vorab eine interne Variable SK02_01 angelegt wurde (s. [[# | ||
+ | |||
+ | <code php> | ||
+ | $original = value(' | ||
+ | // Nur gültige Werte (>0) speichern | ||
+ | if ($original > 0) { | ||
+ | put(' | ||
+ | } else { | ||
+ | put(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Der PHP-Code lässt sich auch kürzer (aber weniger übersichtlich) formulieren: | ||
+ | |||
+ | <code php> | ||
+ | $org = value(' | ||
+ | put(' | ||
+ | </ | ||
+ | |||
+ | Falls diese Transformation für alle Items der Skala SK01 vorgenommen werden sollen (und hinreichend interne Variablen in SK02 angelegt wurden), erledigt folgende [[: | ||
+ | |||
+ | <code php> | ||
+ | $items = getItems(' | ||
+ | foreach ($items as $item) { | ||
+ | $original = value(id(' | ||
+ | if ($original > 0) { | ||
+ | put(id(' | ||
+ | } else { | ||
+ | put(id(' | ||
+ | } | ||
} | } | ||
</ | </ | ||
Zeile 81: | Zeile 106: | ||
} else { | } else { | ||
question(' | question(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Beispiel: Randomisierung I ===== | ||
+ | |||
+ | Wenn Sie mittels '' | ||
+ | |||
+ | Folgender PHP-Code ordnet etwa die Wert von 1 bis 10 zufällig: | ||
+ | |||
+ | <code php> | ||
+ | $elements = array(1, | ||
+ | shuffle($elements); | ||
+ | </ | ||
+ | |||
+ | Der Inhalt des gemischten Arrays '' | ||
+ | |||
+ | ^Index^0^1^2^3^4^5^6^7^8^9^ | ||
+ | |Element|7|2|10|5|9|4|8|3|6|1| | ||
+ | |||
+ | Die zugehörigen Ränge wäre dann: | ||
+ | |||
+ | ^Element^1^2^3^4^5^6^7^8^9^10^ | ||
+ | |Rang|10|2|8|6|4|9|1|7|5|3| | ||
+ | |||
+ | Um die Reihenfolge zu speichern, benötigen Sie eine Frage vom Typ " | ||
+ | |||
+ | <code php> | ||
+ | for ($i=0; $i< | ||
+ | // Kennung der internen Variable aus Frage-Kennung plus Index erstellen | ||
+ | $id = id(' | ||
+ | // Hier den Wert aus dem Array speichern | ||
+ | put($id, $elements[$i]); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Zum Index '' | ||
+ | |||
+ | Oftmals ist es sinnvoller, die Ränge der Elemente zu speichern. Etwa wenn '' | ||
+ | |||
+ | <code php> | ||
+ | for ($i=0; $i< | ||
+ | // Kennung der internen Variable aus Frage-Kennung plus Inhalt des Elements (!) erstellen | ||
+ | $id = id(' | ||
+ | // Hier den Rang speichern | ||
+ | put($id, $i + 1); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Dieser Code funktioniert freilich nur, wenn es sich um numerische Elemente handelt, die mit 1 zu zählen beginnen. Um die Ränge anderer Array-Inhalte (z.B. Seiten-Kennungen) zu speichern, benötigt man einen etwas anderen PHP-Code: | ||
+ | |||
+ | <code php> | ||
+ | $pages = array(' | ||
+ | // Die Seiten nicht direkt mischen, sondern deren Positionen | ||
+ | $indices = array_keys($pages); | ||
+ | shuffle($indices); | ||
+ | // Nun die Ränge speichern - und die neue Abfolge der Seiten in $random speichern | ||
+ | $random = array(); | ||
+ | for ($i=0; $i< | ||
+ | // Rang speichern wie oben | ||
+ | $id = id(' | ||
+ | put($id, $i + 1); | ||
+ | // Seite in der Abfolge speichern | ||
+ | $random[$i] = $pages[$indices[$i]]; | ||
+ | } | ||
+ | // Neue Seitenabfolge setzen | ||
+ | setPageOrder($random); | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Beispiel: Randomisierung II ===== | ||
+ | |||
+ | Falls Sie bei einer [[: | ||
+ | |||
+ | **Wichtig: | ||
+ | |||
+ | Das folgende Beispiel geht davon aus, dass Sie eine interne Variable mit der Kennung " | ||
+ | |||
+ | <code php> | ||
+ | // Eine ganze Zahl zwischen 1 und 2 würfeln | ||
+ | $zahl = random(1, | ||
+ | // Die gewürfelte Zahl im Datensatz abspeichern | ||
+ | put(' | ||
+ | // Und davon abhängig Textbaustein " | ||
+ | if ($zahl == 1) { | ||
+ | text(' | ||
+ | } else { | ||
+ | text(' | ||
} | } | ||
</ | </ |