Welcome to the LimeSurvey Community Forum

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

Faire apparaitre une sous-question directement après une question (randgroup)

More
2 years 9 months ago - 2 years 9 months ago #235589 by martinbelot
Aidez-nous à vous aider et remplissez les cases appropriées :
Votre version de LimeSurvey : Version de votre LimeSurvey : Version 3.27.9+210726.
Votre propre serveur ou LimeSurvey Cloud : Sur le serveur de mon université
Thème : fruity

==================
Bonjour à tous,

J'ai un randomized group de 100 questions dont les réponses sont à chaque fois "oui" ou "non". En fonction de chaque réponse, une sous-question demandant d'expliquer la réponse apparait. Pour cela j'ai utilisé l'outil "fixer des conditions" sur chaque sous-question afin de la faire apparaitre en fonction de la réponse appropriée.

Cependant, mes questions de base apparaissant dans un ordre aléatoire, les sous-questions n'apparaissent pas directement sous les questions auxquelles elles sont liées.

Il y a-t-il un moyen de régler cela?

Merci,
Martin
Last edit: 2 years 9 months ago by martinbelot.

Please Log in to join the conversation.

More
2 years 9 months ago #235594 by Joffm
Faites 100 groupes avec deux questions chacun, que vous randomisez.
Veuillez ne pas utiliser le concepteur de condition ; utiliser ExpressionManager

 

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

Please Log in to join the conversation.

More
2 years 9 months ago #235598 by martinbelot
Bonjour, tout d'abord merci pour la réponse.

Cela ne fonctionnera pas je pense car j'ai en fait 3 groupes de 100 questions que je randomise déjà (1 groupe est tiré au hasard parmi les 3). Dans chacun de ces groupes les questions apparaissent de façon aléatoire et c'est sous ces questions que j'aimerais faire apparaitre les sous-questions.

Please Log in to join the conversation.

More
2 years 9 months ago #235599 by Joffm
Et alors?
Ce n'est pas un obstacle.
Vous disposez alors d'un nombre aléatoire supplémentaire (1-3) pour choisir le grand groupe respectif ;

Comme
G1: Créer le nombre aléatoire {if(is_empty(randnum),rand(1,3),randnum)}
G001 - G100 : Nom de groupe aléatoire GA1, Équation du filtre conditionnel : randnum==1
G101 - G200 : Nom de groupe aléatoire GA2, Équation du filtre conditionnel : randnum==2
G201 - G300 : Nom de groupe aléatoire GA3, Équation du filtre conditionnel : randnum==3
Et dans chacun des groupes vos questions. Ceci sans aucune condition

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

Please Log in to join the conversation.

More
2 years 9 months ago - 2 years 9 months ago #235682 by DenisChenu
@Joffm : @martinbelot utilise déjà une méthode pour ne faire apparaître que 10 questions sur les 100 disponibles par groupe :).
Voir : forums.limesurvey.org/forum/french-forum...ans-un-groupe#235434

Je ne vois pas personnellement comment gérer cela … avec les conditions sans une solution juste javascript pour faire apparaître les champs texte.

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member. - Professional support - Plugins, theme and development .
I don't answer to private message.
Last edit: 2 years 9 months ago by DenisChenu.

Please Log in to join the conversation.

