Welcome to the LimeSurvey Community Forum

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

Sauvegarde des réponses des lignes ajoutées dans un tableau texte dynamique

More
3 weeks 2 days ago #273411 by enquetes-iut
Aidez-nous à vous aider et remplissez les cases appropriées :
Votre version de LimeSurvey : LimeSurvey Community Edition Version 6.15.10+250901 .
Votre propre serveur ou LimeSurvey Cloud : propre serveur
Thème :

==================
J’ai créé une question de type tableau texte 5×5, dans laquelle j’ai personnalisé les champs des colonnes selon mes besoins.
Au niveau de l’affichage et de la saisie, tout fonctionne correctement.
En revanche, une fois les réponses envoyées, lorsque j’imprime les réponses dans un fichier PDF ou que j’exporte les réponses au format Excel, les réponses des lignes ajoutées via les boutons d’ajout de ligne de chaque sous-question de l’échelle Y ne s’affichent pas.Je ne sais pas d’où vient le problème. J’ai essayé plusieurs solutions, mais aucune n’a fonctionné.J’ai joint la question en pièce jointe, notamment un visuel de la question.Merci d'avance pour vos réponses

Please Log in to join the conversation.

More
3 weeks 2 days ago - 3 weeks 2 days ago #273414 by Joffm
Bonjour,

Veuillez n'utiliser que les exports lss, et non lsq ou lsg.
J'ai été indulgent cette fois-ci.

Vous n'avez pas de champ correspondant dans la base de données.
Il n'y a qu'une seule sous-question : EC : PU.
Où les autres champs devraient-ils être stockés ?

Voici ma suggestion :


Cinq questions distinctes, liées visuellement par les propriétés CSS « no-question » et « no-bottom ».
Code:
.no-question {
    border-top:0;
    margin-top: -5px;
}
.no-question .question-title-container,
.no-question .question-valid-container {
    display:none;
}
.no-bottom {
    border-bottom:0;
    margin-bottom:0;
}
.no-question .answer-container {
    padding-top: 0em;
    padding-bottom: 0.5em;
}    
.no-question .question-container {
    border: none !important;
    margin-top: -10px !important;
}    
.no-question2 .ls-heading {
    display:none;
}
.no-bottom .answer-container {
    padding-bottom: 0em;
}


Chaque question devrait contenir les scripts habituels :
1. pour l'ajout dynamique de données
Code:
https://www.limesurvey.org/manual/Workarounds:_Manipulating_a_survey_at_runtime_using_Javascript#varLengthArray_script_(LimeSurvey_6_and_up)


2. pour les menus déroulants
Code:
<script type="text/javascript" charset="utf-8">
  $(document).on('ready pjax:scriptcomplete',function(){
    var thisQuestion = $('#question{QID}');
 
    // Insert selects
    $('.answer-item.answer_cell_X001', thisQuestion).addClass('with-select').append('<select class="inserted-select form-control list-question-select">\
              <option value="">...</option>\
<option value="1">CJ</option>\
<option value="2">GCGP</option>\
<option value="3">GEII</option>\
<option value="4">GMP</option>\
<option value="5">QLIO</option>\
<option value="6">TC</option>\
<option value="7">CS</option>\
<option value="8">GACO</option>\
<option value="9">GEA</option>\
<option value="10">MLT</option>\
<option value="11">INFO</option>\
<option value="12">MP</option>\
<option value="13">RT</option>\
<option value="14">INFOCOM</option>\
<option value="15">MMI</option>\
<option value="16">GCCD</option>\
<option value="17">MT2E</option>\
<option value="18">HSE</option>\
<option value="19">Chimie</option>\
<option value="20">GB</option>\
<option value="21">PEC</option>\
<option value="22">SD</option>\
<option value="23">GIM</option>\
<option value="24">SGM</option>\
    </select>');
    $('.answer-item.answer_cell_X002', thisQuestion).addClass('with-select').append('<select class="inserted-select form-control list-question-select">\
              <option value="">...</option>\
<option value="1">Section 1</option>\
<option value="2">Section 2</option>\
<option value="3">Section 3</option>\
<option value="4">Section 4</option>\
<option value="5">Section 5</option>\
<option value="6">Section 6</option>\
<option value="7">Section 7</option>\
<option value="8">Section 8</option>\
<option value="9">Section 9</option>\
<option value="10">Section 10</option>\
<option value="11">Section 11</option>\
<option value="12">Section 12</option>\
<option value="13">Section 13</option>\
<option value="14">Section 14</option>\
<option value="15">Section 15</option>\
<option value="16">Section 16</option>\
<option value="17">Section 17</option>\
<option value="18">Section 18</option>\
<option value="19">Section 19</option>\
<option value="20">Section 20</option>\
<option value="21">Section 21</option>\
<option value="22">Section 22</option>\
<option value="23">Section 23</option>\
<option value="24">Section 24</option>\
<option value="25">Section 25</option>\
<option value="26">Section 26</option>\
<option value="27">Section 27</option>\
<option value="28">Section 28</option>\
<option value="29">Section 29</option>\
<option value="30">Section 30</option>\
<option value="31">Section 31</option>\
<option value="32">Section 32</option>\
<option value="33">Section 33</option>\
<option value="34">Section 34</option>\
<option value="35">Section 35</option>\
<option value="36">Section 36</option>\
<option value="37">Section 37</option>\
<option value="60">Section 60</option>\
<option value="61">Section 61</option>\
<option value="62">Section 62</option>\
<option value="63">Section 63</option>\
<option value="64">Section 64</option>\
<option value="65">Section 65</option>\
<option value="66">Section 66</option>\
<option value="67">Section 67</option>\
<option value="68">Section 68</option>\
<option value="69">Section 69</option>\
<option value="70">Section 70</option>\
<option value="71">Section 71</option>\
<option value="72">Section 72</option>\
<option value="73">Section 73</option>\
<option value="74">Section 74</option>\
<option value="75">Section 75</option>\
<option value="76">Section 76</option>\
<option value="77">Section 77</option>\
<option value="85">Section 85</option>\
<option value="86">Section 86</option>\
<option value="87">Section 87</option>\
    </select>');  
 
   // Listeners
    $('.inserted-select', thisQuestion).on('change', function(i) {
      if($(this).val() != '') {
        $(this).closest('.answer-item').find('input:text').val($('option:selected', this).val()).trigger('change');
      }
      else {
        $(this).closest('.answer-item').find('input:text').val('').trigger('change');
      }
    });
     // Returning to page
    $('.with-select input:text', thisQuestion).each(function(i) {
      var thisCell = $(this).closest('.answer-item');
      var inputText = $.trim($(this).val());
      $('select.inserted-select', thisCell).val(inputText);
    });
 
   // Clean-up styles
    $('select.inserted-select', thisQuestion).css({
      'max-width': '100%'
    });
    $('.with-select input:text', thisQuestion).css({
      'position': 'absolute',
      'left': '-9999em'
    });
  });
