Welcome to the LimeSurvey Community Forum

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

Randomisierte Auswahl von Teilfragen stellen

  • a.jambon
  • a.jambon's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
3 years 1 month ago #213383 by a.jambon
Hallo,

ich erstelle gerade eine Umfrage mit LimeSurvey (Version 3.25.16) und komme leider nicht weiter.

Es geht darum, dass ich eine Frage vom Typ "Mehrfache numerische Eingabe" erstellt habe.
In die Teilfragen wurden Bilder eingefügt, die mit einem Schieberegler bewertet werden sollen.

Ich habe 20 Bilder bzw. 20 Teilfragen. Davon sollen jedoch jedem Teilnehmenden nur eine randomisierte Auswahl von 10 Bildern erscheinen.
"Zufällige Reihenfolge" habe ich bereits auf "an" gestellt. Wie geht es jetzt weiter?

Danke schonmal für eure Hilfe!

LG Anne
 
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 1 month ago #213406 by Joffm
Hallo, Anne,
das Prinzip findest Du hier
[url] forums.limesurvey.org/forum/german-forum...zufallszahlen#209700 [/url]

Hier geht es zwar um 3 aus 8, aber das ist ja egal.
Ich sollte wirklich einmal ein allgemeines Tutorial darüber schreiben, als es immer einzeln zu wiederholen.

Okay:
Du erstellst eine Frage vom Typ "kurzer Text". Nennen wir sie einfach "QBilder"
Dahinein kommt dieses javascript (im Quellcode-Modus)
Code:
<script type="text/javascript" charset="utf-8">
 
function shuffle(array) {
  var currentIndex = array.length, temporaryValue, randomIndex;
 
  // While there remain elements to shuffle...
  while (0 !== currentIndex) {
 
    // Pick a remaining element...
    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex -= 1;
 
    // And swap it with the current element.
    temporaryValue = array[currentIndex];
    array[currentIndex] = array[randomIndex];
    array[randomIndex] = temporaryValue;
  }
 
  return array;
}
 
 
  $(document).on('ready pjax:scriptcomplete',function(){
// Fill the array
      var arr = [];
      for (var i = 1; i < 21; i++) 
      { 
         w=("00" + i).slice(-2); arr.push(w);
      }
 
      arr = shuffle(arr);
      anumbers = arr.slice(0,10).join(',');
      $('#question{QID} input[type="text"]').val("#"+anumbers);
      $('#question{QID}').hide();
   });
</script>

Damit erhältst Du so etwas als Ergebnis in dieser Frage
 

also 10 zufällige Zahlen von Deinen 20.
Nun ist der Rest simpel.
Jedes Bild bekommt als Relevanzgleichung: "Ist die Nummer in diesen Zahlen enthalten?"
Dazu gibt es die Funktion "strpos". Diese liefert die Stelle, an welcher der Suchtext im Gesamttext zu finden ist, und "0", wenn er nicht drin ist.
Findest Du alles hier im Handbuch:
[url] manual.limesurvey.org/ExpressionScript_-...mplemented_functions [/url]

Da aber die erste Stelle im Text den Index "0" hat, kann mann nicht unterscheiden: "Ist es ein gefundener Text, der an der ersten Stelle (also Index "0") beginnt, oder ist es die "0", weil nicht gefunden.
Jetzt erschließt sich Dir, warum ich die Raute an den Anfang gestellt habe. Damit fängt jeder Text mindestens an Stelle "1" an.

Also werden Deine Relevanzgleichungen irgendwie so aussehen:
Bild 1: strpos(QBilder,"01")>0
Bild 2: strpos(QBilder,"02")>0
Bild 3: strpos(QBilder,"03")>0
Bild 4: strpos(QBilder,"04")>0
...
Bild 20: strpos(QBilder,"20")>0

Viel Erfolg

Joffm

 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: a.jambon
The topic has been locked.
  • a.jambon
  • a.jambon's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
3 years 1 month ago #213410 by a.jambon
Replied by a.jambon on topic Randomisierte Auswahl von Teilfragen stellen
Hallo Joffm,

erstmal vielen Dank für deine Hilfe.

Ich habe es jetzt mal ausprobiert und das javascript einfach mal reinkopiert. Es hat leider nicht funktioniert; der Code wird mit vielen Fehlermeldungen angezeigt, undefinierte Variablen etc.
Ich muss dazusagen, dass ich wirklich absolut keine Ahnung von Javacript habe. Muss ich an dem Code noch irgendwas verändern, wenn ich ihn ins Quelltext-Feld kopiere?

Sorry für meine Ahnungslosigkeit.

Liebe Grüße
Anne
The topic has been locked.
  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 1 month ago - 3 years 1 month ago #213412 by holch
Wie heisst denn deine Text-Frage? Auch "QBilder" wie bei Joffm?

Ansonsten ist es immer gut, eine LSS-Datei anzuhängen, von dem was du gemacht hast. Dann kann man leichter sehen, wo das Problem ist.

Es hat leider nicht funktioniert; der Code wird mit vielen Fehlermeldungen angezeigt, undefinierte Variablen etc.


Da wäre es natürlich auch wichtig, die genauen Fehlermeldungen zu sehen, denn die geben im Normalfall Aufschluss darüber, wo man suchen muss.

Das ist wie wenn du zum Mechaniker gehst und sagst: "Mein Auto funktioniert nicht, es hat ein Lämpchen geblinkt". Der wird dann auch noch ein paar Fragen haben, welches Lämpchen, etc... ;-)

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

