Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Fragenvalidierung

More
7 hours 2 minutes ago #273358 by theresia.xt
Ihre LimeSurvey-Version: 6.16.1
Eigener Server oder LimeSurvey-Cloud: ?
Genutzte Designvorlage:
==================
Hallo zusammen, 

ich habe mehrere Probleme mit den Matrix-Fragen. 
Ich habe eine Matrixfrage erstellt, die 3 Zeilen und 3 Spalten hat. Die dritte Zeile soll jeweils in den Spalten die Summe aus den beiden Zellen darüber abbilden. Wenn der Nutzer diese Summenzeile nun selbstständig ausfüllt, dann soll das System validieren, ob die Zahl in der Zelle korrekt ist und der Summe aus den beiden Zahlen darüber entspricht. Also möchte ich eine bzw. drei Teilfragenvalidierungen hinzufügen, die eben genau das abbildet. Leider bleibt meine Einstellung an dieser Stelle ohne Funktion. Die Matrixfrage ist als Matrix (Text) eingestellt, da bei Matrix (Zahlen) nur Zahlen bis 10 ausgewählt werden können und das zu wenig ist. 
Meine Teilfragenvailiderung sieht so aus: F7_SQ003_SQ004=(F7_SQ001_SQ004+F7_SQ002_SQ004),F7_SQ003_SQ005=(F7_SQ001_SQ005+F7_SQ002_SQ005),F7_SQ003_SQ006=(F7_SQ001_SQ006+F7_SQ002_SQ006)

Nun geht jedoch noch weiter. Die Summe der ersten, zweiten und dritten Spalte ist relevant für Folgefragen. 
Zum Beispiel ist eine Folgefrage eine 1-Spaltige-Matrixfrage und die Werte die in diese Zellen eingetragen werden, dürfen in Summe nicht mehr sein, als die Summe der ersten, zweiten und dritten Spalte der vorherigen Frage. Auch hier hatte ich versucht dies über eine Teilfragenvalidierung zu löschen, ebenfalls ohne Erfolg. 
Zur Vereinfachung habe ich mit Maskenfragen jeweils die 3 Summen aus der ersten Frage von limesurvey berechnen lassen. Dann dachte ich, dass man eventuell die Einstellung "Eingabe -> Gleich Summenwert" nutzen kann und habe dort diese Berechnung eingefügt: {Sum1+Sum2+Sum3}. 

Ich freue mich auf eure Hilfe und Ideen, wie ich das Beschriebene korrekt in Limesurvey abbilden kann. 

Viele Grüße :) 
 

Please Log in to join the conversation.

More
6 hours 51 minutes ago #273359 by Joffm
Replied by Joffm on topic Fragenvalidierung
Hallo,
gut - oder besser - schlecht:
Die Syntax der Validierung ist falsch.
Die Validierungsgleichung ist EIN logischer Term, der WAHR oder FALSCH ist. Ein Strichpunkt ist weder ein logischer noch ein arithmetischen Operator.

Natürlich hättest Du eine Matrix(Zahlen) benutzen können. Schau die Einstellungen an!

Egal, bevor ich hier mehr auf dem Mäuseklavier des Smartphones herumspielen:
Schicke den lss Export dieses Teils 

Joffm 

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

More
6 hours 12 minutes ago #273360 by theresia.xt
Replied by theresia.xt on topic Fragenvalidierung
Hallo, 

danke für deine schnelle Rückmeldung! 
Leider bin ich ein totaler Limesurvey Neuling und habe trotz Google keine Ahnung, wie ich denn ISS Export erstellen kann. 

Vielleicht helfen Screenshots fürs erste? 

Viele Grüße :) 
 

Please Log in to join the conversation.

More
5 hours 55 minutes ago - 5 hours 53 minutes ago #273362 by Joffm
Replied by Joffm on topic Fragenvalidierung
Dies findest Du hier


und dann



Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 5 hours 53 minutes ago by Joffm.

Please Log in to join the conversation.

More
5 hours 13 minutes ago #273364 by theresia.xt
Replied by theresia.xt on topic Fragenvalidierung
Hi, 

super, danke dir, ich hänge die ISS Datei an. 

Noch eine Frage am Rade: Dieser Spam check, wie funktioniert der? Wenn ich das Ergebnis der Rechnungaufgabe eintrage, z.B. zero + twenty-one -> 21, dann bekomme ich immer eine Fehlermeldung "You failed the spam check. Please try again!". Dies passiert mir bei jeder Antwort mindestens 10 mal, bevor es irgendwann durchgeht. Kann man diesen Prozess vereinfachen? 

Viele Grüße  :)

Please Log in to join the conversation.

