Welcome to the LimeSurvey Community Forum

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

accès au réponses des pages (groupes de question) précédentes

  • Morrox
  • Morrox's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 10 months ago - 6 years 10 months ago #153339 by Morrox
Bonjour,

J'utilise la version de limesurvey 2.64.7 build 170404.
Paramètres du questionnaire : Les réponses de ce questionnaire ne sont PAS anonymes.
Présentation groupe par groupe.
Un index complet des questions sera montré, les participants pourront aller directement aux questions pertinentes.

Je cherche à réaliser un test comprenant différentes catégories que j'ai donc séparé en groupe de question, le test devant être réalisé en un temps limite de 45 minutes j'ai intégré un timer sur l'ensemble du questionnaire. Le candidat participant au questionnaire va répondre au plus de question possible puis en laisser de côté pour y répondre si il lui reste du temps.

Dans cette logique j'ai consacré un dernier groupe de question avec une seule question de type équation qui fait office de récapitulatif avec pour chaque groupe de question le nombre de question non répondu et je voudrais en plus afficher sous chaque groupe une liste de lien vers les question non répondu qui chargerais la page du groupe puis effectuerais un scroll jusqu'à la question.

je peux correctement afficher les questions non répondu ainsi que les liens mais uniquement si je précise {QID} par {QID}, j'ai attribué les codes de mes questions de sorte à savoir que tel question est la nieme question de tel groupe de sorte à automatiser le traitement en utilisant deux boucles puis en appelant une fonction qui prend en paramétrè le {QID} et vérifie count(qid)==0 pour ajouter ou non le lien vers cette question dans la liste.

Mais premier problème : une erreur arrive, le paramètre qid de ma fonction est considéré par count() comme une variable non défini ce qui me fait penser que les fonction EM s’exécute avant le JS ce qui fait que count s'effectu sur le nom de variable qid et non son contenu qui serait par exemple A001. D'où ma question, peut-on modifier ce comportement ?
Je n'ai toujours pas compris comment les réponses étaient enregistrés au changement de page mais d'après quelques rare post sur le sujet j'ai cru comprendre qu'un autre moyen d'accéder au question se faisait par ajax et jquery, la question serait alors comment procéder ?
Code:
for(var nbg=0; nbg<2;nbg++){ //test avec 2 groupes
    for(var nbq=0; nbq<5;nbq++){ // comportant 5 questions chacun 
      if(nbg==0){
        g="A";
      }else if(nbg==1){
        g="B";
      }
      isAnswered((g+"00"+nbq),g)
    }
  }
function isAnswered(nq,ng){
    if({count(nq)}==0){
           var objUL  = document.getElementById(ng);
             var objLI=document.createElement( 'li' );
             objLI.innerHTML = "<p>(nq,ng) : ("+nq+","+ng+")</p>"; //insertion de text pour tester
             objUL.insertBefore( objLI , objUL.firstChild );
      }
  }

second problème : je ne me suis pas encore occupé de la redirection des liens, j'avais pensé à un click sur le bouton du groupe dans l'index mais dans ce cas comment faire savoir après le chargement de la page qu'un scroll doit s'effectuer ?
Encore une fois ajax et jquery ?

Merci d'avance pour toute réponse que vous pourriez m'apporter.
Last edit: 6 years 10 months ago by Morrox.
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
6 years 10 months ago #153340 by Nickko
Peut-être en ajoutant .value après le qid.

Nickko
Head of ergonomics, UX & UI.
The topic has been locked.
  • Morrox
  • Morrox's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 10 months ago #153381 by Morrox
Malheureusement non il considère qid.value comme variable non définie.
Existe-t-il une solution pour accéder aux réponses autrement ?
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
6 years 10 months ago #153385 by Nickko
En Javascript, oui, directement via le DOM ou via Jquery qui est fourni avec LS.
Mais il faut que les questions soient sur la même page que l'interrogation.

Nickko
Head of ergonomics, UX & UI.
The topic has been locked.
  • Morrox
  • Morrox's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 10 months ago #153409 by Morrox
Hmmm le test durant 45 minutes il y a une quantité de question trop importante pour tout afficher sur une même page et le système de groupe de question m'est bien utile pour les fonctionnalités que j'ai ajouté...

Y a-t'il une solution en PHP pour accéder aux réponses des autres pages dans ce cas ?
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
6 years 10 months ago #153411 by Nickko
Non, pas que je sache. peut-être en développant un plugin.

Nickko
Head of ergonomics, UX & UI.
The topic has been locked.
More
6 years 10 months ago - 6 years 10 months ago #153456 by Potable
J'apporte une idée en JS, pour le PHP, je pense qu'il faudrait modifier le fichier application\helpers\expressions\em_core_helper.php et y créer les fonctions nécessaires.
En utilisant le gestionnaire d'expression et la fonction list ( cf wiki ) tu peux récupérer la liste des réponses non nulles d'une question, en fournissant le qcode.
La liste sera de la forme answer1, answer2, answer3 etc. J'imagine qu'il faudra donc ajouter des guillemets, pour en faire un string, puis un split en JS pour pouvoir traiter ces réponses grâce à un tableau. Sinon JS va interpréter answer1 comme un nom de variable. J'ai pas encore testé la partie guillemets et split, mais dis nous si ca marche :)
Last edit: 6 years 10 months ago by Potable.
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
6 years 10 months ago #153808 by DenisChenu
Salut,

1. Le gestionnaire d'expression passe sur le texte des questions avec QID etc ...
2. Utiliser jquery , c'est beaucoup plus facile
3. extensions.sondages.pro/questions-updati...sily-add-javascript/

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.
The topic has been locked.
  • Morrox
  • Morrox's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 10 months ago #153890 by Morrox
J'ai finalement réussi à faire ce que je voulais grâce à la mise en place d'un cookie...

Je m'explique si jamais ça peut aider quelqu'un, cette solution marche pour moi sachant que je suis en groupe par groupe avec index complet et que toutes mes questions sont de type radio sans réponse prédéfinie.

j'initialise un Array qui contient autant d'Array que j'ai de groupe de question (+ un array qui servira pour la redirection) dans une equation situé dans le premier groupe sur lequel le candidat "arrive" (en cliquant sur suivant à la page d’accueil du questionnaire) et je le stock dans un cookie.

J'ai ajouté un attribut onClick sur les boutons de navigation et ceux de l'index de sorte à stocker à chaque changement de groupe de question le numéro des questions où l'input de la réponse est une chaîne vide dans mon cookie.

Si le candidat se trouve sur le dernier groupe ( celui qui me sert de "résumé" ) alors j'affiche dans chaque div (une div par groupe) le nombre de question non répondu avec une liste de lien pour chaque questions non répondu si il y a des questions non répondu, si non je cache la div du groupe.

Lorsque le candidat clique sur le lien une fonction onClick avec comme paramètre le groupe et le numéro de question va stocker dans le dernier Array (celui qui sert pour la redirection) de mon Array le numéro de la question puis simuler un clic sur le button de l'index correspondant au groupe.

Là le candidat arrive donc sur la page du groupe et dans le document.ready je vérifie si un numéro de question est stocké dans le dernier Array de redirection et si c'est le cas j’effectue un scroll sur la question et je retire le numéro.
The topic has been locked.
Moderators: Nickko

Lime-years ahead

Online-surveys for every purse and purpose