Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
de:create:multilevel [08.03.2017 21:49] adminde:create:multilevel [03.01.2018 13:48] – [Echtes Multi-Level Design] admin
Zeile 51: Zeile 51:
   * ''[[:de:create:functions:multileveldown]]'' -- Startet innerhalb des Hauptfragebogens (Level 2) einen Teilfragebogen (Level 1) für das einzelne Element.   * ''[[:de:create:functions:multileveldown]]'' -- Startet innerhalb des Hauptfragebogens (Level 2) einen Teilfragebogen (Level 1) für das einzelne Element.
   * ''[[:de:create:functions:multileveldata]]'' -- Liefert im Teilfragebogen die Daten, die evtl. mittels ''multiLevelDown()'' übermittelt wurden.   * ''[[:de:create:functions:multileveldata]]'' -- Liefert im Teilfragebogen die Daten, die evtl. mittels ''multiLevelDown()'' übermittelt wurden.
-  * ''[[:de:create:functions:multilevelreturn]]'' -- Leitet den Teilnehmer vom Teilfragebogen zurück zum Hauptfragebogen und übergibt dabei (optional) Daten, z.B. einer Auswahlfrage, ob noch weitere Elemente folgen. Falls der Befhel nicht verwendet wird, springt der Teilfragebogen beim Erreichen der "letzten Seite" automatisch zurück zum Hauptfragebogen (dabei werden keine Daten übermittelt).+  * ''[[:de:create:functions:multilevelreturn]]'' -- Leitet den Teilnehmer vom Teilfragebogen zurück zum Hauptfragebogen und übergibt dabei (optional) Daten, z.B. einer Auswahlfrage, ob noch weitere Elemente folgen. Falls der Befehl nicht verwendet wird, springt der Teilfragebogen beim Erreichen der "letzten Seite" automatisch zurück zum Hauptfragebogen (dabei werden keine Daten übermittelt).
   * ''[[:de:create:functions:multilevelresponse]]'' -- Liefert im Hauptfragebogen die Daten, die evtl. von ''multiLevelReturn()'' übermittelt wurden.   * ''[[:de:create:functions:multilevelresponse]]'' -- Liefert im Hauptfragebogen die Daten, die evtl. von ''multiLevelReturn()'' übermittelt wurden.
  
Zeile 98: Zeile 98:
 ==== Beispiel 2 ==== ==== Beispiel 2 ====
  
-Alternativ kann der Hauptfragebogen zunächst alle Element abfragen und dann den Teilfragebogen entsprechend oft starten.+Alternativ kann der Hauptfragebogen zunächst alle Element abfragen und dann den Teilfragebogen entsprechend oft starten. Dieses Beispiel geht davon aus, dass in einer Frage vom Typ //Offene Nennungen// (Kennung z.B. "NG01") zunächst Elemente abgefragt wurden.
  
-**Hinweis:** Diese Anleitung ist noch unvollständigda loopPage() mit multiLevelDown() noch nicht vollständig zusmmenarbeitet.+Im Hauptfragebogen wird zunächst eine Liste der genannten Elemente erstellt und die Seitewelche den Teilfragebogen mittels ''multiLevelDown()'' aufruft entsprechend oft wiederholt. Die Nennung wird dabei an den Teilfragebogen übergeben.
  
-Für den Hauptfragebogen ist folgende Aufbau sinnvoll:+<code php> 
 +// Eine Liste der ausgefüllten Textfelder im Namensgenerator ermitteln 
 +$items = getItems('NG01', 'valid');
  