More
3 hours 58 minutes ago - 3 hours 55 minutes ago #273365 by Joffm
Replied by Joffm on topic Fragenvalidierung
Hallo,
warum ist denn die von Dir angedachte Validierung leer?
Du kannst doch nichts lernen, wenn man nicht auf die Fehler hinweisen und zeigen kann , wie es sein müsste.
Wenn ich jetzt etwas hineinschreibe, sagst Du einfach "Ja, gut" und machst einen ähnlichen Fehler später wieder.

Und dies unterscheidet sich auch

Die dritte Zeile soll jeweils in den Spalten die Summe aus den beiden Zellen darüber abbilden.

Es ist keine dritte Zeile vorhanden.

Aber egal; ich nehme es wie es ist.
Kommen wir zunächst zur Art der Matrix.
Bei der Matrix(Zahlen) gibt es ja drei verschiedene Darstellungsweisen:
1: Das Dropdown, in welchem man Min- und Max-Wert sowie die Schrittweite einstellen kann.
Beispiel:
 

2. Die Anzeige als Checkboxen
Hier stellt man ein, dass die Anzeige als "Ankreuzfelder" realisiert wird.
 
3. Die Anzeige als "normales" Eingabefeld.
Hier stellt man ein, dass die Anzeige als "Text Eingabefelder" realisiert wird.
Zusätzlich ist hier die "Größe Eingabefeld" etwas angepasst, damit nicht so ein riesiges Feld für eine kleine Zahl angezeigt wird.
 

In Deinem ersten post sprachst Du von

Wenn der Nutzer diese Summenzeile nun selbstständig ausfüllt, dann soll das System validieren,

Bei solchen Dingen frage ich mich immer: "Du willst doch keinen Mathematiktest machen. Warum soll der Teilnehmer zusätzlich diese Summe eintragen?"

Und jetzt kommen wir zurück zur Matrix(Texte).
Erwas ungünstigerweise gibt es nämlich nur hier die Option die Summen automatisch anzeigen zu lassen; dies kann dann zur zusätzlichen Kontrolle dienen
Zum Glück muss dann aber zusätzlich eingestellt sein, dass hier "nur Zahlen" eingegeben werden können.
 

Genug des Generellen. Dies solltest Du Dir alles einmal genauer im Handbuch im Kapitel über "Fragetypen" anschauen

Jetzt zum Eigentlichen.
Du schriebst

Meine Teilfragenvailiderung sieht so aus: F7_SQ003_SQ004=(F7_SQ001_SQ004+F7_SQ002_SQ004),F7_SQ003_SQ005=(F7_SQ001_SQ005+F7_SQ002_SQ005),F7_SQ003_SQ006=(F7_SQ001_SQ006+F7_SQ002_SQ006)

Und ich antwortete etwas über Operatoren.
Gehen wir es einmal durch.
1. Du hast irgendwelche Zuweisungen mit Kommata getrennt. Wie schon gesagt, diesen Operator gibt es nicht.
Was Du willst ist, dass
die Summe von F7_SQ001_SQ004 und F7_SQ002_SQ004 mit dem Wert in F7_SQ003_SQ004 übereinstimmt UND auch
die Summe von F7_SQ001_SQ005 und F7_SQ002_SQ005 mit dem Wert in F7_SQ003_SQ005 übereinstimmt UND auch
die Summe von F7_SQ001_SQ006 und F7_SQ002_SQ006 mit dem Wert in F7_SQ003_SQ006 übereinstimmt.

Daher müssen diese drei Teile mit dem UND-Operator verbunden sein.

2. Ich habe oben schon das Wort "Zuweisung" benutzt. Denn Du vergleichst nicht, sondern setzt den Wert von F7_SQ003_SQ004 auf die Summe der darüberleigenden Felder.
Um zu vergleichen, musst Du den Vergleichsoperator benutzen; dass sind doppelte Gleichheitszeichen ("=="). Das einfache Gleichheitszeichen weist einer Variablen einen Wert zu.

Auch dazu schau einmal ins Handbuch
[url] www.limesurvey.org/manual/ExpressionScri...tation/de#Operatoren [/url]
Da dieses Missveratändnis anscheinen häufiger passiert, wird in der Fragenübersicht diese Warnung angezeigt (rote Schrift)
   

Und Du siehst hier gleich noch eine andere Warnung, das "+"-Zeichen.
Dieses Zeichen erfüllt einen doppelten Zweck.
1. Es verkettet Texte, wie "Die Sonne" + " scheint"   -> "Die Sonne scheint"
2. Es addiert Zahlen, wie  21+34 -> 55

Nun hat die zugrundeliegende Programmiersprache ("php") nur einen generischen Variablentyp; sie muss also am Kontext entscheiden, ob es sich um eine Zahl oder einen Text handelt.
Daher müssen in LimeSurvey Texte auch immer mit Anführungszeichen umschlossen werden.
Und php macht seine Sache auch in den allermeisten Fällen gut.
Aber es gibt pathologische Fälle, dass 11 + 47 nicht 58 ergibt, sondern 1147.

