Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:create:php [01.08.2019 10:27] – [PHP-Code im Fragebogen verwenden] jjordan.uni-potsdamde:create:php [23.10.2026 14:44] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 6: Zeile 6:
  
 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]]
 +
 +**Wichtig:** Falls Sie sich beim PHP-Code von einem KI-Tool helfen lassen möchten, dann verwenden Sie folgenden Prompt und bleiben Sie kritisch, denn KI-Modelle machen häufig Fehler. Sollte der Code länger sein als ein paar Zeilen, dann gibt es in aller Regel eine viel einfachere Lösung in SoSci Survey.
 +
 +> Ich erstelle einen Fragebogen in SoSci Survey. Bitte lies zuerst die technischen Regeln unter %%https://www.soscisurvey.de/llms.txt%% und beachte diese strikt. Schreibe mir dann einen PHP-Filter, der ...
  
 ===== PHP-Code im Fragebogen verwenden ===== ===== PHP-Code im Fragebogen verwenden =====
Zeile 17: Zeile 23:
 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.
  
-Der Code wird sofort ausgeführt, wenn die Seite geöffnet wird.+**Hinweis:** Der PHP-Code wird ausgeführt, sobald die Seite beim Ausfüllen des Fragebogens oder in der Vorschau geöffnet wird. 
 + 
 + 
 +===== Verarbeitung von Antworten mittels PHP-Code ===== 
 + 
 +SoSci Survey erlaubt bei **Fragebogen zusammenstellen** zwei unterschiedliche Eingabefelder für PHP-Code. 
 + 
 +  - PHP-Code, welcher beim Erstellen der Fragebogen-Seite ausgeführt wird und Inhalte anzeigen kann. Ein solches PHP-Feld erhalten Sie, indem Sie das Element "PHP-Code" von rechts in den Fragebogen ziehen. 
 +  - PHP-Code, welcher erst nach dem Klick auf "Weiter" ausgeführt wird, zum Beispiel um die Antworten zu prüfen und/oder mittels ''setNextPage()'' die folgende Fragebogen-Seite festzulegen. Pro Fragebogen-Seite ist nur ein solches Element möglich, Sie erhalten es, indem Sie auf den Knopf "+ Verarbeitung der Antworten mittels PHP" unten auf der Seite klicken. Dieser Knopf erscheint erst, wenn die Seite andere Elemente enthält. 
 + 
 +**Wichtig:** Falls Sie eine Fehlermeldung wie die folgende erhalten, dann haben Sie Ihren PHP-Code womöglich in das Feld "Verarbeitung der Antworten mittels PHP" geschrieben und nicht in ein Element "PHP-Code". 
 + 
 +> Warnung: Die Funktion goToQuestionnaire() ist nicht für die Verarbeitung der Antworten mittels PHP-Code geeignet oder zugelassen. 
 + 
 +{{:de:create:scr.php-modes.png?nolink|Unterschiedliche Eingabefelder für PHP-Code}} 
 + 
  
 ===== Bequemer programmieren (Fragen und Texte) ===== ===== Bequemer programmieren (Fragen und Texte) =====
Zeile 25: Zeile 47:
 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.
  
-{{scr.questionnaire.element-to-php.png?nolink|Ein Fragebogen-Elemente in PHP-Code umwandeln}}+{{scr.questionnaire.element-to-php.png?nolink|Ein Fragebogen-Element in PHP-Code umwandeln}}
  
 **Hinweis:** Wenn eine Frage erstmal im PHP-Code steht, dann gibt es keinen Weg zurück. Natürlich kann man die Frage im PHP-Code löschen und aus der Auswahl rechts neu in den Fragebogen einfügen. **Hinweis:** Wenn eine Frage erstmal im PHP-Code steht, dann gibt es keinen Weg zurück. Natürlich kann man die Frage im PHP-Code löschen und aus der Auswahl rechts neu in den Fragebogen einfügen.
Zeile 65: Zeile 87:
 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. 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 //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.+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 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. 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.
Zeile 75: Zeile 97:
 </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 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.+**Hinweis:** Falls Sie sich über die Umwandlung der Zahl in einen Text wundern: Sie könnten auch ''html($num)'' 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: Bei jedem Aufruf des Fragebogens wird eine stetig steigende Zahl 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.
Zeile 118: Zeile 140:
 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]].
  
-Und last but not least kann man in PHP sehr komfortabel mit so genannten Arrays arbeiten - zum Beispiel, um in einer Frage nur jene Items anzuzeigen, die in einer vorhergehenden Frage angekreuzt wurden: [[filter-items|Items in eine anderen Frage übernehmen]].+Und last but not least kann man in PHP sehr komfortabel mit so genannten Arrays arbeiten - zum Beispiel, um in einer Frage nur jene Items anzuzeigen, die in einer vorhergehenden Frage angekreuzt wurden: [[filter-items|Items in eine andere Frage übernehmen]].
  
 ===== Richtig programmieren ===== ===== Richtig programmieren =====
Zeile 125: Zeile 147:
  
   * "PHP für dich" (sehr einfaches Tutorial) auf [[http://www.schattenbaum.net/php/anfang.php|Schattenbaum.net]]   * "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/php-tutorial/php-tutorial.php|http://www.php-einfach.de]]+  * "PHP-Einführung" auf [[http://www.php-einfach.de/php-tutorial/php-tutorial.php|http://www.php-einfach.de]]
   * "quakenet:#php Tutorial" auf [[http://tut.php-quake.net/de/|Quakenet/#php Tutorial]]   * "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 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.+**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.
de/create/php.1564648067.txt.gz · Zuletzt geändert: von jjordan.uni-potsdam
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki