PDA

Vollständige Version anzeigen : 8 Fragen auf einer Seite - Blockieren nach Antwort auf 4 beliebige Fragen möglich?


Claudia_S
07.03.2013, 09:55
Hallo zusammen,

für meine Bachelorarbeit möchte ich eine Studie online stellen. Allerdings arbeite ich zum ersten Mal mit Unipark, so dass ich mich noch nicht allzu gut mit dem Programm auskenne.

Nun habe ich folgendes Problem:
Auf einer Seite habe ich 8 Satzanfänge formuliert, von denen sich die Umfrageteilnehmer 4 beliebige (und NUR 4) heraussuchen und ergänzen sollen (Fragetyp 144). Am besten wäre es, wenn nach Eingabe von 4 Sätzen ein weiteres Eingeben blockiert wäre. Ich möchte verhindern, dass Teilnehmer mehr als 4 Sätze ausfüllen.
Toll wäre es auch, wenn man gleichzeitig einstellen könnte, dass 4 Fragen ausgefüllt werden müssen (bei z. B. nur 3 ergänzten Satzanfängen funktioniert das Weiterklicken nicht, so wie bei einer nicht beantworteten Pflichtfrage).
Diese Einstellungen sollen jedoch nur für diese eine Seite des Fragebogens gelten.

Kann man das irgendwie einstellen und wenn ja, wie? Ich habe dazu bisher nirgendwo etwas gefunden.

Vielen Dank für eure Hilfe!

JensL
07.03.2013, 16:26
Hallo Claudia_S,

ja das ist möglich, allerdings kann ich Dir nicht pauschal sagen, wie Du das einbinden kannst, da es je nach verwendetem Fragetyp unterschiedlich umgesetzt werden muss.

Bitte reiche die in diesem Post

http://forum.unipark.info/forum/announcement.php?f=279

genannten Informationen nach, dann werfe ich gerne einen Blick auf Dein Projekt und gebe Dir dann dementsprechend Hilfestellung.

Gruß

Jens

Hallo zusammen,

für meine Bachelorarbeit möchte ich eine Studie online stellen. Allerdings arbeite ich zum ersten Mal mit Unipark, so dass ich mich noch nicht allzu gut mit dem Programm auskenne.

Nun habe ich folgendes Problem:
Auf einer Seite habe ich 8 Satzanfänge formuliert, von denen sich die Umfrageteilnehmer 4 beliebige (und NUR 4) heraussuchen und ergänzen sollen (Fragetyp 144). Am besten wäre es, wenn nach Eingabe von 4 Sätzen ein weiteres Eingeben blockiert wäre. Ich möchte verhindern, dass Teilnehmer mehr als 4 Sätze ausfüllen.
Toll wäre es auch, wenn man gleichzeitig einstellen könnte, dass 4 Fragen ausgefüllt werden müssen (bei z. B. nur 3 ergänzten Satzanfängen funktioniert das Weiterklicken nicht, so wie bei einer nicht beantworteten Pflichtfrage).
Diese Einstellungen sollen jedoch nur für diese eine Seite des Fragebogens gelten.

Kann man das irgendwie einstellen und wenn ja, wie? Ich habe dazu bisher nirgendwo etwas gefunden.

Vielen Dank für eure Hilfe!

Claudia_S
10.03.2013, 09:59
Hallo Jens,

vielen Dank für deine Nachricht. Hier die fehlenden Informationen:

Installation: ww3.unipark.de

Projekt-ID: 329691

Seiten-ID: 2046382 ("Pläne_unspezifisch"), 2047929 ("Pläne_internal") und 2047930 ("Pläne_external")

Fragetyp: 144 (jeweils 8 x)

Zugang (Accountname): claudiaschmidt

Besten Dank im Voraus und viele Grüße,
Claudia

JensL
11.03.2013, 17:37
Hallo Claudia,

leider ist das bei Textfeldern etwas komplizierter, als es z.B. bei einer Mehrfachauswahl der Fall wäre.

Dabei könnte man einfach die Variablenausprägungen summieren und dann schauen, ob die Summer über dem angestrebten Wert liegt.
Das geht hier allerdings nicht, weil die Variablen ja nicht den Wert 0, 1, 2 usw. haben, sondern den Text als Inhalt.

