Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
de:create:functions:put [16.01.2015 17:13] – [put()] admin | de:create:functions:put [15.12.2023 12:11] (aktuell) – admin | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== put() ====== | ====== put() ====== | ||
- | '' | + | '' |
Mit der Funktion '' | Mit der Funktion '' | ||
Zeile 7: | Zeile 7: | ||
* // | * // | ||
* //Wert//\\ Eine Zahl oder ein Text (String), welche%%(r)%% in der Variable abgelegt werden soll. Für gewöhnlich wird als zweiter Parameter eine Variable mit dem entsprechenden Wert angegeben. | * //Wert//\\ Eine Zahl oder ein Text (String), welche%%(r)%% in der Variable abgelegt werden soll. Für gewöhnlich wird als zweiter Parameter eine Variable mit dem entsprechenden Wert angegeben. | ||
+ | * // | ||
+ | |||
+ | **Warnung: | ||
+ | |||
+ | **Tipp:** Wenn Sie nicht nur einen einzelnen Wert, sondern ein ganzes Array im Datensatz abspeichern möchten, verwenden Sie '' | ||
Zeile 16: | Zeile 21: | ||
- | ===== Beispiel: Randomisierung ===== | ||
- | Falls Sie bei einer [[: | + | ===== Berechnungen ===== |
- | + | ||
- | 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 | + | |
- | text(' | + | |
- | } else { | + | |
- | text(' | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | ===== Beispiel: | + | |
Das folgenden Beispiel geht davon aus, dass ein Konstrukt in zwei Skalen mit den Frage-Kennungen AB01 und AB02 erhoben wird -- und dass eine interne Variable AB03_01 angelegt wurde, um den [[: | Das folgenden Beispiel geht davon aus, dass ein Konstrukt in zwei Skalen mit den Frage-Kennungen AB01 und AB02 erhoben wird -- und dass eine interne Variable AB03_01 angelegt wurde, um den [[: | ||
Zeile 60: | Zeile 46: | ||
- | ===== Beispiel: Komplexer Filter ===== | + | ===== Antworten umkodieren ===== |
+ | |||
+ | Das Umkodieren von Werten erfolgt typischerweise in der Datenauswertung, | ||
+ | |||
+ | Wenn Sie beispielsweise die offene Texteingabe für das Alter aus der Variable " | ||
+ | |||
+ | <code php> | ||
+ | $alter = (int)value(' | ||
+ | if ($alter < 0) { | ||
+ | put(' | ||
+ | } elseif ($alter < 25) { | ||
+ | put(' | ||
+ | } elseif ($alter <= 40) { | ||
+ | put(' | ||
+ | } else { | ||
+ | put(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Das '' | ||
+ | |||
+ | |||
+ | ===== 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(' | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Komplexer Filter ===== | ||
Das folgende Beispiel ist einem Fragebogen entnommen, der an mehreren Stellen unterschiedliche Fragen für Neukunden und Bestandskunden zeigt. Ein Neukunde zeichnet sich dadurch aus, dass er früher noch nichts gekauft hat (Antwort 1 bei Auswahlfrage " | Das folgende Beispiel ist einem Fragebogen entnommen, der an mehreren Stellen unterschiedliche Fragen für Neukunden und Bestandskunden zeigt. Ein Neukunde zeichnet sich dadurch aus, dass er früher noch nichts gekauft hat (Antwort 1 bei Auswahlfrage " | ||
Zeile 81: | Zeile 133: | ||
} else { | } else { | ||
question(' | question(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== 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 | ||
+ | // Nach der letzten Seite soll es auf Seite " | ||
+ | setPageOrder($random, | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== 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(' | ||
} | } | ||
</ | </ |