$sum = valueSum('SK01');
put('SK02_01', $sum);
Weiter unten finden Sie auch ein Beispiel, welches das Ergebnis einer Zufallsziehung mittels ''put()'' für die Auswertung verfügbar macht.
==== Verwendung mit Urnen ====
Die Verwendung von Urnen ist ausführlich im Kapitel [[:de:create:random_urns]] nachzulesen.
In einer Urne können Zettel mit mehreren Werten liegen -- es müssen also u.U. mehrere Werte in mehrere interne Variablen gespeichert werden. Entsprechend erwartete die Funktion ''[[:de:create:functions:urndraw]]'' die Kennung der Frage. Diese Frage muss wiederum genug Variablen enthalten, um die gezogene Kombination speichern zu können.
Der folgende PHP-Code zieht einen Zettel aus der Urne "urne" und speichert die Kombination in den internen Variablen der Frage "IV01".
urnDraw('urne', 'IV01');
Für den trivial und häufigsten Fall, dass in der Urne nur Zettel mit jeweils einer Zahl liegen, benötigt die Frage auch nur eine interne Variable. Die Funktion ''urnDraw()'' verlangt dennoch nach der Frage- und nicht der Variablen-Kennung.
==== Verwendung mit JavaScript ====
Zieht man eine Frage vom Typ "interne Variablen" in den Fragebogen, so sieht man im Fragebogen zwar nichts davon, aber es hat trotzdem zwei Effekte:
- Auf der Fragebogen-Seite werden versteckte (''%%type="hidden"%%'') Formularfelder mit den Kennungen der internen Variablen angelegt.
- Beim Abschicken der Seite mit "Weiter" werden die Werte aus den versteckten Formularfeldern ausgelesen und im Datensatz gespeichert.
Auf die versteckten Formularfelder kann man mittels JavaScript zugreifen. So kann man Antworten oder Messwerte, die mittels JavaScript erhoben wurden, bequem im Datensatz speichern.
Das folgende Beispiel geht davon aus, dass man eine Frage vom Typ "interne Variablen" mit der Kennung "PC01" angelegt hat und darin zwei Variablen, welche die Kennungen "PC01_01" und "PC01_02" haben. Auf das versteckte Formularelemente zur Variable "PC01_01" kann man in JavaScript mittels ''%%document.getElementById("PC01_01")%%'' zugreifen. Per JavaScript soll nun die Breite und Höhe des Bildschirms (in [[:de:glossary#pixel|Pixeln]]) ermittelt und im Datensatz gespeichert werden.
Dazu wird die Frage "PC01" in die Fragebogen-Seite hineingezogen -- und darunter der folgende JavaScript-Code als Textbaustein platziert.
===== PHP-Variablen =====
Variablen beginnen in PHP mit einem Dollar-Zeichen, z.B. ''$version''. Mit einem einfachen Gleichheitszeichen (''='') wird ihnen ein Wert zugewiesen. Mit einem doppelten Gleichheitszeichen (''=='') wird dieser Wert mit einem anderen Wert verglichen.
**Wichtig:** Eine PHP-Variable gilt nur innerhalb eines //PHP-Code// Elements, sie ist flüchtig, wird also nicht dauerhaft gespeichert. Will man den Wert der Variable später in anderen PHP-Code Elementen verwenden, so muss man die Variable mittels ''[[:de:create:functions:registervariable|registerVariable()]]'' verfügbar machen. Benötigt man den Wert der Variable für die Auswertung, muss er mittels ''[[:de:create:functions:put|put()]]'' in eine interne Variable gespeichert werden.
Im folgenden Beispiel würfelt die Funktion ''[[:de:create:functions:random|random()]]'' die Zahl 1 oder 2. Das Ergebnis dieser Zufallsziehung wird in der Variable ''$version'' abgelegt. Anschließend wird in einer IF-Konstruktion ([[:de:create:filters]]) vergleichen, ob der Wert 1 ist (dann wird der Textbaustein "stimulus1" angezeigt) oder nicht (dann wird "stimulus2" angezeigt).
$version = random(1, 2);
if ($version == 1) {
text('stimulus1');
} else{
text('stimulus2');
}
==== Im Datensatz speichern ====
Um den Inhalt einer Variable über das Interview hinaus im Datensatz zu speichern, verwenden Sie eine interne Variable (s. oben) in Verbindung mit der Funktion ''[[:de:create:functions:put|put()]]''.
Bei dem obigen Beispiel sieht man anhand des Datensatzen __nicht__, welcher Stimulus angezeigt wurde. Legen Sie eine interne Variable (z.B. "IV01_01") an und verwenden Sie ''put()'', um das Ergebnis der Zufallsziehung im Datensatz zu speichern:
$version = random(1, 2);
put('IV01_01', $version);
if ($version == 1) {
text('stimulus1');
} else{
text('stimulus2');
}
==== Mit Variablen arbeiten ====
Mit Variablen kann man hervorragend rechnen. Im folgenden Beispiel wird dem Teilnehmer auf Seite 1 die Frage "AB01" gestellt -- eine offene Texteingabe für eine Zahl. Auf Seite 2 wird diese Antwort mittels ''value()'' ausgelesen und in die Variable ''$nummer'' gespeichert. Diese Variable wird mit 2 multipliziert (''*'') und das Ergebnis in die Variable ''$ergebnis'' gespeichert.
Anschließend wird die Variable ''$ergebnis'' als Text (String) behandelt und mit zwei anderen Strings verknüpft (''.''). Das Ergebnis dieser Verknüpfung wird an die Funktion ''html()'' zur Anzeige im Fragebogen übergeben.
// Auf Seite 2 mit der angegeben Zahl rechnen
$nummer = value('AB01'); // Zuweisen der angegeben Zahl zur Variable $nummer
$nummer = (int)$nummer; // Sicherstellen, dass es eine Zahl ist
$ergebnis = 2 * $nummer; // Zahl mit 2 multiplizieren
// Als Text im Fragebogen anzeigen
html('Sie haben die Hälfte von '.$ergebnis.' angegeben
');
==== Variablen dauerhaft verwenden ====
Mitunter ist es notwendig, eine PHP-Variable in mehreren PHP-Code Elementen zu verwenden. Im folgenden Beispiel sollten 10 Fernsehsender in zufälliger Reihenfolge abgefragt werden. In Frage AB01 soll angefragt werden, wie häufig man die Sender nutzt -- in Frage AB02 soll erfragt werden, wie attraktiv man das Programmangebot beurteilt.
Nun ist es natürlich sinnvoll, dass die Sender in beiden Fragen in derselben Reihenfolge abgefragt werden. Dazu wird mittels ''[[:de:create:functions:random_items|random_items()]]'' zunächst eine Liste ([[:de:create:array|Array]]) der Item-Kennungen in zufälliger Reihenfolge erstellt. Diese Liste wird in der Variable ''$items'' abgelegt.
Die Variable ''$items'' wird nicht nur auf der aktuellen Seite benötigt, sondern auch auf der Folgeseite mit Frage "AB02". Daher wird sie mittels ''[[:de:create:functions:registervariable|registerVariable()]]'' für künftige PHP-Code Elemente verfügbar gemacht. Anschließend wird die Frage "AB01" mit der gemischten Reihenfolge angezeigt.
$items = random_items('AB01'); // Randomisierte Reihenfolge der Items in Frage AB01
registerVariable($items);
question('AB01', $items); // Frage mit randomisierten Items stellen
Auf Seite 2 kann ''$items'' dann einfach verwendet werden.
question('AB02', $items); // Frage mit randomisierten Items stellen