More
2 years 9 months ago #235689 by martinbelot
Effectivement, j'utilise ce code dans chacune des 100 questions pour en sélectionner 10:
sum(Q1001.relevanceStatus,Q1002.relevanceStatus, Q1003.relevanceStatus, Q1004.relevanceStatus, Q1005.relevanceStatus, Q1006.relevanceStatus, Q1007.relevanceStatus, Q1008.relevanceStatus, Q1009.relevanceStatus,Q1010.relevanceStatus, Q1011.relevanceStatus, Q1012.relevanceStatus, Q1013.relevanceStatus, Q1014.relevanceStatus,Q1015.relevanceStatus, Q1016.relevanceStatus, Q1017.relevanceStatus, Q1018.relevanceStatus, Q1019.relevanceStatus,Q1020.relevanceStatus, Q1021.relevanceStatus, Q1022.relevanceStatus, Q1023.relevanceStatus, Q1024.relevanceStatus,Q1025.relevanceStatus, Q1026.relevanceStatus, Q1027.relevanceStatus, Q1028.relevanceStatus, Q1029.relevanceStatus,Q1030.relevanceStatus, Q1031.relevanceStatus, Q1032.relevanceStatus, Q1033.relevanceStatus, Q1034.relevanceStatus,Q1035.relevanceStatus, Q1036.relevanceStatus, Q1037.relevanceStatus, Q1038.relevanceStatus, Q1039.relevanceStatus,Q1040.relevanceStatus, Q1041.relevanceStatus, Q1042.relevanceStatus, Q1043.relevanceStatus, Q1044.relevanceStatus, Q1045.relevanceStatus, Q1046.relevanceStatus,Q1047.relevanceStatus, Q1048.relevanceStatus, Q1049.relevanceStatus, Q1050.relevanceStatus, Q1051.relevanceStatus,Q1052.relevanceStatus, Q1053.relevanceStatus, Q1054.relevanceStatus, Q1055.relevanceStatus, Q1056.relevanceStatus,Q1057.relevanceStatus, Q1058.relevanceStatus, Q1059.relevanceStatus, Q1060.relevanceStatus, Q1061.relevanceStatus,Q1062.relevanceStatus, Q1063.relevanceStatus, Q1064.relevanceStatus, Q1065.relevanceStatus, Q1066.relevanceStatus,Q1067.relevanceStatus, Q1068.relevanceStatus, Q1069.relevanceStatus, Q1070.relevanceStatus, Q1071.relevanceStatus,Q1072.relevanceStatus, Q1073.relevanceStatus, Q1074.relevanceStatus, Q1075.relevanceStatus, Q1076.relevanceStatus,Q1077.relevanceStatus, Q1078.relevanceStatus, Q1079.relevanceStatus, Q1080.relevanceStatus, Q1081.relevanceStatus,Q1082.relevanceStatus, Q1083.relevanceStatus, Q1084.relevanceStatus, Q1085.relevanceStatus, Q1086.relevanceStatus, Q1087.relevanceStatus, Q1088.relevanceStatus, Q1089.relevanceStatus,Q1090.relevanceStatus, Q1091.relevanceStatus, Q1092.relevanceStatus, Q1093.relevanceStatus, Q1094.relevanceStatus,Q1095.relevanceStatus, Q1096.relevanceStatus, Q1097.relevanceStatus, Q1098.relevanceStatus, Q1099.relevanceStatus,Q1100.relevanceStatus) LT 10

Cela fonctionnera-t-il si je split mes questions en 100 groupes différents?

Please Log in to join the conversation.

More
2 years 9 months ago #235694 by DenisChenu
Ah,

Tu utilise la méthode du relevanceStatus, attention : elle est moins fiable que celle du groupe séparé.

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member. - Professional support - Plugins, theme and development .
I don't answer to private message.

Please Log in to join the conversation.

More
2 years 9 months ago #235695 by martinbelot

Please Log in to join the conversation.

More
2 years 9 months ago #235710 by DenisChenu
1. elle ne fonctionne que javascript activé
2. Je l'ai vu ne plus fonctionner sur un questionnaire lors d'une mise à jour.

De toutes façon : avec la demande pour la question liée : je pense qu'il faut revoir l'ensemble
Et je n'ai pas d'idée actuellement hors création d'un plugin spécifique

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member. - Professional support - Plugins, theme and development .
I don't answer to private message.

Please Log in to join the conversation.

More
2 years 9 months ago #235726 by Joffm

@Joffm : @martinbelot utilise déjà une méthode pour ne faire apparaître que 10 questions sur les 100 disponibles par groupe

Je le sais, mais: Cela n'a pas été mentionné jusqu'à présent.
Seulement dans l'autre question.
Ici, il a gardé le secret. C'est pour ça que je n'en ai pas tenu compte.

Mais toujours pas un obstacle.
Au début une question "texte court" avec ce script (Q0)
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(){
// Fülle das Array hier Zahlen von 1 - 500
      var arr = [];
      for (var i = 1; i < 101; i++) {
        var i2='000'+i;
        arr.push(i2.slice(-3));
      }
      
// Würfele durcheinander 
      arr = shuffle(arr);
// Nimm die ersten fünf und füge sie zu einem Text zusammen, mit „#“ getrennt
      arr = arr.slice(0,10).join('/');
// Schreibe die ersten fünf in die Frage
      $('#question{QID} input[type="text"]').val('/'+arr+'/');
 
// Verstecke diese Frage
//      $('#question{QID}').hide();
   });
</script>
Cela en résulte.
 
Vous avez donc 10 nombres aléatoires de 1 à 100.