Aus diesem Grunde ist es besser (daher die Warnung) statt der simplen Addition die Funktion "sum()" zu benutzen.

Conclusio: Deine Validierung, die ja gar nicht mehr vorhanden ist, müsste lauten
F7_SQ003_SQ004==sum(F7_SQ001_SQ004,F7_SQ002_SQ004)  AND F7_SQ003_SQ005==sum(F7_SQ001_SQ005,F7_SQ002_SQ005) AND F7_SQ003_SQ006==sum(F7_SQ001_SQ006,F7_SQ002_SQ006)

Hier hätte man es schon machen können, aber bei der Validierung der Verteilungsfrage sollte man es machen, nämlich die Variablen "self" und "that" benutzen.
Dann ist die Validierung von F8 nämlich schlicht und einfach: sum(that.F7.NAOK)
Persönlich würde ich nicht auf "gleich Summenwert" testen (dann kommt nämlich dieser ganze unschön aussehende Footer mit "Gesamt" und "Verbleibend"); besser auf Min-Summenwert und Max-Summenwert (dann kommt nur "Gesamt")
Das sieht zwar immer noch nicht gut aus; im Ernstfall könntest Du auch eine Matrix daraus machen, mit einer Zeile und im Header die Altersgruppen.

Hier also mein schnelles Beispiel
 

File Attachment:

File Name: limesurvey...56_J.lss
File Size:39.21 KB


Bis dann
Joffm


 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 3 hours 55 minutes ago by Joffm.

Please Log in to join the conversation.

More
3 hours 20 minutes ago #273367 by holch
Replied by holch on topic Fragenvalidierung

Hi, 

super, danke dir, ich hänge die ISS Datei an. 
Nur zur Info, es handelt sich hier um eine LSS-Datei (LSS = LimeSurvey Survey), nicht um eine ISS-Datei. Mit der Internationalen Raumstation ISS haben wir hier im Forum relativ wenig am Hut und auch nicht genug Platz um diese hier bei uns zu Hause abzustellen. :-)

Help us to help you!
  • Provide your LS version and where it is installed (own server, uni/employer, SaaS hosting, etc.).
  • Always provide a LSS file (not LSQ or LSG).
Note: I answer at this forum in my spare time, I'm not a LimeSurvey GmbH employee.

Please Log in to join the conversation.

More
3 hours 10 minutes ago #273368 by theresia.xt
Replied by theresia.xt on topic Fragenvalidierung
Hi, 

erstmal Entschuldigung, dass meine Datei bzw. Umfrage fehlerhaft war. Durch das Testen und Rumprobieren in den letzten Tagen, ist da einiges durcheinander gekommen und mir war nicht klar, dass ich für das Testen eines anderen Weges die Validierung gelöscht hatte. Ich sollte vielleicht auch dazu sagen, dass ich LimeSurvey erst seit letzter Woche Freitag intensiver nutzen muss und keine Programmierkenntnisse habe, wodurch ich das Handbuch ehrlich gesagt nicht verstehe. 

Vielen Dank für deine ausführliche Antwort! Ich habe nun versucht das Ganze umzusetzen, jedoch scheint bei der Frage 8 die Validierung über die min bzw. max Summe nicht zu funktionieren bei mir. Denn leider ist es so, dass doch nicht alle Summen aus den drei Spalten relevant sind für Frage 8, sondern nur die Summe der ersten und der letzten Spalte. Das habe ich gerade von meinen Kollegen erfahren, für die ich diese Umfrage erstelle. 

Ich hänge nochmal eine lss Datei an mit der aktuellen Umfrage, hier ist nun auch die dritte Zeile der ersten Frage (F7) wieder da. 
Den Sinn hinter diesen Zeile verstehe ich auch nicht so ganz, aber es schien so, als müsste diese Zeile dort bleiben und somit verbleibt auch ein gewisser Mathetestcharakter ;) 

Viele Grüße :) 

Please Log in to join the conversation.

More
1 hour 49 minutes ago - 1 hour 47 minutes ago #273369 by Joffm
Replied by Joffm on topic Fragenvalidierung
Hm,
ein paar Dinge sind wieder "kreativ".
In "Minimale Antwortzahl" steht: sum(F7_SQ001_SQ004,F7_SQ002_SQ004)  AND sum(F7_SQ001_SQ006,F7_SQ002_SQ006).
Wenn Du jetzt doch einmal zum Handbuch greifst, liest Du dies

Minimum answers (min_answers)DescriptionThis function can be used to ensure that a user selects at least a certain number of answers in a multiple choice question.

Heißt also, er muss mindestens so viele Werte eintragen.
Deine Frage ist aber eine Pflichtfrage; also muss er ja sowieso alle Werte eintragen.