</script>

3. pour « Autre » dans la dernière matrice
(Cinq questions de type « texte court » en arrière-plan du tableau)
Code:
<script type="text/javascript" charset="utf-8">    
    $(document).ready(function() {
 
        // Identify the questions
        var thisQuestion = $('#question'+{QID}+'');
        var nextQuestion1 = $(thisQuestion).nextAll('.text-short:eq(0)');
        var nextQuestion2 = $(thisQuestion).nextAll('.text-short:eq(1)');
        var nextQuestion3 = $(thisQuestion).nextAll('.text-short:eq(2)');
        var nextQuestion4 = $(thisQuestion).nextAll('.text-short:eq(3)');
        var nextQuestion5 = $(thisQuestion).nextAll('.text-short:eq(4)');
        var nextQuestions = $(nextQuestion1).add(nextQuestion2).add(nextQuestion3).add(nextQuestion4).add(nextQuestion5);
        var nextLength = nextQuestions.length;
        var sqLength = ('tr.answers-list', thisQuestion).length;
 
        // Hide the short-text questions
        $(nextQuestions).hide();
 
        // Move the hidden text inputs into the array
        for (i = 0; i < nextLength; i++) {
            var workingIndex = (sqLength - 1) - (nextLength - i);
            var nextQ = nextQuestions[i];
            $('th.answertext:eq('+workingIndex+')', thisQuestion).append($('input[type="text"]', nextQ)).closest('tr').addClass('otherRow');
        }    
 
        // Some styling...
        $('input[type="text"]', thisQuestion).css({
            'width': '100%'
        });        
    });
</script>[/i]

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 3 weeks 2 days ago by Joffm.

Please Log in to join the conversation.

More
3 weeks 2 days ago #273415 by enquetes-iut
Je vous remercie pour votre réponse et je trouve la solution intéressante. Néanmoins, j’ai une question concernant la phrase :
« Chaque question devrait contenir les scripts habituels », car je ne comprends pas très bien les étapes à suivre. Serait-il possible de me détailler ces étapes ?

Si j’ai bien compris, je dois créer cinq questions : une question pour chaque statut, dont quatre questions de type tableau et la cinquième en texte libre. Est-ce bien cela, ou ai-je mal compris ?

Please Log in to join the conversation.

More
3 weeks 2 days ago #273416 by Joffm
Cela signifie que ces scripts ont été présentés à maintes reprises sur le forum ou qu'ils figurent dans la section « Workarounds » du manuel.

Ils constituent pratiquement la solution standard dans ce genre de cas.

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

Please Log in to join the conversation.

More
1 day 9 hours ago #273482 by DenisChenu

Cela signifie que ces scripts ont été présentés à maintes reprises sur le forum ou qu'ils figurent dans la section « Workarounds » du manuel.

Ils constituent pratiquement la solution standard dans ce genre de cas.
 
Perso : ils devraient passer en thème ou plugin core ;)

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.

Moderators: Nickkoholchtpartner

Lime-years ahead

Online-surveys for every purse and purpose