Daher würde ich folgenden Workaround vorschlagen:

Du legst Dir eine benutzerdefinierte Variable an (Projekteigenschaften, näheres dazu siehe Handbuch).

Wenn dies die erste benutzerdefinierte Variable in Deinem Projekt ist, wird dies c_0001 sein.

Nun brauchst Du, da die Variable standardmäßig den Missing Wert -77 hat, einen Rekodierungstrigger, der die Variable mit dem Wert 0 beschreibt.
Dieser muss auf einer der Seiten eingebracht werden, welche vor den Textfeldseiten liegt.

Der Trigger rekodiert also c_0001 mit dem Wert 0.

Dann brauchst Du auf jeder der Textfeld-Seiten einen Rekodierungstrigger.

Dieser zählt den Wert der Variable c_0001 um 1 hoch, wenn das Textfeld nicht leer ist.

Dazu legst Du einen Rekodierungstrigger mit 8 Rekodierungen an, die folgendes machen:

(am Beispiel der Seite Pläne_unspezifisch)

c_0001 rekodieren mit #c_0001# + 1 Bedingung: v_384 !=
c_0001 rekodieren mit #c_0001# + 1 Bedingung: v_385 !=
c_0001 rekodieren mit #c_0001# + 1 Bedingung: v_386 !=

usw.

Was dann passiert ist, dass c_0001 mit dem bisherigen Wert der Variable c_0001 (ausgegeben durch den Platzhalter #c_0001#) + 1.
Bei der Bedingung (Klick auf das Trichtersymbol), wählst Du die entsprechende Variable aus, setzt den Haken bei Negation und lässt das Feld Code leer.

Das System geht dann, wenn die Situation so ist, dass z.B. das erste Textfeld ausgefüllt ist und das zweite nicht, so vor:

Ist das Textfeld zu v_384 nicht leer? Wenn das zutrifft (das Textfeld also wie im Beispiel gefüllt ist) wird die Variable c_0001 (mit dem Ausgangswert 0) um 1 erhöht.
c_0001 hat hiernach also den Wert 1.
Als nächste wird geprüft, ob das Textfeld zu v_385 nicht leer ist. Dies trifft dem Beispiel entsprechend zu, also wird die Rekodierung nicht ausgeführt, usw.

Als letztes brauchst Du auf den drei Textfeld-Seiten noch je einen Plausicheck, der anspringt, wenn c_0001 > 4 ist.

Ich hoffe ich konnte das nachvollziehbar erläutern.

Gruß

Jens

Claudia_S
14.03.2013, 17:52
Hallo Jens,

erst einmal vielen lieben Dank für deine Mühe und deine ausführlichen Beschreibungen.
Wir hier im Team haben soweit alle Schritte nachvollziehen und auch umsetzen können, aber leider klappt es noch nicht so, wie gewollt. Irgendwo hat sich ein Fehler versteckt.
Was wir gemacht haben (haben alles an der Seite "Pläne_unspezifisch" ausprobiert):

1. eine benutzerdefinierte Variable angelegt, Varablentyp kurzer Text oder Ganzzahl (beides ausprobiert)

2. Rekodierungstrigger mit dem Wert 0, diesen haben wir auf die Seite, die direkt vor den Plänen kommt, eingebracht; Ausführungsposition: direkt; Bedingung: immer ausführen; bei Spezialoptionen benutzerdefinierte Variable und 0 eingetragen

3. dann auf der Seite "Pläne_unspezifisch" den zweiten Rekodierungstrigger angelegt, so, wie du es beschrieben hattest; Ausführungsposition: direkt; Bedingung: immer ausführen; bei Spezialoptionen 8x die benutzerdefinierte Variable eingetragen mit dem Wert #c_0001# + 1 und bei den acht Bedingungen entsprechend die Variablennamen benannt (z. B. v_384), Haken ist bei Negation, Bedingung ist "gleich" und Code-Feld ist leer

4. Plausicheck: Laut Handbuch sollte man hier "Client (Java Script) UND Server" einstellen, da kommt bei uns aber immer eine Fehlermeldung, so dass wir nun nur "Server" angeklickt haben; statt deines Vorschlags mit ">4" haben wir hier "!=4" eingestellt, damit die Fehlermeldung kommt, wenn mehr, aber auch weniger, als 4 Sätze ausgefüllt werden

Nun das Problem: Wenn man auf Seitenvorschau geht und die Sätze ausfüllt, springt der Plausicheck zwar an und wirft die Fehlermeldung aus, allerdings egal, wieviel man ausfüllt. Die Fehlermeldung kommt auch bei 4 ausgefüllten Sätzen.

Vielleicht kannst du schon auf Anhieb sagen, wo der Einstellungsfehler liegt?

Viele Grüße,
Claudia

JensL
17.03.2013, 12:15
Hallo Claudia,

kurzer Einwurf, hast Du bei allen Triggern die Option "in der Vorschau ausführen" ausgewählt? Auch bei den Rekodierungstriggern?

Falls ja, gib bitte kurz Bescheid, dann schaue ich mir das mal im Detail an.

Gruß

Jens

Claudia_S
17.03.2013, 17:15
Hi,

ja, die Option "Trigger auch in der Fragebogenvorschau ausführen" war bzw. ist überall aktiviert.
Vielleicht liegt es daran, dass zwar alles funktioniert (bei Ausfüllen eines Feldes immer + 1, bei Leerlassen eines Feldes nicht + 1), aber am Ende nicht addiert wird (z.B. werden 6 Felder ausgefüllt, aber im Plausicheck wird keine "6" mit der Bedingung "!=4" verglichen?). Die Fehlermeldung taucht ja immer auf, auch bei (richtigerweise) 4 ausgefüllten Feldern.

Viele Grüße,
Claudia

JensL
18.03.2013, 12:23
Hallo Claudia ,

puh das hat mich jetzt einiges an Zeit gekostet, allerdings war es im Endeffekt wirklich was ganz simples, was Du sogar schon erwähnt hattest.

Die Ausführposition "direkt" an dieser Stelle ist quatsch für den zweiten Rekodierungstrigger, da der Trigger dann ja bereits beim Aufruf der Seite ausgeführt wird.

Richtig ist hier "nach Abschicken, vor Filtern".

Außerdem musst Du Dir nochmal den zweiten Rekodierungstrigger angucken, da sind ja noch bei weitem nicht alle Variablen integriert.

Gruß

Jens

Claudia_S
18.03.2013, 18:03
Hallo Jens,

vielen herzlichen Dank für deine schnelle Nachricht und dafür, dass du dir so viel Mühe machst!
Das mit der Ausführposition für den zweiten Rekodierungstrigger habe ich geändert.

Allerdings bin ich mir nicht ganz sicher, was du mit
"Außerdem musst Du Dir nochmal den zweiten Rekodierungstrigger angucken, da sind ja noch bei weitem nicht alle Variablen integriert." meinst.
Wir hatten alle relevanten Variablen berücksichtigt (bei Variablen mit zwei Teilsätzen, wie z. B. I will not..., but instead..., haben wir nur die erste Variable berücksichtigt). Wir hatten die ingesamt acht Variablen/Satzanfänge bei Trigger 1 unter "Bedingungen" (Trichtersymbol) angelegt.
Ich habe nun jedoch, weil du es vielleicht so meintest (?), die restlichen Variablen als extra Trigger in einer Triggerliste angelegt (entsprechend dann jeweils mit nur einer Bedingung bzw. Variablenzuweisung) und die Bedingungen 2 bis 8 aus dem ersten Trigger rausgelöscht.
Aber leider hat sich dadurch nichts geändert. Es funktioniert immer noch nicht und es taucht der gleiche Fehler wie vorher auf.
Wir sind hier langsam etwas verzweifelt, da wir so viel hin- und herprobiert haben und nicht wissen, was wir falsch machen. :)

Viele Grüße,
Claudia

JensL
19.03.2013, 12:50
Hallo Claudia,

habe mich nochmal eingehend damit beschäftigt. Dass es nicht geklappt hat war (abgesehen von der Ausführposition, was ja inzwischen behoben wurde) nicht euer Fehler.
Ich hatte die unterschiedliche Abarbeitung der Trigger vs. Plausi nicht beachtet. Ergebnis war, dass der Plausicheck vor dem Trigger ausgeführt wurde und dementsprechend c_0001 natürlich immer = 0 war und der Plausi meckerte.

Nachdem ich insgesamt jetzt 3 Lösungsversuche gebaut hatte, bei denen jeweils irgendein Aspekt nicht funktionierte, habe ich alles über Bord geworfen und nochmal von vorne angefangen.

Die schlechte Nachricht: Wenn Ihr die Lösung verwenden möchtet müsst Ihr das auch.

Die gute(n) Nachricht(en): a) es funktioniert, b) wenn Ihr das einmal eingerichtet habt könnt Ihr das für die weiteren zwei Anwendungen einfach über die Funktion "Trigger kopieren und auf anderer Seite einfügen" innerhalb von Sekunden replizieren.

Nun zur Umsetzung:

Ihr löscht die Rekodierungstrigger und den Plausicheck.

Dann legt Ihr 8 weitere benutzerdefinierte Variablen an (also insgesamt 9, alle Typ Ganzzahl).

Nun braucht Ihr einen Rekodierungstrigger auf der Seite "Pläne_unspezifisch" (Nach Abschicken, vor Filtern | Immer ausführen | Mehrfach ausführen: Ja).

Hierin legt Ihr folgende Rekodierungen an:

Var: c_0001 | Wert: 1 | Bedingung: if( v_384 != '' )
Var: c_0002 | Wert: 1 | Bedingung: if( v_385 != '' )
Var: c_0003 | Wert: 1 | Bedingung: if( v_386 != '' AND v_387 != '' )
Var: c_0004 | Wert: 1 | Bedingung: if( v_388 != '' )
Var: c_0005 | Wert: 1 | Bedingung: if( v_389 != '' AND v_390 != '' )
Var: c_0006 | Wert: 1 | Bedingung: if( v_391 != '' )
Var: c_0007 | Wert: 1 | Bedingung: if( v_392 != '' AND v_393 != '' )
Var: c_0008 | Wert: 1 | Bedingung: if( v_394 != '' )

Wenn das erledigt ist kopiert Ihr den Trigger und dreht das Ganze um, sodass das Ergebnis so aussieht:

Var: c_0001 | Wert: 0 | Bedingung: if( v_384 = '' )
Var: c_0002 | Wert: 0 | Bedingung: if( v_385 = '' )
Var: c_0003 | Wert: 0 | Bedingung: if( v_386 = '' OR v_387 = '' )
Var: c_0004 | Wert: 0 | Bedingung: if( v_388 = '' )
Var: c_0005 | Wert: 0 | Bedingung: if( v_389 = '' OR v_390 = '' )
Var: c_0006 | Wert: 0 | Bedingung: if( v_391 = '' )
Var: c_0007 | Wert: 0 | Bedingung: if( v_392 = '' OR v_393 = '' )
Var: c_0008 | Wert: 0 | Bedingung: if( v_394 = '' )

Als nächstes legt Ihr eine 998er an, in welchem Ihr die Fehlermeldung einbindet.

Also wenn Ihr den Text formatieren wollt, dann sähe das z.B. so aus:

<span style="color:red;font-size:150%"><strong>Bitte wählen Sie genau 4 Antworten. Bei Antworten die aus zwei Textfeldern bestehen füllen Sie bitte beide Felder aus</strong></span>

Näheres zu Textformatierungen mit CSS findet Ihr hier:
http://de.selfhtml.org/css/eigenschaften/schrift.htm

Diese 998er Frage verseht Ihr mit einer Ausblendbedingung, c_0009 = -77
Das stellt sicher, dass die Frage nicht beim ersten Aufruf angezeigt wird.

Dementsprechend braucht Ihr noch einen dritten Rekodierungstrigger (Nach Abschicken, vor Filtern |Immer ausführen | Mehrfach ausführen: Nein) der die Variable c_0009 mit dem Wert 1 ( oder irgendetwas anderem als -77) beschreibt

Nun gibt es nur noch einen letzten Schritt zu erledign.
Dazu legt Ihr auf der darauffolgenden Seite einen Pagetrigger (Ausführungsposition direkt | Mehrfach ausführen: Ja) an, welcher auf die Seite "Pläne_unspezifisch" springt, wenn folgende Bedingung zutrifft:

((c_0001 + c_0002 + c_0003 + c_0004 + c_0005 + c_0006 + c_0007 + c_0008) != "4")


Sooo ich hoffe ich habe nichts vergessen. Soltle es Probleme geben meldet euch.


