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)

  • martinbelot
  • martinbelot's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 4 months ago - 1 year 4 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: 1 year 4 months ago by martinbelot.

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Online
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 4 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.

  • martinbelot
  • martinbelot's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 4 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.

  • Joffm
  • Joffm's Avatar
  • Online
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 4 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.

  • DenisChenu
  • DenisChenu's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 4 months ago - 1 year 4 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 service on demand , plugin development .
I don't answer to private message.
Last edit: 1 year 4 months ago by DenisChenu.

Please Log in to join the conversation.

  • martinbelot
  • martinbelot's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 4 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.

  • DenisChenu
  • DenisChenu's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 4 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 service on demand , plugin development .
I don't answer to private message.

Please Log in to join the conversation.

  • martinbelot
  • martinbelot's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 4 months ago #235695 by martinbelot
Pourquoi est-elle moins fiable?

Please Log in to join the conversation.

  • DenisChenu
  • DenisChenu's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 4 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 service on demand , plugin development .
I don't answer to private message.

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Online
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 4 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.

  • DenisChenu
  • DenisChenu's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 4 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.
manual.limesurvey.org/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 service on demand , plugin development .
I don't answer to private message.

Please Log in to join the conversation.

  • martinbelot
  • martinbelot's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 4 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.

Moderators: Nickko

Lime-years ahead

Online-surveys for every purse and purpose