Der richtige Platz wäre gewesen:
Unter "Eingabe" der "Minimale Summenwert" und der "Maximale Summenwert".

Und dann die Funktion an sich.
Dies ist ja ein logischer Term.
Dort steht bei Dir so etwas wie
"Die Sonne scheint UND Mein Pudel ist schwarz"
bzw.
"(Die Summe von a und b) UND (die Summe von c und d)"
Das kann nun WAHR oder FALSCH sein, aber errechnet keine Summe.

Dafür solltest Du einfach
  • entweder alle vier summieren sum(F7_SQ001_SQ004, F7_SQ002_SQ004, F7_SQ001_SQ006, F7_SQ002_SQ006)
  • oder die beiden Einzelsummen noch einmal summieren
    sum(sum(F7_SQ001_SQ004,F7_SQ002_SQ004), sum(F7_SQ001_SQ006,F7_SQ002_SQ006)


Jetzt zur Validierung von Frage F7.
Du hast dies F7_SQ003_SQ004==sum(F7_SQ001_SQ004,F7_SQ002_SQ004)  AND F7_SQ003_SQ005==sum(F7_SQ001_SQ005,F7_SQ002_SQ005) AND F7_SQ003_SQ006==sum(F7_SQ001_SQ006,F7_SQ002_SQ006) in  die "Teilfragen-Validierung" eingetragen.

Die Validierungsgleichung ist ja richtig; allerdings ist es keine Teilfragenvalidierung.
Eine solche wäre z.B. this<66
Damit würde validiert, dass in jede einzelne Zelle ein Wert kleiner als 66 eingegeben werden muss.
Teilfragenvalidierungen erforden grundsätzlich die Variable "this"; das ist der kleine Neffe von "self" und "that" (siehe Handbuch; damit kann man tolle Dinge machen, besonders eben lange Formeln deutlich verkürzen)

Dies ist eine Fragenvalidierung; das erkennst Du schon daran, dass ja mehrere Zellen in der Formel betrachtet werden.
Und füge noch einen schönen Validierungshinweis hinzu, damit dem Teilnehmer gezeigt wird, ob noch etwas und was falsch ist. Ansonsten sieht er nur beim Klick auf "Weiter", dass es nicht weitergeht, aber erhält keinen Hinweis, wo etwas klemmt.

Joffm 

P.S.

aber es schien so, als müsste diese Zeile dort bleiben

Das ist m.E. immer dann der Fall, wenn man sklavisch meint einen paper-pencil-Fragebogen in einen Online-Fragebogen verwandeln zu müssen.

P.P.S.
Diesen Spam-Check habe ich noch nie gesehen, er wurde aber von einigen Kollegen schon erwähnt.
Du weißt ja, dass bei neuen Usern der erste post zunächst von einem Moderator abgesegnet und genehmigt werden muss (spam-Schutz)
Kam dieser Check auch, nachdem ich Die zum ersten Mal geantwortet hatte?

Vielleicht kann @holch dazu mehr sagen; er hat in dieser Hinsicht etwas mehr Einblick.
Er weiß ja auch, wie groß mein Garten ist, und dass dort keine ISS landen kann.
Ja, ja, das ist unser üblicher Scherz.

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 1 hour 47 minutes ago by Joffm.

Please Log in to join the conversation.

More
1 hour 19 minutes ago #273370 by holch
Replied by holch on topic Fragenvalidierung

P.P.S.
Diesen Spam-Check habe ich noch nie gesehen, er wurde aber von einigen Kollegen schon erwähnt.
Du weißt ja, dass bei neuen Usern der erste post zunächst von einem Moderator abgesegnet und genehmigt werden muss (spam-Schutz)
Kam dieser Check auch, nachdem ich Die zum ersten Mal geantwortet hatte?

Vielleicht kann @holch dazu mehr sagen; er hat in dieser Hinsicht etwas mehr Einblick.
Er weiß ja auch, wie groß mein Garten ist, und dass dort keine ISS landen kann.
Ja, ja, das ist unser üblicher Scherz.
 
Den Spam-Check habe ich als Moderator auch noch nicht zu sehen bekommen. Daher kann ich dazu auch nicht allzu viel sagen. 
Da würde ich mal eine Beschwerde an den Limesurvey-Support schicken.

Ich kann das leider nicht nachvollziehen, weil ich als Moderator eben diesen Spam-Check nicht vorgesetzt bekomme. 

Deine Rechnung scheint ja zu stimmen.

Help us to help you!
  • Provide your LS version and where it is installed (own server, uni/employer, SaaS hosting, etc.).
  • Always provide a LSS file (not LSQ or LSG).
Note: I answer at this forum in my spare time, I'm not a LimeSurvey GmbH employee.

Please Log in to join the conversation.

Moderators: holchJoffmtpartner

Lime-years ahead

Online-surveys for every purse and purpose