-  - Eine Seite mit einer Kennung (z.B. "startSub"), welche den Teilfragebogen mittels ''multiLevelDown()'' startet. +if (count($items> 0) { 
-  - Direkt darauf folgend eine Seite, welche (ggf. unter Rückgriff auf ''multiLevelResponse()'') prüftob noch ein weiteres Element angezeigt werden soll und dann mittels ''[[:de:create:functions:gotopage]]'' oder ''[[:de:create:functions:setnextpage]]'' zurück springt zur vorigen Seite "startSub".+  $item = loopPage($items); 
 +  // Text der Nennung abrugen 
 +  $element = value(id('NG01', $item)); 
 +  // Teilfragebogen starten und Text der Nennung übergeben 
 +  multiLevelDown('sub', $element); 
 +
 +</code>
  
-Im Teilfragebogen kann folgender Aufbau sinnvoll sein:+Im Hauptfragebogen sind dann keine weitere Anpassungen mehr erforderlich. Im Teilfragebogen sollte das Element mittels ''[[:de:create:function:put]]'' in einer [[:de:create:questions:internal|internen Variable]] gespeichert werden. Es kann darüber hinaus sinnvoll sein, einen Platzhalter für die Nennung mittels ''[[:de:create:function:replace]]'' zu definieren.
  
-  * Wenn die Elemente bereits im Hauptfragebogen ermittelt wurden: Eine Abfrage von Daten aus dem Hauptfragebogen mittels ''multiLevelData()'' -- z.B. muss die Bezeichnung des gerade abgefragten Elements und evtl. auch dessen Nummer übermittelt und mittels ''[[:de:create:functions:put]]'' im Teilfragebogen gespeichert werden. +<code php> 
-  * Wenn die Elemente erst im Teilfragebogen ermittelt werden:  +$element = multiLevelData(); 
-    - Eine Abfrage des Elements. +// Element im Teildatensatz speichern 
-    - Eine Abfrage ob noch ein weiteres Element eingetragen werden soll (oder eine Ausweichoption "keines mehr" neben einer Texteingabefrage). +put('IV01_01', $element); 
-    - Ein Filter, der ggf. mittels ''multiLevelReturn()'' einen Wert an den Hauptfragebogen übermitteltdass kein weiteres Element abgefragt werden soll.+// Platzhalter %element% definieren 
 +replace('%element%', $element); 
 +</code>
  
-**Tipp:** Legen sie für den Teilfragebogen unter **Fragebogen zusammenstellen** -> Karteireiter //Einstellungen// den Zugriffsmodus "Intern/gesperrt" fest, damit der Fragebogen tatsächlich nur als Teilfragebogen und nicht direkt aufgerufen werden kann.+Ein Rückgabewert vom Teilfragebogen an den Hauptfragebogen ist bei diesem Design in alle Regel nicht erforderlich.
  
-**Hinweis:** Es ist empfehlenswert im untergeordeneten Fragebogen die Nummerierung der Fragen abzuschalten (**Fragebogen zusammenstellen** -> Karteireiter //Einstellungen//). Derzeit ist die Nummerierung der Fragen in jedem untergeordneten Fragebogen noch unabhängig von der Nummerierung im Hauptfragebogen.+===== Hinweise ===== 
 + 
 +  * Es ist empfehlenswert im untergeordeneten Fragebogen die Nummerierung der Fragen abzuschalten (**Fragebogen zusammenstellen** -> Karteireiter //Einstellungen//). Derzeit ist die Nummerierung der Fragen in jedem untergeordneten Fragebogen noch unabhängig von der Nummerierung im Hauptfragebogen
 +  * Platzhalter gelten nur jeweils innerhalb eines Datensatzes -- daher können Platzhalter aus dem Hauptfragebogen nicht im Teilfragebogen verwendet werden. Falls ein Platzhalter auch im Teilfragebogen erforderlich ist, muss der entsprechende Wert mittels ''multiLevelDown()'' an den Teilfragebogen übergeben und dort ein Platzhalter definiert werden. 
 + 
 +**Tipp:** Legen sie für den Teilfragebogen unter **Fragebogen zusammenstellen** -> Karteireiter //Einstellungen// den Zugriffsmodus "Intern/gesperrt" fest, damit der Fragebogen tatsächlich nur als Teilfragebogen und nicht direkt aufgerufen werden kann.
de/create/multilevel.txt · Zuletzt geändert: 22.02.2024 20:31 von admin
 
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