Last edit: 3 years 1 month ago by holch.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 1 month ago #213415 by Joffm
Genau, "funktioniert nicht" ist etwas dünn.

In einem solchen Fall musst Du uns eben zeigen, was Du genau gemacht hast.

Also schicke den lss Export der Umfrage.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • a.jambon
  • a.jambon's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
3 years 1 month ago - 3 years 1 month ago #213417 by a.jambon
Replied by a.jambon on topic Randomisierte Auswahl von Teilfragen stellen
Ja, die Textfrage habe ich auch "QBilder" genannt.

Wenn ich den Code in den Quellcode der Frage stelle und speichere, "verschwindet" der Code bis auf ein paar Wörter.

Diese stehen dann auch so in der Frage:

QID input[type="text"]').val("#"+anumbers); $('#questionQID').hide(); });

Bei QID steht dann "undefinierte Variable" dabei.
Ich kann euch die original lss-Datei leider nicht schicken, habe aber versucht, es nachzubauen wie ich es versucht habe (ist im Anhang).

Danke für eure Hilfe!
Last edit: 3 years 1 month ago by a.jambon.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 1 month ago - 3 years 1 month ago #213425 by Joffm

Wenn ich den Code in den Quellcode der Frage stelle und speichere, "verschwindet" der Code bis auf ein paar Wörter.

Das deutet daraufhin, dass Du keine Rechte hast, javascript einzubauen.
Uni-Version? Da haben die Studenten oftmals nur sehr, sehr eingeschränkte Rechte.
Falls nicht: Wie ist der XSS-Filter gesetzt? In "Konfiguration / Globale Einstellungen". Sollte "AUS" sein.
Denn bei mir läuft es ohne große Änderung.
Nur: Die Auswahl der Bilder muss in eine andere Gruppe. 
Denn im javascript steht

$(document).on('ready pjax:scriptcomplete',function(){

Das bedeutet, dass diese Funktion loslegt, wenn das Dokument "ready" ist, fertig geladen und auf dem Bildschirm dargestellt.
Dann ist Deine Bilderfrage auch schon auf dem Bildschirm, kann also gar nicht mehr geändert werden.
Und noch eine Randomisierung zugefügt.
 

Gut, dann müssen wir uns etwas anderes überlegen.
Mit dieser Art Frage "mehrfach numerisch" und allen Bildern in einer Frage wird es dann nichts.
Da müssen wir die Bilder in einzelne Fragen stecken und mit etwas css zusammenrücken.

Du solltest Dir dazu einmal die Properties "gseq" und "qseq" anschauen.
[url] manual.limesurvey.org/ExpressionScript_-...#Access_to_variables [/url]

Ich werde einmal denken, aber erst morgen.

Bis dann
Joffm

PS.

Ich kann euch die original lss-Datei leider nicht schicken

Du kannst natürlich, Du möchtest nicht.
Aber wir wollen auch nur genau das haben, was Du geschickt hast; einen Prototypen, der die relevanten Fragen enthält.

 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 3 years 1 month ago by Joffm.
The following user(s) said Thank You: a.jambon
The topic has been locked.
  • a.jambon
  • a.jambon's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
3 years 1 month ago #213426 by a.jambon
Replied by a.jambon on topic Randomisierte Auswahl von Teilfragen stellen
Ich habe das Ganze jetzt sowohl mit meinem privaten Account als auch dem LimeSurvey-Account von der Arbeit probiert. Du hast recht, es liegt an eingeschränkten Rechten, denn auf dem privaten Account funktioniert jetzt alles.

Das ist aber schon mal super zu wissen. Ich werde mal nachfragen, ob man mir diese Rechte erteilen kann.
Falls dir doch noch eine andere Möglichkeit einfällt, gerne.

Vielen Dank auf jeden Fall schonmal! 
The topic has been locked.
  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 1 month ago #213431 by holch
Vermutlich wird man dir diese Rechte nicht erteilen, weil es sich um eine globale Einstellung handelt, also entweder alle oder keiner (bis auf die Superadmins, die haben immer XSS off).

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 1 month ago #213452 by Joffm
Hallo, Anne

Kurze Frage:
Kannst Du Themes bearbeiten? Also: Hast Du die Rechte dafür?

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 1 month ago #213479 by Joffm
Hallo, Anne,

Problem gelöst.

Hier eine Lösung, ganz ohne javascript, nur mit dem Expression Manager.

Ich hatte sie schon einmal vorgestellt. Hier unter Punkt 2.
[url] forums.limesurvey.org/forum/german-forum...zufallszahlen#209705 [/url]

Habe es für Dich einmal angepasst.
Es werden also mithilfe einiger Gleichungen die jeweiligen (Zwischen)-Ergebnisse in die Matrix geschrieben.
Am Ende hat man wieder einen String, der mit strpos als Teilfragen-Relevanz dient

Schau es einfach an.
Bei Fragen, einfach melden. 

 

File Attachment:

File Name: limesurvey...3752.lss
File Size:57 KB


​​​​​​​Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 1 month ago - 3 years 1 month ago #213518 by Joffm
Sorry, sorry,
es hatte sich noch ein Schreibfehler eingeschlichen.

Also noch einmal:
 

File Attachment:

File Name: limesurvey... (1).lss
File Size:57 KB


Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 3 years 1 month ago by Joffm.
The following user(s) said Thank You: a.jambon
The topic has been locked.
Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose