Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
de:create:php [25.09.2014 10:46] – admin | de:create:php [17.06.2025 08:14] (aktuell) – alte Version wiederhergestellt (13.12.2024 08:20) admin |
---|
| |
Dieses Kapitel versucht, einen kleinen Einstieg in die Programmierung mit PHP zu geben. Keine breite Einführung in die Programmiersprache, sondern nur gerade so viel, wie man für fortgeschrittene Fragebögen und/oder Filter braucht. | Dieses Kapitel versucht, einen kleinen Einstieg in die Programmierung mit PHP zu geben. Keine breite Einführung in die Programmiersprache, sondern nur gerade so viel, wie man für fortgeschrittene Fragebögen und/oder Filter braucht. |
| |
| **Tipp:** [[https://www.soscisurvey.de/homepage/index.php?id=screencast#extra|Video-Tutorial zu PHP-Code]] |
| |
| **Warnung:** Verwenden sie bitte kein ChatGPT oder andere KI-Tools, um PHP-Code für Ihre Fragebogen zu schreiben. ChatGPT kennt sich zwar gut mit PHP-Code aus, hat baer keine Ahnung von SoSci Survey. Der Kontext ist aber wichtig, damit der Code das macht, was man braucht. Nehmen Sie sich ein paar Minuten Zeit, um die Programmierbeispiele in der Anleitung zu verstehen -- das ist deutlich effizienter. Wenn Sie ChatGPT verwenden möchten, dann bitte nur, um sich die Code-Beispiele erklären zu lassen. |
| |
===== PHP-Code im Fragebogen verwenden ===== | ===== PHP-Code im Fragebogen verwenden ===== |
| |
Nach dem Einfügen des //PHP-Code//-Elements erscheint im Fragebogen ein Texteingabefeld, in das man PHP-Code eingeben kann. | Nach dem Einfügen des //PHP-Code//-Elements erscheint im Fragebogen ein Texteingabefeld, in das man PHP-Code eingeben kann. |
| |
| **Hinweis:** Der PHP-Code wird ausgeführt, sobald die Seite beim Ausfüllen des Fragebogens oder in der Vorschau geöffnet wird. |
| |
===== Bequemer programmieren (Fragen und Texte) ===== | ===== Bequemer programmieren (Fragen und Texte) ===== |
| |
Es ist i.d.R. müßig, die Fragen per Hand in den PHP-Code einzuzippen. oFb macht es etwas einfacher: Wenn man eine Frage (aus dem Fragebogen oder aus der Liste rechts) in ein Element PHP-Code hineinzieht, dann wird der Code automatisch geschrieben. | Es ist i.d.R. müßig, die Fragen per Hand in den PHP-Code einzutippen. SoSci Survey macht es Ihnen ein wenig einfacher: Wenn man eine Frage (aus dem Fragebogen oder aus der Liste rechts) in ein Element PHP-Code hineinzieht, dann wird der Code automatisch geschrieben. |
| |
So braucht man Fragen und Textbausteine nicht per Hand einzutippen. Um einen Filter zu erstellen, kann man zunächst die IF-Konstruktion ([[filters|Filterfragen und Filter]]) verwenden. | So braucht man Fragen und Textbausteine nicht per Hand einzutippen. Um einen Filter zu erstellen, kann man zunächst die IF-Konstruktion ([[filters|Filterfragen und Filter]]) verwenden. |
</code> | </code> |
| |
Die eigentliche Funktion heißt ''question''. Das ist in oFb der Befehl, um eine Frage anzuzeigen. Dahinter folgen Klammern. Da jede Funktion von Klammern gefolgt wird, schreibt man den Funktionsnamen üblicherweise so: ''[[functions-base#question|question()]]'' | Die eigentliche Funktion heißt ''question''. Das ist in SoSci Survey der Befehl, um eine Frage anzuzeigen. Dahinter folgen Klammern. Da jede Funktion von Klammern gefolgt wird, schreibt man den Funktionsnamen üblicherweise so: ''[[:de:create:functions:question|question()]]'' |
| |
In den Klammern steht im Beispiel ein so genannter Parameter. Damit gibt man an, was die Funktion genau machen soll. Der Parameter im Beispiel ist ''%%'AB01'%%''. Die einfachen Anführungszeichen zeigen an, dass es sich um einen Text, auch String genannt, handelt. Man könnte übrigens auch doppelte Anführungszeichen verwenden: ''%%"AB01"%%''. | In den Klammern steht im Beispiel ein so genannter Parameter. Damit gibt man an, was die Funktion genau machen soll. Der Parameter im Beispiel ist ''%%'AB01'%%''. Die einfachen Anführungszeichen zeigen an, dass es sich um einen Text, auch String genannt, handelt. Man könnte übrigens auch doppelte Anführungszeichen verwenden: ''%%"AB01"%%''. |
===== Variablen ===== | ===== Variablen ===== |
| |
Der Begriff //Funktion// kommt ja eigentlich aus der Mathematik. Und der Befehl ''question()'' hat mit einer Funktion noch herzlich wenig zu tun. Aber Funktionen können auch etwas berechnen. So berechnet der Befehl ''[[functions-random#random|random()]]'' zum Beispiel eine Zufallszahl. | Der Begriff //Funktion// kommt aus der Mathematik. Und der Befehl ''question()'' hat mit einer mathematischen Funktion noch herzlich wenig zu tun. Aber Funktionen können auch etwas berechnen oder anderweitig ermitteln. So ermittelt der Befehl ''[[:de:create:functions:casenumber|caseNumber()]]'' zum Beispiel die Nummer des laufenden Interviews (CASE). |
| |
Die Funktion ''random()'' erwartet 2 Parameter, nämlich die kleinste und die größte Zahl, die gewürfelt werden darf. ''random(1,6)'' würde als eine Zahl zwischen 1 und 6 würfeln. Mit dieser Zahl möchten wir aber etwas machen, z.B. einen Stimulus zufällig auswählen. | |
| |
<code php> | <code php> |
$zahl = random(1,6); // Würfelt eine Zahl zwischen 1 und 6 | $num = caseNumber(); |
</code> | </code> |
| |
Damit wir mit dem Ergebnis der Funktion (in diesem Fall also mit der Zufallszahl) etwas machen können, müssen wir sie irgendwo ablegen. Dafür gibt es in den meisten Programmiersprachen so genannte Variablen. Variablen kann man sich etwa wie ein leeres Eingabefeld im Fragebogen vorstellen: Man kann etwas hineinschreiben. Nur sieht das zunächst keiner. | Damit wir mit dem Ergebnis der Funktion (in diesem Fall also mit der Interview-Nummer) etwas machen können, müssen wir sie vorübergehend speichern. Dafür gibt es in den meisten Programmiersprachen Variablen. Variablen kann man sich etwa wie ein leeres Eingabefeld im Fragebogen vorstellen: Man kann etwas hineinschreiben. Nur sieht das zunächst keiner und es wird auch nicht im Datensatz gespeichert. |
| |
In PHP beginnen Variablen immer mit einem Dollar-Zeichen ($). Im Beispiel oben gibt es eine Variable ''$zahl''. Wie man seine Variablen nennt ist Geschmackssache -- nur Umlaute und Sonderzeichen außer dem Unterstrich (_) sind weitgehend verboten. Statt ''$zahl'' könnte man also genauso ''$variable_fuer_zufallszahl'' schreiben. Aber das ist eben etwas länger. | In PHP beginnen Variablen immer mit einem Dollar-Zeichen (''$''). Im Beispiel oben gibt es eine Variable ''$num''. Wie man seine Variablen nennt, ist Geschmackssache -- nur Umlaute und Sonderzeichen außer dem Unterstrich (''_'') sind weitgehend verboten. Statt ''$num'' könnte man also genauso ''$variable_fuer_fallnummer'' schreiben. |
| |
Das Istgleich-Zeichen %%(=)%% ist ein so genannter Operator. Es sorgt einfach dafür, dass das, was die Funktion ''random()'' zurückgibt in der Variable ''$zahl'' links davon gespeichert wird. In der Variable ''$zahl'' steht nun also die Zufallszahl. | Das Istgleich-Zeichen %%(=)%% ist ein //Operator//. Es sorgt dafür, dass das, was die Funktion ''caseNumber()'' zurückgibt in der Variable ''$num'' links vom Operator gespeichert wird. In der Variable ''$num'' steht nun also die Interview-Nummer. |
| |
Wenn wir diese Zufallszahl nun auch noch anzeigen möchten, benötigen wir den Befehl ''[[functions-output#html|html()]]''. Diese Funktion macht nichts anderes, als HTML-Code (also z.B. Text) in den Fragebogen zu schreiben. | Wenn wir diese Nummer nun auch noch anzeigen möchten, benötigen wir den Befehl ''[[:de:create:functions:html|html()]]''. Diese Funktion macht nichts anderes, als HTML-Code (also z.B. Text) in den Fragebogen zu schreiben. |
| |
<code php> | <code php> |
$zahl = random(1,6); // Würfelt eine Zahl zwischen 1 und 6 und speichert sie in der Variable $zahl | $num = caseNumber(); |
$text = (string)$zahl; // Die Zahl in einen Text umwandeln und in $text speichern | $text = (string)$num; // Die Zahl in einen Text umwandeln und in $text speichern |
html($text); // Schreibt den Text $text, der die Zahl enthält, in den Fragebogen | html($text); // Schreibt den Inhalt von $text in den Fragebogen |
</code> | </code> |
| |
**Hinweis:** Falls Sie sich über die Umwandlung der Zahl in einen Text wundern: Sie könnten auch ''html($zahl)'' schreiben -- und es würde auch funktionieren. Aber oFb wäre irritiert, warum Sie im Befehl html() keinen Text (String) verwenden, und würde Sie mit einer Fehlermeldung auf den vermeintlichen Missstand aufmerksam machen. | **Hinweis:** Falls Sie sich über die Umwandlung der Zahl in einen Text wundern: Sie könnten auch ''html($zahl)'' schreiben -- und es würde auch funktionieren. Aber SoSci Survey wäre irritiert, warum Sie im Befehl ''html()'' keinen Text (String) verwenden, und würde Sie mit einer Fehlermeldung auf den vermeintlichen Missstand aufmerksam machen. |
| |
Legt man in einem Fragebogen einen PHP-Code als Element an und fügt die obigen drei Zeilen ein, so erhält man ein wenig spektakuläres Ergebnis: Es wird eine zufällige Zahl zwischen 1 und 6 angezeigt. Wenn man die Seite neu lädt, so wird eine andere Zahl gewürfelt und angezeigt. | Legt man in einem Fragebogen einen PHP-Code als Element an und fügt die obigen drei Zeilen ein, so erhält man ein wenig spektakuläres Ergebnis: Bei jedem Aufruf des Fragebogens wird eine stetig steigende Zahl angezeigt. |
| |
{{:de:create:scr.php.random.png?nolink|Anzeige einer Zufallszahl im Fragebogen}} | {{:de:create:scr.php.random.png?nolink|Anzeige einer Zahl im Fragebogen}} |
| |
Wie man Zufallszahlen sinnvoll verwenden kann, beschreibt das Kapitel [[randomization|Randomisierung]]. Für den Moment geht es aber um Variablen: In diese kann man Werte zwischenspeichern und an anderer Stelle wieder verwenden. | Den Befehl ''caseNumber()'' werden Sie vermutlich nicht häufig benötigen. Für den Moment geht es vorrangig um Variablen: In diese kann man Werte zwischenspeichern und an anderer Stelle wieder verwenden. |
| |
===== Texte aneinanderhängen ===== | ===== Texte aneinanderhängen ===== |
{{:de:create:scr.php.random-h1.png?nolink|Formatierten Text ausgeben}} | {{:de:create:scr.php.random-h1.png?nolink|Formatierten Text ausgeben}} |
| |
**Tipp:** Weitere Erklärungen zur Verwendung finden Sie bei der Referenz zur Funktion ''[[functions-output#html|html()]]''. | **Tipp:** Weitere Erklärungen zur Verwendung finden Sie bei der Referenz zur Funktion ''[[:de:create:functions:html|html()]]''. |
| |
===== Referenz für Funktionen ===== | ===== Referenz für Funktionen ===== |
| |
Es ist natürlich schön, wenn man mit html() Text in den Fragebogen schreiben kann oder mit question() eine Frage anzeigen. Aber woher soll man wissen, welche Funktion was macht und welche Parameter sie erwartet? | Es ist natürlich schön, wenn man mit ''html()'' Text in den Fragebogen schreiben kann oder mit ''question()'' eine Frage anzeigen. Aber woher soll man wissen, welche Funktion was macht und welche Parameter sie erwartet? |
| |
Dafür gibt es Referenzen. Für oFb ist einmal die Liste der speziellen Fragebogen-Funktionen relevant und einmal die generelle PHP-Referenz (PHP Manual). Letztere allerdings eher bei fortgeschrittenen Ansprüchen, zumal oFb aus Sicherheitsgründen nur eine Auswahl von Befehlen erlaubt. | |
| |
* [[functions|PHP-Funktionen]] | Dafür gibt es Referenzen. Für SoSci Survey ist einmal die Liste der speziellen Fragebogen-Funktionen relevant ([[:de:create:functions|PHP-Funktionen]]) und einmal die generelle PHP-Referenz ([[https://php.net/manual/de/index.php|PHP Manual]]). Letztere allerdings eher bei fortgeschrittenen Ansprüchen, zumal SoSci Survey aus Sicherheitsgründen nur eine Auswahl von Befehlen erlaubt (diese sind ebenfalls bei den [[functions|PHP-Funktionen]] aufgelistet). |
* [[http://php.net/manual/de/index.php|PHP Manual]] | |
| |
===== Anwendungen für PHP-Code ===== | ===== Anwendungen für PHP-Code ===== |
Die häufigste Anwendung für PHP-Code im Fragebogen sind Filter. Diese werden im Kapitel [[filters|Filterfragen und Filter]] erklärt. | Die häufigste Anwendung für PHP-Code im Fragebogen sind Filter. Diese werden im Kapitel [[filters|Filterfragen und Filter]] erklärt. |
| |
Auch bietet oFb verschiedene Arten von Variablen, diese werden beschrieben in [[variables|Variablen in oFb]]. | Auch bietet SoSci Survey verschiedene Arten von Variablen, diese werden beschrieben in [[variables|Variablen in SoSci Survey]]. |
| |
Hohe Flexibilität bieten [[placeholders|Platzhalter]], s. auch [[inputs-single|Eingabefelder frei platzieren]]. | Hohe Flexibilität bieten [[placeholders|Platzhalter]], s. auch [[inputs-single|Eingabefelder frei platzieren]]. |
Die Anleitungen hier können nur einen ersten Einstieg geben. Wer spannende Algorithmen im Fragebogen verwenden will, der findet hier einen breiteren Einstieg in die Programmiersprache PHP: | Die Anleitungen hier können nur einen ersten Einstieg geben. Wer spannende Algorithmen im Fragebogen verwenden will, der findet hier einen breiteren Einstieg in die Programmiersprache PHP: |
| |
* "PHP für dich" (sehr einfaches Tutorial) auf http://www.schattenbaum.net/php/ | * "PHP für dich" (sehr einfaches Tutorial) auf [[http://www.schattenbaum.net/php/anfang.php|Schattenbaum.net]] |
* "PHP-Einfühung" auf [[http://www.php-einfach.de/einf_php.php| http://www.php-einfach.de]] | * "PHP-Einfühung" auf [[http://www.php-einfach.de/php-tutorial/php-tutorial.php|http://www.php-einfach.de]] |
* "quakenet:#php Tutorial" auf [[http://tut.php-q.net| http://tut.php-q.net]] | * "quakenet:#php Tutorial" auf [[http://tut.php-quake.net/de/|Quakenet/#php Tutorial]] |
| |
**Hinweis:** In den Tutorials steht viel mehr als Sie für die Programmierung des Fragebogens benötigen. Relevant ist vor allem das, was in den Anleitungen zwischen ''**%%<?PHP%%**'' und ''**%%?>%%**'' steht! | **Hinweis:** In den Tutorials steht viel mehr als Sie für die Programmierung des Fragebogens benötigen. Relevant ist vor allem das, was in den Anleitungen zwischen ''**%%<?PHP%%**'' und ''**%%?>%%**'' steht! |
| |
**Hinweis:** Um die Sicherheit der Daten und stabile Befragungen zu gewährleisten, sind in oFb nur bestimmte Funktionen erlaubt. So können Sie z.B. keinen Text mit **echo** ausgeben. Statt echo können sie die Funktion **html()** verwenden. Sobald Sie eine "verbotene" Funktion im Set-Code verwenden, erscheint eine entsprechende Warnung und der PHP-Code wird nicht mehr ausgeführt. | **Hinweis:** Um die Sicherheit der Daten und stabile Befragungen zu gewährleisten, sind in SoSci Survey nur bestimmte Funktionen erlaubt. So können Sie z.B. keinen Text mit ''echo'' ausgeben. Statt ''echo'' können sie die Funktion ''[[:de:create:functions:html|html()]]'' verwenden. Sobald Sie eine "verbotene" Funktion im PHP-Code verwenden, erscheint eine entsprechende Warnung und der PHP-Code wird nicht mehr ausgeführt. |