Alors l'équation de pertinence du groupe est plate
G001 : Nom de groupe aléatoire GA1, Équation du filtre conditionnel : randnum==1 AND strpos(Q0,'001/')>0
G002 : Nom de groupe aléatoire GA1, Équation du filtre conditionnel : randnum==1 AND strpos(Q0,'002/')>0
...
G100 : Nom de groupe aléatoire GA1, Équation du filtre conditionnel : randnum==1 AND strpos(Q0,'100/')>0
G101 : Nom de groupe aléatoire GA2, Équation du filtre conditionnel : randnum==2 AND strpos(Q0,'001/')>0
G102 : Nom de groupe aléatoire GA2, Équation du filtre conditionnel : randnum==2 AND strpos(Q0,'002/')>0
...
G200 : Nom de groupe aléatoire GA2, Équation du filtre conditionnel : randnum==2 AND strpos(Q0,'100/')>0
G201 : Nom de groupe aléatoire GA3, Équation du filtre conditionnel : randnum==3 AND strpos(Q0,'001/')>0
G202 : Nom de groupe aléatoire GA3, Équation du filtre conditionnel : randnum==3 AND strpos(Q0,'002/')>0
...
G300 : Nom de groupe aléatoire GA3, Équation du filtre conditionnel : randnum==3 AND strpos(Q0,'100/')>0

Mais la solution utilisant ".relevanceStatus" est bien sûr également bonne.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: DenisChenu

Please Log in to join the conversation.

More
2 years 9 months ago #235731 by DenisChenu
Merci @Joffm,
Donc, si je comprend bien : ta solution utilise
- La rotation aléatoire du groupe pour présenter l'ordre des groupes de façon aléatoire
- La génération de 10 nombres aléatoires pour présenter 10 de ces questions

Comme ce sont des groupes de questions : on peut avoir 2 questions par groupe, dont l'une sous condition de l'autre !

Ouah ! Bravo !!!

@martinbelot : attention : 300 question * 2 == 600 questions. Sur mariadb, au dessus de 700 questions : il faut tester pour voir si la table peut s'activer.
www.limesurvey.org/manual/General_FAQ/en#MySQL_and_MariaDB

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member. - Professional support - Plugins, theme and development .
I don't answer to private message.

Please Log in to join the conversation.

More
2 years 9 months ago #235749 by martinbelot
Bonjour, merci pour la réponse.

J'ai essayé cette solution avec 9 groupes pour tester (G001,G002,G003,G101,G102,G103,G201,G202,G203) en essayant d'en choisir deux de chaque et je suis directement amené à la fin du questionnaire.

Peut-être ai-je mal adapté le code?
Egalement, dois-je écrire le code dans le texte de la question type texte court?

Please Log in to join the conversation.

More
2 years 9 months ago - 2 years 9 months ago #235758 by Joffm
Enfin, envoyez l'export lss de l'enquête.
Ensuite, nous pouvons voir s'il n'y a pas une solution plus simple

Et nous n'avons pas à deviner ce que vous faites.

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 2 years 9 months ago by Joffm.

Please Log in to join the conversation.

More
2 years 8 months ago #235769 by martinbelot
Voilà l'export LSS. Mon but, sur base de vos conseils, est de faire fonctionner le questionnaire avec 3 groupes de 6 questions chacun divisés en 9 sous-groupes de 2 questions chacun (G1001,G1002,G1003 + G2001,G2002,G2003 + G3001,G3002,G3003) (1 question principale et 1 sous-question dans chaque sous-groupe) avant de le faire fonctionner avec 3 groupes de 200 questions divisés (1 question et 1 sous-question) en 300 sous-groupes de deux questions chacun. A cet égard, il faut ignorer le dernier groupe qui me sert juste à stocker les futures autres questions du G1.

Mon objectif est ici que 2 questions choisies aléatoirement (sur les 3) d'un seul groupe apparaissent, suivies si besoin de la sous-question qui les accompagne. Lorsque j'aurai l'assurance d'avoir une solution fonctionnelle, alors je créerai le questionnaire en entier, avec l'objectif que 10 questions choisies aléatoirement (sur les 100) d'un seul groupe apparaissent, suivies si besoin de la sous-question qui les accompagne.

Je n'essaye pas de "cacher" quoique ce soit. Je suis simplement novice et n'ai pas la notion de ce qu'il est important de mentionner ou ce qui est superflus.

Please Log in to join the conversation.

More
2 years 8 months ago - 2 years 8 months ago #236029 by martinbelot
Bonjour, merci pour ce script @joffm, je viens d'avoir le temps de le comprendre et il me parait très fonctionnel.

Néanmoins, il ne fonctionne pas chez moi.En effet, lorsque je l'entre comme ceci: voir image 1 attachée
(J'ai également essayé de supprimer les espaces sous-lignés en rouge mais j'obtiens le même résultat)

Mais le code est changé comme ceci lorsque je sauvegarde la question: voir image 2 attachée

et j'obtiens cela lorsque je je prévisualise le questionnaire: voir image 3 attachée

L'export LSS du questionnaire est disponible en fichier attaché.Merci encore pour votre aide et excusez-moi si je ne suis pas assez clair, j'essaye de l'être le plus possible.
Last edit: 2 years 8 months ago by martinbelot.

Please Log in to join the conversation.

Moderators: Nickkoholchtpartner

Lime-years ahead

Online-surveys for every purse and purpose