Gruß

Jens

Claudia_S
19.03.2013, 15:06
Hallo Jens,

meine Güte, hast du viel probiert und geschrieben! Nochmals vielen lieben Dank für deinen super Einsatz und den neuen Lösungsansatz!
Ich befürchte jedoch, dass ein Minischritt oder eine Einstellung irgendwo noch fehlt - der Pagetrigger springt bei uns nicht an, bei dir dagegen funktionierte es ja.
Ich habe mal deine Anmerkungen kopiert und füge in rot dahinter, was wir genau gemacht haben:


Hallo Claudia,

habe mich nochmal eingehend damit beschäftigt. Dass es nicht geklappt hat war (abgesehen von der Ausführposition, was ja inzwischen behoben wurde) nicht euer Fehler.
Ich hatte die unterschiedliche Abarbeitung der Trigger vs. Plausi nicht beachtet. Ergebnis war, dass der Plausicheck vor dem Trigger ausgeführt wurde und dementsprechend c_0001 natürlich immer = 0 war und der Plausi meckerte.

Nachdem ich insgesamt jetzt 3 Lösungsversuche gebaut hatte, bei denen jeweils irgendein Aspekt nicht funktionierte, habe ich alles über Bord geworfen und nochmal von vorne angefangen.

Die schlechte Nachricht: Wenn Ihr die Lösung verwenden möchtet müsst Ihr das auch.

Die gute(n) Nachricht(en): a) es funktioniert, b) wenn Ihr das einmal eingerichtet habt könnt Ihr das für die weiteren zwei Anwendungen einfach über die Funktion "Trigger kopieren und auf anderer Seite einfügen" innerhalb von Sekunden replizieren.

Nun zur Umsetzung:

Ihr löscht die Rekodierungstrigger und den Plausicheck. erledigt

Dann legt Ihr 8 weitere benutzerdefinierte Variablen an (also insgesamt 9, alle Typ Ganzzahl). erledigt

Nun braucht Ihr einen Rekodierungstrigger auf der Seite "Pläne_unspezifisch" (Nach Abschicken, vor Filtern | Immer ausführen | Mehrfach ausführen: Ja). erledigt, Name: Pläne_unspezifisch_Rekodierungstrigger_1

Hierin legt Ihr folgende Rekodierungen an: erledigt, unter Spezialoptionen haben wir 8 zu rekodierende Variablen angelegt, und zwar c_001 bis c_008 mit dem Wert 1 und der jeweiligen unten aufgeführten "ungleich"-Bedingung, das Feld Code ist leer

Var: c_0001 | Wert: 1 | Bedingung: if( v_384 != '' )
Var: c_0002 | Wert: 1 | Bedingung: if( v_385 != '' )
Var: c_0003 | Wert: 1 | Bedingung: if( v_386 != '' AND v_387 != '' )
Var: c_0004 | Wert: 1 | Bedingung: if( v_388 != '' )
Var: c_0005 | Wert: 1 | Bedingung: if( v_389 != '' AND v_390 != '' )
Var: c_0006 | Wert: 1 | Bedingung: if( v_391 != '' )
Var: c_0007 | Wert: 1 | Bedingung: if( v_392 != '' AND v_393 != '' )
Var: c_0008 | Wert: 1 | Bedingung: if( v_394 != '' )

Wenn das erledigt ist kopiert Ihr den Trigger und dreht das Ganze um, sodass das Ergebnis so aussieht: erledigt, Name: Pläne_unspezifisch_Rekodierungstrigger_1_kopiert, unter Spezialoptionen haben wir wieder die 8 Variablen angelegt, Wert 0 und die entsprechende "gleich"-Bedingung, Feld Code ist leer

Var: c_0001 | Wert: 0 | Bedingung: if( v_384 = '' )
Var: c_0002 | Wert: 0 | Bedingung: if( v_385 = '' )
Var: c_0003 | Wert: 0 | Bedingung: if( v_386 = '' OR v_387 = '' )
Var: c_0004 | Wert: 0 | Bedingung: if( v_388 = '' )
Var: c_0005 | Wert: 0 | Bedingung: if( v_389 = '' OR v_390 = '' )
Var: c_0006 | Wert: 0 | Bedingung: if( v_391 = '' )
Var: c_0007 | Wert: 0 | Bedingung: if( v_392 = '' OR v_393 = '' )
Var: c_0008 | Wert: 0 | Bedingung: if( v_394 = '' )

Als nächstes legt Ihr eine 998er an, in welchem Ihr die Fehlermeldung einbindet. haben wir auf der Seite "Pläne_unspezifisch" als extra Frage angelegt

Also wenn Ihr den Text formatieren wollt, dann sähe das z.B. so aus:




Code:
<span style="color:red;font-size:150%"><strong>Bitte wählen Sie genau 4 Antworten. Bei Antworten die aus zwei Textfeldern bestehen füllen Sie bitte beide Felder aus</strong></span> Näheres zu Textformatierungen mit CSS findet Ihr hier:
http://de.selfhtml.org/css/eigenschaften/schrift.htm

Diese 998er Frage verseht Ihr mit einer Ausblendbedingung, c_0009 = -77
Das stellt sicher, dass die Frage nicht beim ersten Aufruf angezeigt wird. die Ausblendbedingung ist eingestellt und funktioniert auch

Dementsprechend braucht Ihr noch einen dritten Rekodierungstrigger (Nach Abschicken, vor Filtern |Immer ausführen | Mehrfach ausführen: Nein) der die Variable c_0009 mit dem Wert 1 ( oder irgendetwas anderem als -77) beschreibt haben wir ebenfalls auf der Seite "Pläne_unspezifisch" angelegt, Name: Pläne_unspezifisch_Rekodierungstrigger_3, unter Spezialoptionen als zu rekodierende Variable "c_0009" mit dem Wert 1, Bedingung ist leer

Nun gibt es nur noch einen letzten Schritt zu erledign.
Dazu legt Ihr auf der darauffolgenden Seite einen Pagetrigger (Ausführungsposition direkt | Mehrfach ausführen: Ja) an, welcher auf die Seite "Pläne_unspezifisch" springt, wenn folgende Bedingung zutrifft:in der darauffolgenden Seite "Hindernisrating_unspezifisch" haben wir den Pagetrigger angelegt, Name: Pläne_unspezifisch_Pagetrigger, unter Spezialoptionen ist die Seite "Pläne_unspezifisch" angegeben und bei Einstellung unter Bedingung: Variable c_0009 gleich ((c_0001 + c_0002 + c_0003 + c_0004 + c_0005 + c_0006 + c_0007 + c_0008) != "4"), ansonsten haben wir alles eingestellt wie beschrieben (mehrfach ausführen ja bzw. nein, Abschicken, vor Filtern bzw. direkt beim Pagetrigger, immer ausführen und auch in der Fragebogenvorschau wieder überall ein "ja" angekreuzt




Code:
((c_0001 + c_0002 + c_0003 + c_0004 + c_0005 + c_0006 + c_0007 + c_0008) != "4")
Sooo ich hoffe ich habe nichts vergessen. Soltle es Probleme geben meldet euch.


Gruß

Jens

JensL
19.03.2013, 15:23
Hallo Claudia,

sorry den letzten Punkt habe ich vielleicht nicht genau erklärt.

Im Moment ist die Ausführbedingung des Pagetriggers
( c_0009 = '((c_0001 + c_0002 + c_0003 + c_0004 + c_0005 + c_0006 + c_0007 + c_0008) != "4")' )

Das funktioniert nicht, weil es ja eine doppelte Gleichung ist.

Stattdessen geht bitte in Bedingung -> Bearbeiten und dort auf den Reiter Alternative Filterdefinition.

Hier löscht ihr was auch immer dort drin steht und fügt stattdessen

((c_0001 + c_0002 + c_0003 + c_0004 + c_0005 + c_0006 + c_0007 + c_0008) != "4")
dort ein.

Ich habe den Rest eurer Umsetzung noch grob überflogen, aber das sieht ansonsten eigentlich gut aus, daher probiert mal ob es hiermit funktioniert und gebt dann Bescheid.

Gruß

Jens

Claudia_S
19.03.2013, 16:20
Juchuuu, es funktioniert! :)
Danke, danke, danke! Deine Hilfe war echt klasse!

JensL
20.03.2013, 08:57
Dafür sind wir da ;)

Freut mich, dass es letzten Endes geklappt hat.


Gruß

Jens