x

Principaux chapitres

  1. LimeSurvey Cloud ou LimeSurvey CE
  2. LimeSurvey Cloud - Guide de démarrage rapide
  3. LimeSurvey CE - Installation
  4. Comment concevoir une bonne enquête (Guide)
  5. Commencer
  6. Configuration de LimeSurvey
  7. Introduction - Enquêtes
  8. Afficher les paramètres de l'enquête
  9. Afficher le menu de l'enquête
  10. Afficher la structure de l'enquête
  11. Présentation - Questions
  12. Introduction - Groupes de questions
  13. Introduction - Enquêtes - Gestion
  14. Options de la barre d'outils de l'enquête
  15. Enquête multilingue
  16. Guide de démarrage rapide - ExpressionScript
  17. Fonctionnalités avancées
  18. FAQ générale
  19. Dépannage
  20. Solutions de contournement
  21. Licence
  22. Journal des changements de version
  23. Plugins - Avancé
 Actions

ExpressionScript How-tos/fr: Difference between revisions

From LimeSurvey Manual

Maren.fritz (talk | contribs)
Created page with "Guide pratique pour ExpressionScript"
 
Maren.fritz (talk | contribs)
Created page with "Lorsque vous modifiez réellement la question, la question ressemble à ceci :"
 
(75 intermediate revisions by the same user not shown)
Line 3: Line 3:




=Overview of what has been previously explained=
=Aperçu de ce qui a été expliqué précédemment=




If you have followed so far the structure of the LimeSurvey manual, it means that you already the [[ExpressionScript - Presentation#Key_Definitions|LimeSurvey terminology]]. Next, we covered expressions and variables in order to learn how to enhance our surveys. In the next part, we moved to the types and meanings of [[ExpressionScript - Presentation#Syntax Highlighting|syntax highlighting]] to learn how to correct syntax errors.  
Si vous avez suivi jusqu'à présent la structure du manuel LimeSurvey, cela signifie que vous maîtrisez déjà la [[ExpressionScript - Présentation#Key_Definitions|Terminologie LimeSurvey]]. Ensuite, nous avons abordé les expressions et les variables afin d'apprendre comment améliorer nos enquêtes. Dans la partie suivante, nous sommes passés aux types et significations de [[ExpressionScript - Présentation#Syntax Highlighting|syntax highlighting]] pour apprendre à corriger les erreurs de syntaxe.  


With these basic notions covered, we could move towards examples and explaining how expressions work within LimeSurvey.  
Une fois ces notions de base couvertes, nous pourrions passer à des exemples et expliquer le fonctionnement des expressions dans LimeSurvey.  




=Syntax Highlighting=
=Surlignage de la syntaxe=




The following screenshots give examples, but do not show the values of the tooltips. A tooltip is an informative box which is displayed whenever you hover the mouse over any bold colored words.
Les captures d'écran suivantes donnent des exemples, mais n'affichent pas les valeurs des info-bulles. Une info-bulle est une boîte informative qui s’affiche chaque fois que vous passez la souris sur des mots en gras.


Because of this syntax highlighting, it is very easy to compose correct expressions, even the ones that are complicated. Although the LimeSurvey team plans to try to build an Expression Builder GUI, you can use the existing syntax-highlighting to quickly identify and fix typos. You can also use the tooltips to validate the accuracy of your expressions (e.g., confirm you have selected the desired variable(s)).
Grâce à cette coloration syntaxique, il est très facile de composer des expressions correctes, même celles qui sont compliquées. Bien que l'équipe LimeSurvey envisage d'essayer de créer une interface graphique pour Expression Builder, vous pouvez utiliser la coloration syntaxique existante pour identifier et corriger rapidement les fautes de frappe. Vous pouvez également utiliser les info-bulles pour valider l'exactitude de vos expressions (par exemple, confirmer que vous avez sélectionné la ou les variables souhaitées).


In each of the examples, there are three columns:
Dans chacun des exemples, il y a trois colonnes :
#Source - this is the raw text that you would enter into the LimeSurvey question field
#Source - c'est le texte brut que vous entreriez dans le champ de question de LimeSurvey
#Pretty Print - this is the syntax-highlighted equivalent of what you entered
#Pretty Print - c'est l'équivalent en surbrillance syntaxique de ce que vous avez entré
#*Note that Expressions are shown with a tan background, but not surrounded by curly braces in this highlighting.
#*Notez que les expressions sont affichées sur un fond beige, mais ne sont pas entourées d'accolades dans cette mise en évidence.
#*Since EM supports recursive substitution, showing curly braces in the highlighting would cause syntax errors
#*Étant donné qu'EM prend en charge la substitution récursive, l'affichage d'accolades dans la mise en évidence entraînerait des erreurs de syntaxe
#Result - this is the output generated when EM processes the source
#Résultat - c'est la sortie générée lorsque EM traite la source  
#*Everything that can be properly substituted is
#*Tout ce qui peut être correctement substitué est
#*Expressions with errors are shown in-line, with syntax highlighting. Errors are surrounded by a red-lined box.
#*Les expressions contenant des erreurs sont affichées en ligne, avec une coloration syntaxique. Les erreurs sont entourées d’un cadre bordé de rouge.




==Proper Syntax==
==Syntaxe appropriée==




You may find below examples of proper syntax:
Vous trouverez ci-dessous des exemples de syntaxe appropriée : 
#Values: shows that known variables are color coded according to whether are set on the current page. Old-style INSERTANS:xxxx gets its own color-coding style
#Values : indique que les variables connues sont codées par couleur selon qu'elles sont définies sur la page en cours. INSERTANS:xxxx à l'ancienne obtient son propre style de codage couleur
#Question Attributes: shows that dot notation can access some properties of questions
#Attributs de la question : indique que la notation par points peut accéder à certaines propriétés des questions 
#Math: shows that basic and complex calculations are supported
#Math : indique que les calculs de base et complexes sont pris en charge 
#TextProcessing: shows some of the available text-processing functions
#TextProcessing : affiche certaines des fonctions de traitement de texte disponibles
#Dates: shows two of the available date-related functions
#Dates : affiche deux des fonctions disponibles liées aux dates
#Conditional: shows the usage of the if() function. The choices can be nested.
#Conditional : affiche l'utilisation de la fonction if(). Les choix peuvent être imbriqués.
#Tailored paragraph: you can completely customize a report based upon prior values
#Paragraphe personnalisé : vous pouvez entièrement personnaliser un rapport en fonction des valeurs précédentes
#EM processes within strings: shows that it can do substitutions within strings. This example generates a tailored image name.
#EM processus dans les chaînes : montre qu'il peut effectuer des substitutions dans les chaînes. Cet exemple génère un nom d'image personnalisé.
#EM doesn't process curly braces like these: shows that if the curly braces are escaped, or there is a white space between the expression and the curly braces, ES ignores the expression.
#EM ne traite pas les accolades comme celles-ci : montre que si les accolades sont échappées ou s'il y a un espace blanc entre l'expression et les accolades, ES ignore l'expression.




Line 46: Line 46:




==EM Syntax Containing Errors==
==Syntaxe EM contenant des erreurs==




Here are examples of common errors when typing ES expressions. Note that the tooltips provide additional information.
Voici des exemples d’erreurs courantes lors de la saisie d’expressions ES. Notez que les info-bulles fournissent des informations supplémentaires.
#Inline Javascript that forgot to add spaces after curly brace
#Javascript en ligne qui a oublié d'ajouter des espaces après l'accolade
#*Since "document.write" appears right after a curly brace, EM thinks it is an expression, and red-boxes "document" and "write" since they are undefined variable and functions, respectively
#*Puisque "document.write" apparaît juste après une accolade, EM pense que c'est une expression, et rouge- cases "document" et "write" puisqu'il s'agit respectivement de variables et de fonctions non définies
#Unknown/Misspelled variables, functions and operators
#Variables, fonctions et opérateurs inconnus/mal orthographiés
#*Here we forgot that we are using the variable name "gender" instead of "sex", but EM catches that error. It also red-boxes '++', since that is not a supported operator.
#*Ici, nous avons oublié que nous utilisons le nom de variable "sexe" au lieu de " sex", mais EM détecte cette erreur. Il met également en rouge '++', car ce n'est pas un opérateur pris en charge.
#Warns if use = instead of eq, or perform value assignments
#Avertit si vous utilisez = au lieu de eq, ou effectuez des affectations de valeurs
#*Note that the '=' and '+=' are in red text instead of black. If you hover the mouse over them, you will see warnings that you are assigning a value.
#*Notez que '=' et '+=' sont en texte rouge au lieu de noir. Si vous passez la souris dessus, vous verrez des avertissements indiquant que vous attribuez une valeur.
#Wrong number of arguments for functions
#Mauvais nombre d'arguments pour les fonctions
#*if() takes 3 arguments, but it has been given 4, so hovering over the red-boxed "if" will explain the error and show the supported syntax
#*if() prend 3 arguments, mais on lui en a donné 4, donc en survolant sur le "if" encadré en rouge expliquera l'erreur et affichera la syntaxe prise en charge
#*sum() takes an unlimited number of arguments, but we had a trailing comma before the closing parentheses, so that is red-boxed
#*sum() prend un nombre illimité d'arguments, mais nous avions une virgule de fin avant les parenthèses fermantes, donc c'est encadré en rouge
#Mismatched parentheses
#Parenthèses incompatibles
#*This is one of the most common errors when writing expressions.
#*C'est l'une des erreurs les plus courantes lors de l'écriture d'expressions.
#*This shows two examples of missing closing parentheses, and one example of having one too many closing parentheses.
#*Cela montre deux exemples de parenthèses fermantes manquantes et un exemple d'avoir une parenthèse fermante de trop.
#Unsuported syntax
#Syntaxe non prise en charge
#*If you use an operator or punctuation that ES does not support, it will red-box it.
#*Si vous utilisez un opérateur ou une ponctuation que ES ne prend pas en charge, il le mettra en boîte rouge.
#Invalid assignments
#Affectations invalides
#*Some variables are readWrite and can have their values changed. Others are read-only.
#*Certaines variables sont en lectureécriture et leurs valeurs peuvent être modifiées. D'autres sont en lecture seule.
#*If you try to change the value of a read-only variable, you can't. EM will red-box the attempt.
#*Si vous essayez de modifier la valeur d'une variable en lecture seule, vous ne pouvez pas. EM encadrera la tentative en rouge.
#*If you try to assign a value to an equation or a string, you will also get an error
#*Si vous essayez d'attribuer une valeur à une équation ou une chaîne, vous obtiendrez également une erreur




Line 73: Line 73:




=="Live" examples of Syntax Highlighting with active tooltips==
=="Live" exemples de mise en évidence de la syntaxe avec des info-bulles actives ==




<table border="1">
<table border="1">
<tr><th>Source</th><th>Pretty Print</th><th>Result</th></tr><tr><td><b>Here is an example of OK syntax with tooltips</b><br>Hello {if(gender=='M','Mr.','Mrs.')} {surname}, it is now {date('g:i a',time())}. Do you know where your {sum(numPets,numKids)} children and pets are?
<tr><th> Source</th><th> Jolie impression</th><th> Résultat</th></tr><tr><td> <b>Voici un exemple de syntaxe OK avec des info-bulles</b><br> Bonjour {if(gender=='M','Mr.','Mrs.')} {nom}, il est maintenant {date('g:i a',time())}. Savez-vous où se trouvent vos {sum(numPets,numKids)} enfants et animaux de compagnie ?


</td><td><b>Here is an example of OK syntax with tooltips</b><br>Hello <span style="background-color: #eee8aa;"><span title="Excel-style if(test,result_if_true,result_if_false); if(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">if</span>(<span title="[java61764X1X5][G:2][Q:110]: What is your gender (male/female)?; value=M" style="color: green; font-weight: bold">gender</span> == <span title="" style="color: gray">'M'</span>,<span title="" style="color: gray">'Mr.'</span>,<span title="" style="color: gray">'Mrs.'</span>)</span> <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:20]: What is your last/surname?; value=Smith" style="color: green; font-weight: bold">surname</span></span>, it is now <span style="background-color: #eee8aa;"><span title="Format a local date/time; string date(format [, timestamp=time()])" style="color: blue; font-weight: bold">date</span>(<span title="" style="color: gray">'g:i a'</span>,<span title="Return current UNIX timestamp; number time()" style="color: blue; font-weight: bold">time</span>())</span>. Do you know where your <span style="background-color: #eee8aa;"><span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(<span title="[java61764X1X4][G:2][Q:50]: How many pets do you have?; value=1" style="color: maroon; font-weight: bold">numPets</span>,<span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>)</span> children and pets are?
</td><td><b>Voici un exemple de syntaxe OK avec des info-bulles</b><br> Bonjour <span style="background-color: #eee8aa;"><span title="Style Excel if(test,result_if_true,result_if_false); si(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">, si</span> ( <span title="[java61764X1X5][G:2][Q:110] : Quel est votre sexe (homme/femme) ? ; valeur=M" style="color: green; font-weight: bold">genre</span> == <span title="" style="color: gray">'M'</span> , <span title="" style="color: gray">'Mr.'</span> , <span title="" style="color: gray">'Mrs.'</span> )</span> <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:20] : Quel est votre nom/nom ? ; valeur = Smith" style="color: green; font-weight: bold">nom de famille</span></span> , il s'agit maintenant <span style="background-color: #eee8aa;">de <span title="Formater une date/heure locale ; chaîne date(format [, timestamp=time()])" style="color: blue; font-weight: bold">la date</span> ( <span title="" style="color: gray">'g:i a'</span> , <span title="Renvoie l'horodatage UNIX actuel ; nombre temps()" style="color: blue; font-weight: bold">time</span> ())</span> . Savez-vous où se trouvent vos enfants et animaux de compagnie <span style="background-color: #eee8aa;"><span title="Calculer la somme des valeurs dans un tableau ; somme numérique (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">total</span> ( <span title="[java61764X1X4][G:2][Q:50] : Combien d'animaux avez-vous ? ; valeur=1" style="color: maroon; font-weight: bold">numPets</span> , <span title="[java61764X1X3][G:2][Q:40] : Combien d'enfants avez-vous ? ; valeur=2" style="color: green; font-weight: bold">numKids</span> )</span> ?


</td><td><b>Here is an example of OK syntax with tooltips</b><br>Hello <span id="LEMtailor_Q_40_1">Mr.</span> <span id="LEMtailor_Q_40_2">Smith</span>, it is now 6:07 am. Do you know where your <span id="LEMtailor_Q_40_4">3</span> children and pets are?
</td><td><b>Voici un exemple de syntaxe OK avec des info-bulles</b><br> Bonjour <span id="LEMtailor_Q_40_1">M.</span> <span id="LEMtailor_Q_40_2">Smith</span> , il est maintenant 6h07. Savez-vous où sont vos <span id="LEMtailor_Q_40_4">3</span> enfants et animaux de compagnie ?
</td></tr>
</td></tr>  
<tr><td><b>Here are common errors so you can see the tooltips</b><br>Variables used before they are declared: {notSetYet}<br>Unknown Function: {iff(numPets&gt;numKids,1,2)}<br>Unknown Variable: {sum(age,num_pets,numKids)}<br>Wrong # parameters: {sprintf()},{if(1,2)},{date()}<br>Assign read-only-vars:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}<br>Unbalanced parentheses: {pow(3,4},{(pow(3,4)},{pow(3,4))}
<tr><td> <b>Voici les erreurs courantes afin que vous puissiez voir les info-bulles</b><br> Variables utilisées avant d'être déclarées : {notSetYet}<br> Fonction inconnue : {iff(numPets>numKids,1,2)}<br> Variable inconnue : {sum(age,num_pets,numKids)}<br> Mauvais # paramètres : {sprintf()},{if(1,2)},{date()}<br> Attribuer des variables en lecture seule :{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}<br> Parenthèses déséquilibrées : {pow(3,4},{(pow(3,4)},{pow(3,4))}


</td><td><b>Here are common errors so you can see the tooltips</b><br>Variables used before they are declared: <span style="background-color: #eee8aa;"><span title="This variable is not declared until a later page; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="This variable is not declared until a later page; Not a valid expression; [java61764X3X6][G:3][Q:200]: Who will win the next election?; value=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span><br>Unknown Function: <span style="background-color: #eee8aa;"><span title="Undefined function" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined function" style="color: blue; font-weight: bold">iff</span></span>(<span title="[java61764X1X4][G:2][Q:50]: How many pets do you have?; value=1" style="color: maroon; font-weight: bold">numPets</span> &gt; <span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>,1,2)</span><br>Unknown Variable: <span style="background-color: #eee8aa;"><span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Undefined variable" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined variable" style="color: red; font-weight: bold">num_pets</span></span>,<span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>)</span><br>Wrong # parameters: <span style="background-color: #eee8aa;"><span title="Function must have at least 1 argument(s); Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function must have at least 1 argument(s); Not a valid expression; Return a formatted string; string sprintf(format, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span>()</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression; Excel-style if(test,result_if_true,result_if_false); if(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">if</span></span>(1,2)</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression; Format a local date/time; string date(format [, timestamp=time()])" style="color: blue; font-weight: bold">date</span></span>()</span><br>Assign read-only-vars:<span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; ; value=worker" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">+=</span>10</span>,<span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; [java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">=</span><span title="" style="color: gray">'Sally'</span></span><br>Unbalanced parentheses: <span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Parentheses not balanced; Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span></span>(3,4</span>,<span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;">(</span><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)</span>,<span style="background-color: #eee8aa;"><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)<span title="Extra right parentheses detected" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>
</td><td><b>Voici les erreurs courantes afin que vous puissiez voir les info-bulles</b><br> Variables utilisées avant d'être déclarées : <span style="background-color: #eee8aa;"><span title="Cette variable n'est déclarée que sur une page ultérieure ; Ce n'est pas une expression valide" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Cette variable n'est déclarée que sur une page ultérieure ; Ce n'est pas une expression valide ; [java61764X3X6][G:3][Q:200] : Qui remportera les prochaines élections ? ; valeur =?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span><br> Fonction inconnue : <span style="background-color: #eee8aa;"><span title="Fonction non définie" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Fonction non définie" style="color: blue; font-weight: bold">iff</span></span> ( <span title="[java61764X1X4][G:2][Q:50] : Combien d'animaux avez-vous ? ; valeur=1" style="color: maroon; font-weight: bold">numPets</span> > <span title="[java61764X1X3][G:2][Q:40] : Combien d'enfants avez-vous ? ; valeur=2" style="color: green; font-weight: bold">numKids</span> ,1,2)</span><br> Variable inconnue : <span style="background-color: #eee8aa;"><span title="Calculer la somme des valeurs dans un tableau ; somme numérique (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">somme</span> ( <span title="[java61764X1X2][G:2][Q:30] : Quel âge avez-vous ? ; valeur=45" style="color: green; font-weight: bold">age</span> , <span title="variable indéfinie" style="border-style: solid; border-width: 2px; border-color: red;"><span title="variable indéfinie" style="color: red; font-weight: bold">num_pets</span></span> , <span title="[java61764X1X3][G:2][Q:40] : Combien d'enfants avez-vous ? ; valeur=2" style="color: green; font-weight: bold">numKids</span> )</span><br> Mauvais # paramètres : <span style="background-color: #eee8aa;"><span title="La fonction doit avoir au moins 1 argument(s) ; Ce n'est pas une expression valide" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La fonction doit avoir au moins 1 argument(s) ; Ce n'est pas une expression valide ; Renvoie une chaîne formatée ; chaîne sprintf(format, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span> ()</span> , <span style="background-color: #eee8aa;"><span title="La fonction ne prend pas en charge ce nombre d'arguments : 2. La fonction prend en charge ce nombre d'arguments, -1=illimité : ; Ce n'est pas une expression valide" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La fonction ne prend pas en charge ce nombre d'arguments : 2. La fonction prend en charge ce nombre d'arguments, -1=illimité : ; Ce n'est pas une expression valide ; Style Excel if(test,result_if_true,result_if_false); si(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">if</span></span> (1,2)</span> , <span style="background-color: #eee8aa;"><span title="La fonction ne prend pas en charge ce nombre d'arguments : 0. La fonction prend en charge ce nombre d'arguments, -1=illimité : 1,2 ; Ce n'est pas une expression valide" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La fonction ne prend pas en charge ce nombre d'arguments : 0. La fonction prend en charge ce nombre d'arguments, -1=illimité : 1,2 ; Ce n'est pas une expression valide ; Formater une date/heure locale ; chaîne date(format [, timestamp=time()])" style="color: blue; font-weight: bold">date</span></span> ()</span><br> Attribuer des variables en lecture seule : <span style="background-color: #eee8aa;"><span title="La valeur de cette variable ne peut pas être modifiée ; Ce n'est pas une expression valide" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La valeur de cette variable ne peut pas être modifiée ; Ce n'est pas une expression valide ; ; valeur = travailleur" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span> <span title="Attribuer une nouvelle valeur à une variable" style="color: red; font-weight: bold">+=</span> 10</span> , <span style="background-color: #eee8aa;"><span title="La valeur de cette variable ne peut pas être modifiée ; Ce n'est pas une expression valide" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La valeur de cette variable ne peut pas être modifiée ; Ce n'est pas une expression valide ; [java61764X1X1][G:1][Q:10] : Quel est votre prénom ? ; valeur = Pierre" style="color: green; font-weight: bold">name</span></span> <span title="Attribuer une nouvelle valeur à une variable" style="color: red; font-weight: bold">=</span> <span title="" style="color: gray">'Sally'</span></span><br> Parenthèses déséquilibrées : <span style="background-color: #eee8aa;"><span title="Parenthèses non équilibrées" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Parenthèses non équilibrées ; Expression exponentielle ; nombre pow (base, exp)" style="color: blue; font-weight: bold">pow</span></span> (3,4</span> , <span style="background-color: #eee8aa;"><span title="Parenthèses non équilibrées" style="border-style: solid; border-width: 2px; border-color: red;">(</span> <span title="Expression exponentielle ; nombre pow (base, exp)" style="color: blue; font-weight: bold">pow</span> (3,4)</span> , <span style="background-color: #eee8aa;"><span title="Expression exponentielle ; nombre pow (base, exp)" style="color: blue; font-weight: bold">pow</span> (3,4) <span title="Parenthèses supplémentaires à droite détectées" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>


</td><td><b>Here are common errors so you can see the tooltips</b><br>Variables used before they are declared: <span id="LEMtailor_Q_40_5"><span style="background-color: #eee8aa;"><span title="This variable is not declared until a later page; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="This variable is not declared until a later page; Not a valid expression; [java61764X3X6][G:3][Q:200]: Who will win the next election?; value=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span></span><br>Unknown Function: <span style="background-color: #eee8aa;"><span title="Undefined function" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined function" style="color: blue; font-weight: bold">iff</span></span>(<span title="[java61764X1X4][G:2][Q:50]: How many pets do you have?; value=1" style="color: maroon; font-weight: bold">numPets</span> &gt; <span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>,1,2)</span><br>Unknown Variable: <span style="background-color: #eee8aa;"><span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Undefined variable" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined variable" style="color: red; font-weight: bold">num_pets</span></span>,<span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>)</span><br>Wrong # parameters: <span style="background-color: #eee8aa;"><span title="Function must have at least 1 argument(s); Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function must have at least 1 argument(s); Not a valid expression; Return a formatted string; string sprintf(format, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span>()</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression; Excel-style if(test,result_if_true,result_if_false); if(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">if</span></span>(1,2)</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression; Format a local date/time; string date(format [, timestamp=time()])" style="color: blue; font-weight: bold">date</span></span>()</span><br>Assign read-only-vars:<span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; ; value=worker" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">+=</span>10</span>,<span id="LEMtailor_Q_40_12"><span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; [java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">=</span><span title="" style="color: gray">'Sally'</span></span></span><br>Unbalanced parentheses: <span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Parentheses not balanced; Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span></span>(3,4</span>,<span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;">(</span><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)</span>,<span style="background-color: #eee8aa;"><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)<span title="Extra right parentheses detected" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>
</td><td><b>Voici les erreurs courantes afin que vous puissiez voir les info-bulles</b><br> Variables utilisées avant d'être déclarées : <span id="LEMtailor_Q_40_5"><span style="background-color: #eee8aa;"><span title="Cette variable n'est déclarée que sur une page ultérieure ; Ce n'est pas une expression valide" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Cette variable n'est déclarée que sur une page ultérieure ; Ce n'est pas une expression valide ; [java61764X3X6][G:3][Q:200] : Qui remportera les prochaines élections ? ; valeur =?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span></span><br> Fonction inconnue : <span style="background-color: #eee8aa;"><span title="Fonction non définie" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Fonction non définie" style="color: blue; font-weight: bold">iff</span></span> ( <span title="[java61764X1X4][G:2][Q:50] : Combien d'animaux avez-vous ? ; valeur=1" style="color: maroon; font-weight: bold">numPets</span> > <span title="[java61764X1X3][G:2][Q:40] : Combien d'enfants avez-vous ? ; valeur=2" style="color: green; font-weight: bold">numKids</span> ,1,2)</span><br> Variable inconnue : <span style="background-color: #eee8aa;"><span title="Calculer la somme des valeurs dans un tableau ; somme numérique (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">somme</span> ( <span title="[java61764X1X2][G:2][Q:30] : Quel âge avez-vous ? ; valeur=45" style="color: green; font-weight: bold">age</span> , <span title="variable indéfinie" style="border-style: solid; border-width: 2px; border-color: red;"><span title="variable indéfinie" style="color: red; font-weight: bold">num_pets</span></span> , <span title="[java61764X1X3][G:2][Q:40] : Combien d'enfants avez-vous ? ; valeur=2" style="color: green; font-weight: bold">numKids</span> )</span><br> Mauvais # paramètres : <span style="background-color: #eee8aa;"><span title="La fonction doit avoir au moins 1 argument(s) ; Ce n'est pas une expression valide" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La fonction doit avoir au moins 1 argument(s) ; Ce n'est pas une expression valide ; Renvoie une chaîne formatée ; chaîne sprintf(format, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span> ()</span> , <span style="background-color: #eee8aa;"><span title="La fonction ne prend pas en charge ce nombre d'arguments : 2. La fonction prend en charge ce nombre d'arguments, -1=illimité : ; Ce n'est pas une expression valide" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La fonction ne prend pas en charge ce nombre d'arguments : 2. La fonction prend en charge ce nombre d'arguments, -1=illimité : ; Ce n'est pas une expression valide ; Style Excel if(test,result_if_true,result_if_false); si(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">if</span></span> (1,2)</span> , <span style="background-color: #eee8aa;"><span title="La fonction ne prend pas en charge ce nombre d'arguments : 0. La fonction prend en charge ce nombre d'arguments, -1=illimité : 1,2 ; Ce n'est pas une expression valide" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La fonction ne prend pas en charge ce nombre d'arguments : 0. La fonction prend en charge ce nombre d'arguments, -1=illimité : 1,2 ; Ce n'est pas une expression valide ; Formater une date/heure locale ; chaîne date(format [, timestamp=time()])" style="color: blue; font-weight: bold">date</span></span> ()</span><br> Attribuer des variables en lecture seule : <span style="background-color: #eee8aa;"><span title="La valeur de cette variable ne peut pas être modifiée ; Ce n'est pas une expression valide" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La valeur de cette variable ne peut pas être modifiée ; Ce n'est pas une expression valide ; ; valeur = travailleur" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span> <span title="Attribuer une nouvelle valeur à une variable" style="color: red; font-weight: bold">+=</span> 10</span> , <span id="LEMtailor_Q_40_12"><span style="background-color: #eee8aa;"><span title="La valeur de cette variable ne peut pas être modifiée ; Ce n'est pas une expression valide" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La valeur de cette variable ne peut pas être modifiée ; Ce n'est pas une expression valide ; [java61764X1X1][G:1][Q:10] : Quel est votre prénom ? ; valeur = Pierre" style="color: green; font-weight: bold">name</span></span> <span title="Attribuer une nouvelle valeur à une variable" style="color: red; font-weight: bold">=</span> <span title="" style="color: gray">'Sally'</span></span></span><br> Parenthèses déséquilibrées : <span style="background-color: #eee8aa;"><span title="Parenthèses non équilibrées" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Parenthèses non équilibrées ; Expression exponentielle ; nombre pow (base, exp)" style="color: blue; font-weight: bold">pow</span></span> (3,4</span> , <span style="background-color: #eee8aa;"><span title="Parenthèses non équilibrées" style="border-style: solid; border-width: 2px; border-color: red;">(</span> <span title="Expression exponentielle ; nombre pow (base, exp)" style="color: blue; font-weight: bold">pow</span> (3,4)</span> , <span style="background-color: #eee8aa;"><span title="Expression exponentielle ; nombre pow (base, exp)" style="color: blue; font-weight: bold">pow</span> (3,4) <span title="Parenthèses supplémentaires à droite détectées" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>


</td></tr>
</td></tr>
<tr><td><b>Here is some of the unsupported syntax</b><br>No support for '++', '--', '%',';': {min(++age, --age,age % 2);}<br>Nor '|', '&amp;', '^': {(sum(2 | 3,3 &amp; 4,5 ^ 6)}}<br>Nor arrays: {name[2], name['mine']}
<tr><td> <b>Voici une partie de la syntaxe non prise en charge</b><br> Aucune prise en charge de '++', '--', '%',';' : {min(++age, --age,age % 2);}<br> Ni '|', '&', '^' : {(sum(2 | 3,3 & 4,5 ^ 6)}}<br> Ni les tableaux : {name[2], name['mine']}
</td><td><b>Here is some of the unsupported syntax</b><br>No support for '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Find lowest value; number min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span>(<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ++ </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> -- </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> % </span>2)<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ; </span></span><br>Nor '|', '&amp;', '^': <span style="background-color: #eee8aa;">(<span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> | </span>3,3<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> &amp; </span>4,5<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ^ </span>6)</span>}<br>Nor arrays: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span>2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span>,<span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span><span title="" style="color: gray">'mine'</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span></span>
</td><td> <b>Voici une partie de la syntaxe non prise en charge</b><br> Pas de support pour '++', '--', '%',';' : <span style="background-color: #eee8aa;"><span title="Trouver la valeur la plus basse ; nombre min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span> ( <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">++</span> <span title="[java61764X1X2][G:2][Q:30] : Quel âge avez-vous ? ; valeur=45" style="color: green; font-weight: bold">age</span> , <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">--</span> <span title="[java61764X1X2][G:2][Q:30] : Quel âge avez-vous ? ; valeur=45" style="color: green; font-weight: bold">age</span> , <span title="[java61764X1X2][G:2][Q:30] : Quel âge avez-vous ? ; valeur=45" style="color: green; font-weight: bold">age</span> <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">%</span> 2) <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">;</span></span><br> Ni '|', '&', '^' : <span style="background-color: #eee8aa;">( <span title="Calculer la somme des valeurs dans un tableau ; somme numérique (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span> (2 <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">|</span> 3,3 <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">&</span> 4,5 <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">^</span> 6)</span> }<br> Ni les tableaux : <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10] : Quel est votre prénom ? ; valeur = Pierre" style="color: green; font-weight: bold">nom</span> <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">[</span> 2 <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">]</span> , <span title="[java61764X1X1][G:1][Q:10] : Quel est votre prénom ? ; valeur = Pierre" style="color: green; font-weight: bold">nom</span> <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">[</span> <span title="" style="color: gray">'le mien'</span> <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">]</span></span>


</td><td><b>Here is some of the unsupported syntax</b><br>No support for '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Find lowest value; number min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span>(<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ++ </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> -- </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> % </span>2)<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ; </span></span><br>Nor '|', '&amp;', '^': <span style="background-color: #eee8aa;">(<span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> | </span>3,3<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> &amp; </span>4,5<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ^ </span>6)</span>}<br>Nor arrays: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span>2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span>,<span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span><span title="" style="color: gray">'mine'</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span></span>
</td><td><b>Voici une partie de la syntaxe non prise en charge</b><br> Pas de support pour '++', '--', '%',';' : <span style="background-color: #eee8aa;"><span title="Trouver la valeur la plus basse ; nombre min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span> ( <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">++</span> <span title="[java61764X1X2][G:2][Q:30] : Quel âge avez-vous ? ; valeur=45" style="color: green; font-weight: bold">age</span> , <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">--</span> <span title="[java61764X1X2][G:2][Q:30] : Quel âge avez-vous ? ; valeur=45" style="color: green; font-weight: bold">age</span> , <span title="[java61764X1X2][G:2][Q:30] : Quel âge avez-vous ? ; valeur=45" style="color: green; font-weight: bold">age</span> <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">%</span> 2) <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">;</span></span><br> Ni '|', '&', '^' : <span style="background-color: #eee8aa;">( <span title="Calculer la somme des valeurs dans un tableau ; somme numérique (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span> (2 <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">|</span> 3,3 <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">&</span> 4,5 <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">^</span> 6)</span> }<br> Ni les tableaux : <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10] : Quel est votre prénom ? ; valeur = Pierre" style="color: green; font-weight: bold">nom</span> <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">[</span> 2 <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">]</span> , <span title="[java61764X1X1][G:1][Q:10] : Quel est votre prénom ? ; valeur = Pierre" style="color: green; font-weight: bold">nom</span> <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">[</span> <span title="" style="color: gray">'le mien'</span> <span title="Syntaxe non prise en charge" style="border-style: solid; border-width: 2px; border-color: red;">]</span></span>


</td></tr>
</td></tr>
Line 99: Line 99:




=Tailoring Examples (e.g. extending {INSERTANS:xxx})=
=Exemples d'adaptation (par exemple, extension de {INSERTANS:xxx})=




=="Dear {Mr}/{Mrs} Smith..."==
=="Cher {M.}/{Mme} Smith..."==




Use the if() function to conditionally choose whether to display 'Mr.' or 'Mrs.'.
Utilisez la fonction if() pour choisir conditionnellement si vous souhaitez afficher « M. ». ou 'Madame'.


The syntax is if(test,do_if_true,do_if_false).
La syntaxe est if(test,do_if_true,do_if_false).


{|
{|
|#||Code||Question||Type
|#||Code||Question||Type
|-
|-
|1||gender||What is your gender?||Gender
|1||sexe||Quel est votre sexe ?||Sexe
|-
|-
|2||example1||Dear {if(gender=='M','Mr.','Mrs.')} Smith, ...||Long free text
|2| |exemple1||Cher {if(gender=='M','Mr.','Mrs.')} Smith, ...||Long texte libre
|}
|}


Line 121: Line 121:




As it can be observed below, "Mr" and "Mrs" are tailored to what the respondent selects as answer to question "gender".
Comme on peut le constater ci-dessous, « M. » et « Mme » sont adaptés à ce que le répondant choisit comme réponse à la question « genre ».




Line 128: Line 128:




=="Dear {Mr}/{Mrs} Smith..." in invitation email==
=="Cher {M.}/{Mme} Smith..." dans l'e-mail d'invitation==




You can use the example above in the invitation email using attributes from the token table. Use the if() function to choose whether 'Mr.' or 'Mrs.' should be used in the email.
Vous pouvez utiliser l'exemple ci-dessus dans l'e-mail d'invitation en utilisant les attributs de la table des jetons. Utilisez la fonction if() pour choisir si « M. » ou 'Mme.' doit être utilisé dans l’e-mail.




The syntax is "if(test,do_if_true,do_if_false)".
La syntaxe est "if(test,do_if_true,do_if_false)".


{|
{|
|#||attribute||value
|#||attribut||valeur
|-
|-
|1||Last name||Smith
|1||Nom||Smith
|-
|-
|2||Email address||test@test.com
|2||Adresse e-mail||test@test. com
|-
|-
|3||ATTRIBUTE_2||M
|3||ATTRIBUTE_2||M
Line 147: Line 147:




Text in invitation email:
Texte dans l'e-mail d'invitation :


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">


Dear {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},
Cher {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},


you have been invited to participate in a survey:
vous avez été invité à participer à une enquête :


https:/...
https:/...
Line 163: Line 163:




email View:
vue par e-mail :




Line 169: Line 169:




=Calculation / Assessment Examples=
=Exemples de calcul / d'évaluation=




==Calculate assessment values at runtime and store the results in the survey data==
==Calculez les valeurs d'évaluation au moment de l'exécution et stockez les résultats dans les données d'enquête==




This example uses all of EM's features, including Relevance, Tailoring, and the Equation question type.
Cet exemple utilise toutes les fonctionnalités d'EM, notamment la pertinence, la personnalisation et le type de question Équation.


It also shows that all of them are JavaScript-enabled, so if you have these features on a page, it will dynamically change as people set and change their answers.
Cela montre également qu'ils sont tous compatibles JavaScript, donc si vous disposez de ces fonctionnalités sur une page, cela changera dynamiquement à mesure que les gens définiront et modifieront leurs réponses.


{|
{|
|#||Code||Question||Type||Relevance
|#||Code||Question||Type||Pertinence
|-
|1||numKids||How many children do you have?||Numerical input||1
|-
|-
|2||kid1||How old is your first child?||Numerical input||numKids >= 1
|1||numKids||Combien d'enfants avez-vous ?||Saisie numérique||1|-
|2||kid1||Quel âge a votre premier enfant ?||Saisie numérique||numKids >= 1
|-
|-
|3||kid2||How old is your second child?||Numerical input||numKids >= 2
|3||kid2||Quel âge a votre deuxième child?||Saisie numérique||numKids >= 2
|-
|-
|4||kid3||How old is your third child?||Numerical input||numKids >= 3
|4||kid3||Quel âge a votre troisième enfant ?||Saisie numérique||numKids >= 3
|-
|-
|5||kid4||How old is your fourth child?||Numerical input||numKids >= 4
|5||kid4||Quel âge a votre quatrième enfant ?||Saisie numérique||numKids >= 4
|-
|-
|6||sumKidAges||{sum(kid1.NAOK,kid2.NAOK,kid3.NAOK,kid4.NAOK)}||Equation||1
|6||sumKidAges||{sum(kid1.NAOK,kid2. NAOK,kid3.NAOK,kid4.NAOK)}||Équation||1
|-
|-
|7||kidSummary||You said that you have {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','The sum of ages of your first ',min(numKids,4),' kids is ',sumKidAges,'.'),' ')}||Text display||1
|7||kidSummary||Vous avez dit que vous aviez {numKids}. {if(numKids==1,'enfant','enfants')}. {if(numKids>1,implode(' ','La somme des âges de vos premiers ',min(numKids,4),' enfants est ',sumKidAges,'.'),' ')}||Affichage du texte| |1
|}
|}




To download this example, please click on the following link: [[Media:Assessments_survey_example.zip|Assessments_survey_example]].
Pour télécharger cet exemple, veuillez cliquer sur le lien suivant : [[Media:Assessments_survey_example.zip|Assessments_survey_example]].




You may find below screenshots of representative questions. As you can see, EM syntax-highlights all fields that might contain tailoring. Here, you see examples of syntax-highlighting Relevance, the Equation question type, and substitutions within a question. You can also use substitutions within Help, Group header display, Welcome message, and End message.
Vous trouverez ci-dessous des captures d'écran de questions représentatives. Comme vous pouvez le constater, la syntaxe EM met en évidence tous les champs susceptibles de contenir une personnalisation. Ici, vous voyez des exemples de pertinence de mise en évidence de la syntaxe, de type de question Équation et de substitutions au sein d’une question. Vous pouvez également utiliser des substitutions dans l'aide, l'affichage de l'en-tête de groupe, le message de bienvenue et le message de fin.


In the next example, since the relevance is {numKids >= 2), the question will only be visible if the respondent reports that she has at least two children.
Dans l'exemple suivant, puisque la pertinence est {numKids >= 2), la question ne sera visible que si la répondante déclare avoir au moins deux enfants.




Line 209: Line 208:




Below, you may observe that each variable has the .NAOK suffix attached to it. This is because of how EM supports cascading relevance. If you did not have .NAOK, then the sum would only be computed if the person said she has 4 children (e.g., if all of the variables are relevant). The usage of .NAOK means that we want to compute the sum even if all or some of the variables are irrelevant (e.g., "Not Applicable" (NA) is alright (OK)).
Ci-dessous, vous remarquerez peut-être que chaque variable est associée au suffixe .NAOK. Cela est dû à la façon dont EM prend en charge la pertinence en cascade. Si vous n'aviez pas .NAOK, alors la somme ne serait calculée que si la personne dit avoir 4 enfants (par exemple, si toutes les variables sont pertinentes). L'utilisation de .NAOK signifie que nous voulons calculer la somme même si tout ou partie des variables ne sont pas pertinentes (par exemple, "Non applicable" (NA) est correct (OK)).


However, the .NAOK attribute only affects whether variables are passed into EM. If the respondent initially says she has 3 children, and enters ages for each, then changes her mind and says she has 2, we don't want to see the sum of the 3 entered values - since the third child is "not applicable" in our case anymore:
Cependant, l'attribut .NAOK affecte uniquement si les variables sont transmises à EM. Si la personne interrogée dit initialement qu'elle a 3 enfants et entre l'âge de chacun, puis change d'avis et dit qu'elle en a 2, nous ne voulons pas voir la somme des 3 valeurs saisies - puisque le troisième enfant est "sans objet". dans notre cas plus :




Line 217: Line 216:




Each separate Expression is color coded with a tan background. As you can see, there are three separate Expressions here. The last one contains a message that is conditionally shown only if the person has more than one child.
Chaque expression distincte est codée par couleur avec un fond beige. Comme vous pouvez le constater, il existe ici trois expressions distinctes. Le dernier contient un message qui s'affiche sous condition uniquement si la personne a plus d'un enfant.




Line 223: Line 222:




Now, here are screenshots of the survey in action.
Voici maintenant des captures d’écran de l’enquête en action.


When you first visit the page, you see this. Note that is says "You have 0 '''children'''" instead of "You have 0 '''child'''".
Lorsque vous visitez la page pour la première fois, vous voyez ceci. Notez qu'il est dit "Vous avez 0 '''enfant'''" au lieu de "Vous avez 0 '''enfant'''".




Line 231: Line 230:




If I change the value for number of children to 1, the display instantly changes to this, even though it is on the same page:
Si je change la valeur du nombre d'enfants à 1, l'affichage passe instantanément à ceci, même s'il se trouve sur la même page :




Line 237: Line 236:




Now notice that the grammar is correct: "You have 1 '''child'''".
Notez maintenant que la grammaire est correcte : "Vous avez 1 '''enfant'''".


Now I change the value for number of children to 3, and the display instantly changes to this.
Maintenant, je change la valeur du nombre d'enfants à 3, et l'affichage change instantanément à ceci.


Notice that you now see the conditional message at the bottom:  "The sum of ages of your first 3 kids is 0.".
Notez que vous voyez maintenant le message conditionnel en bas : "La somme des âges de vos 3 premiers enfants est 0."




Line 247: Line 246:




Now I'll enter ages for my imaginary children, and I get this display, summing up their ages:
Je vais maintenant saisir l'âge de mes enfants imaginaires et j'obtiens cet affichage, résumant leurs âges :




Line 253: Line 252:




Again, the score and display updates instantly as I enter the values, so you can use this to show a running total of an Assessment Score.
Encore une fois, le score et l'affichage sont mis à jour instantanément au fur et à mesure que je saisis les valeurs, vous pouvez donc l'utiliser pour afficher le total cumulé d'un score d'évaluation.




Now, I change the value for the number of children to 2. The display has changed to this:
Maintenant, je change la valeur du nombre d'enfants à 2. L'affichage est devenu ceci :




Line 262: Line 261:




Notice that although I had entered a value of 5.5 for the third child, the report now only sums the values of my first 2 children.
Notez que même si j'avais saisi une valeur de 5,5 pour le troisième enfant, le rapport ne résume désormais que les valeurs de mes 2 premiers enfants.


The reason for this is that the 3rd value is now irrelevant, and irrelevant values are actively ignored by EM.
La raison en est que la 3ème valeur n'est plus pertinente et que les valeurs non pertinentes sont activement ignorées par EM.


If I were to change the number of kids back to 3, I would see the value of 5.5 I entered again. So, I don't lose any information I enter on the page.
Si je devais remettre le nombre d'enfants à 3, je verrais la valeur de 5,5 que j'ai saisie à nouveau. Ainsi, je ne perds aucune information saisie sur la page.


However, if I navigate to the Next or Previous page, all irrelevant values will be NULLed out in the session and in the database. So, if I were to keep the value at 2, go to the next page, and then come back and state that I actually have 3 kids, I would no longer see the age of 5.5.
Cependant, si je navigue vers la page Suivant ou Précédent, toutes les valeurs non pertinentes seront supprimées dans la session et dans la base de données. Donc, si je gardais la valeur à 2, passais à la page suivante, puis revenais et déclarais que j'ai effectivement 3 enfants, je ne verrais plus l'âge de 5,5 ans.




==Enter data and see a dynamically changing report of what was entered on the same page==
==Entrez les données et voyez un rapport changeant dynamiquement de ce qui a été saisi sur la même page==




This example presents the Tailoring process within LimeSurvey.
Cet exemple présente le processus de personnalisation dans LimeSurvey.


To download this example, click on the following link: [[Media:Dynamic_change_of_the_report_when_data_is_entered_on_the_same_page_survey.zip|Dynamic changes survey example]].
Pour télécharger cet exemple, cliquez sur le lien suivant : [[Media:Dynamic_change_of_the_report_when_data_is_enter_on_the_same_page_survey.zip|Exemple d'enquête sur les changements dynamiques]].


Here is what the page looks like initially. You only see the question asking what city you live in:
Voici à quoi ressemble la page au départ. Vous voyez uniquement la question demandant dans quelle ville vous habitez :




Line 284: Line 283:




Once you start to enter an answer, the tailoring process is also starting:
Une fois que vous commencez à saisir une réponse, le processus de personnalisation démarre également :


<center>[[File:em-on_page_report-usage-2.jpg]]</center>
<center>[[File:em-on_page_report-usage-2.jpg]]</center>




As you enter answers, the table at the bottom of the page is updated to show the answer codes and values of your responses.
Au fur et à mesure que vous saisissez les réponses, le tableau en bas de la page est mis à jour pour afficher les codes de réponse et les valeurs de vos réponses.




<center>[[File:em-on_page_report-usage-3.jpg]]</center>
<center>[[File:em-on_page_report-usage-3.jpg]]</center>


=Common Debugging Examples=
=Exemples de débogage courants=




==Nested if() Statements (Conditional Logic)==
==Instructions if() imbriquées (logique conditionnelle)==




EM supports the function "if(test,do_if_true,do_if_false)" so that you can perform conditional logic or tailoring. This function can be nested to do the equivalent of "if { } else if { } else {  }". EM will let you know if the parentheses are not balanced (e.g., you are missing a closing right parenthesis), or if you have any extra right parentheses. You should try to count the parentheses as you compose long nested if statements, save it, check for syntax errors, and fix them if any are found. Let's check together the below example.  
EM prend en charge la fonction « if(test,do_if_true,do_if_false) » afin que vous puissiez effectuer une logique conditionnelle ou une personnalisation. Cette fonction peut être imbriquée pour faire l'équivalent de "if { } else if { } else { }". EM vous fera savoir si les parenthèses ne sont pas équilibrées (par exemple, s'il vous manque une parenthèse fermante droite), ou si vous avez des parenthèses droites supplémentaires. Vous devriez essayer de compter les parenthèses lorsque vous composez de longues instructions if imbriquées, les enregistrer, vérifier les erreurs de syntaxe et les corriger si elles sont trouvées. Vérifions ensemble l'exemple ci-dessous.  


The group of questions used below can be accessed from here: [[Media:Example_tailoring_group11.zip|Tailoring survey example.lsg]]
Le groupe de questions utilisé ci-dessous est accessible à partir d'ici : [[Media:Example_tailoring_group11.zip|Tailoring Survey example.lsg]]




First, with nothing entered, you just see "Hello."
Tout d’abord, sans rien saisir, vous voyez simplement « Bonjour ».




Line 311: Line 310:




If you enter a name, it says, "Hello {name}."
Si vous saisissez un nom, le message "Bonjour {nom}" s'affiche.




Line 317: Line 316:




If you enter an age, you get a tailored message, depending upon whether you are a pre-school-age child or not:
Si vous indiquez un âge, vous recevez un message personnalisé, selon que vous êtes un enfant d'âge préscolaire ou non :




Line 323: Line 322:




School aged, teenager, or adult. Here is a  teenager who wants to be anonymous:
Âge scolaire, adolescent ou adulte. Voici un adolescent qui souhaite rester anonyme :




Line 329: Line 328:




Here is the logic file of the group. As you can see in the "if-based" question, there are nested if statements based upon the person's age.
Voici le fichier logique du groupe. Comme vous pouvez le voir dans la question « si basé », il existe des déclarations if imbriquées basées sur l'âge de la personne.




Line 335: Line 334:




When you are originally editing this question, it is likely that at some point, you will have the wrong number of parentheses. Here's what happens if you have too few:
Lorsque vous modifiez initialement cette question, il est probable qu'à un moment donné, vous ayez un nombre de parenthèses incorrect. Voici ce qui se passe si vous en avez trop peu :




Line 341: Line 340:




If you hover over the word "if", which is surrounded by a red box, it says "Parentheses not balanced". In this case, there should be four closing parentheses after "already an adult!", but there are only three.
Si vous survolez le mot « si », qui est entouré d'un cadre rouge, il est indiqué « Parenthèses non équilibrées ». Dans ce cas, il devrait y avoir quatre parenthèses fermantes après « déjà adulte ! », mais il n’y en a que trois.


If, on the other hand, you have an extra right parenthesis, it will be surrounded by a red box, like this:
Si par contre vous disposez d’une parenthèse droite supplémentaire, elle sera entourée d’un cadre rouge, comme ceci :




Line 349: Line 348:




When you are actually editing the question, the question looks like this:
Lorsque vous modifiez réellement la question, la question ressemble à ceci :




<center>[[File:em-nested-if-edit-screen.jpg]]</center>
<center>[[File:em-nested-if-edit-screen.jpg]]</center>

Latest revision as of 10:09, 2 October 2023


Aperçu de ce qui a été expliqué précédemment

Si vous avez suivi jusqu'à présent la structure du manuel LimeSurvey, cela signifie que vous maîtrisez déjà la Terminologie LimeSurvey. Ensuite, nous avons abordé les expressions et les variables afin d'apprendre comment améliorer nos enquêtes. Dans la partie suivante, nous sommes passés aux types et significations de syntax highlighting pour apprendre à corriger les erreurs de syntaxe.

Une fois ces notions de base couvertes, nous pourrions passer à des exemples et expliquer le fonctionnement des expressions dans LimeSurvey.


Surlignage de la syntaxe

Les captures d'écran suivantes donnent des exemples, mais n'affichent pas les valeurs des info-bulles. Une info-bulle est une boîte informative qui s’affiche chaque fois que vous passez la souris sur des mots en gras.

Grâce à cette coloration syntaxique, il est très facile de composer des expressions correctes, même celles qui sont compliquées. Bien que l'équipe LimeSurvey envisage d'essayer de créer une interface graphique pour Expression Builder, vous pouvez utiliser la coloration syntaxique existante pour identifier et corriger rapidement les fautes de frappe. Vous pouvez également utiliser les info-bulles pour valider l'exactitude de vos expressions (par exemple, confirmer que vous avez sélectionné la ou les variables souhaitées).

Dans chacun des exemples, il y a trois colonnes :

  1. Source - c'est le texte brut que vous entreriez dans le champ de question de LimeSurvey
  2. Pretty Print - c'est l'équivalent en surbrillance syntaxique de ce que vous avez entré
    • Notez que les expressions sont affichées sur un fond beige, mais ne sont pas entourées d'accolades dans cette mise en évidence.
    • Étant donné qu'EM prend en charge la substitution récursive, l'affichage d'accolades dans la mise en évidence entraînerait des erreurs de syntaxe
  3. Résultat - c'est la sortie générée lorsque EM traite la source
    • Tout ce qui peut être correctement substitué est
    • Les expressions contenant des erreurs sont affichées en ligne, avec une coloration syntaxique. Les erreurs sont entourées d’un cadre bordé de rouge.


Syntaxe appropriée

Vous trouverez ci-dessous des exemples de syntaxe appropriée : 

  1. Values : indique que les variables connues sont codées par couleur selon qu'elles sont définies sur la page en cours. INSERTANS:xxxx à l'ancienne obtient son propre style de codage couleur
  2. Attributs de la question : indique que la notation par points peut accéder à certaines propriétés des questions 
  3. Math : indique que les calculs de base et complexes sont pris en charge 
  4. TextProcessing : affiche certaines des fonctions de traitement de texte disponibles
  5. Dates : affiche deux des fonctions disponibles liées aux dates
  6. Conditional : affiche l'utilisation de la fonction if(). Les choix peuvent être imbriqués.
  7. Paragraphe personnalisé : vous pouvez entièrement personnaliser un rapport en fonction des valeurs précédentes
  8. EM processus dans les chaînes : montre qu'il peut effectuer des substitutions dans les chaînes. Cet exemple génère un nom d'image personnalisé.
  9. EM ne traite pas les accolades comme celles-ci : montre que si les accolades sont échappées ou s'il y a un espace blanc entre l'expression et les accolades, ES ignore l'expression.



Syntaxe EM contenant des erreurs

Voici des exemples d’erreurs courantes lors de la saisie d’expressions ES. Notez que les info-bulles fournissent des informations supplémentaires.

  1. Javascript en ligne qui a oublié d'ajouter des espaces après l'accolade
    • Puisque "document.write" apparaît juste après une accolade, EM pense que c'est une expression, et rouge- cases "document" et "write" puisqu'il s'agit respectivement de variables et de fonctions non définies
  2. Variables, fonctions et opérateurs inconnus/mal orthographiés
    • Ici, nous avons oublié que nous utilisons le nom de variable "sexe" au lieu de " sex", mais EM détecte cette erreur. Il met également en rouge '++', car ce n'est pas un opérateur pris en charge.
  3. Avertit si vous utilisez = au lieu de eq, ou effectuez des affectations de valeurs
    • Notez que '=' et '+=' sont en texte rouge au lieu de noir. Si vous passez la souris dessus, vous verrez des avertissements indiquant que vous attribuez une valeur.
  4. Mauvais nombre d'arguments pour les fonctions
    • if() prend 3 arguments, mais on lui en a donné 4, donc en survolant sur le "if" encadré en rouge expliquera l'erreur et affichera la syntaxe prise en charge
    • sum() prend un nombre illimité d'arguments, mais nous avions une virgule de fin avant les parenthèses fermantes, donc c'est encadré en rouge
  5. Parenthèses incompatibles
    • C'est l'une des erreurs les plus courantes lors de l'écriture d'expressions.
    • Cela montre deux exemples de parenthèses fermantes manquantes et un exemple d'avoir une parenthèse fermante de trop.
#Syntaxe non prise en charge
    • Si vous utilisez un opérateur ou une ponctuation que ES ne prend pas en charge, il le mettra en boîte rouge.
  1. Affectations invalides
    • Certaines variables sont en lectureécriture et leurs valeurs peuvent être modifiées. D'autres sont en lecture seule.
    • Si vous essayez de modifier la valeur d'une variable en lecture seule, vous ne pouvez pas. EM encadrera la tentative en rouge.
    • Si vous essayez d'attribuer une valeur à une équation ou une chaîne, vous obtiendrez également une erreur



"Live" exemples de mise en évidence de la syntaxe avec des info-bulles actives

Source Jolie impression Résultat
Voici un exemple de syntaxe OK avec des info-bulles
Bonjour {if(gender=='M','Mr.','Mrs.')} {nom}, il est maintenant {date('g:i a',time())}. Savez-vous où se trouvent vos {sum(numPets,numKids)} enfants et animaux de compagnie ?
Voici un exemple de syntaxe OK avec des info-bulles
Bonjour , si ( genre == 'M' , 'Mr.' , 'Mrs.' ) nom de famille , il s'agit maintenant de la date ( 'g:i a' , time ()) . Savez-vous où se trouvent vos enfants et animaux de compagnie total ( numPets , numKids ) ?
Voici un exemple de syntaxe OK avec des info-bulles
Bonjour M. Smith , il est maintenant 6h07. Savez-vous où sont vos 3 enfants et animaux de compagnie ?
Voici les erreurs courantes afin que vous puissiez voir les info-bulles
Variables utilisées avant d'être déclarées : {notSetYet}
Fonction inconnue : {iff(numPets>numKids,1,2)}
Variable inconnue : {sum(age,num_pets,numKids)}
Mauvais # paramètres : {sprintf()},{if(1,2)},{date()}
Attribuer des variables en lecture seule :{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}
Parenthèses déséquilibrées : {pow(3,4},{(pow(3,4)},{pow(3,4))}
Voici les erreurs courantes afin que vous puissiez voir les info-bulles
Variables utilisées avant d'être déclarées : notSetYet
Fonction inconnue : iff ( numPets > numKids ,1,2)
Variable inconnue : somme ( age , num_pets , numKids )
Mauvais # paramètres : sprintf () , if (1,2) , date ()
Attribuer des variables en lecture seule : TOKEN:ATTRIBUTE_1 += 10 , name = 'Sally'
Parenthèses déséquilibrées : pow (3,4 , ( pow (3,4) , pow (3,4) )
Voici les erreurs courantes afin que vous puissiez voir les info-bulles
Variables utilisées avant d'être déclarées : notSetYet
Fonction inconnue : iff ( numPets > numKids ,1,2)
Variable inconnue : somme ( age , num_pets , numKids )
Mauvais # paramètres : sprintf () , if (1,2) , date ()
Attribuer des variables en lecture seule : TOKEN:ATTRIBUTE_1 += 10 , name = 'Sally'
Parenthèses déséquilibrées : pow (3,4 , ( pow (3,4) , pow (3,4) )
Voici une partie de la syntaxe non prise en charge
Aucune prise en charge de '++', '--', '%',';' : {min(++age, --age,age % 2);}
Ni '|', '&', '^' : {(sum(2 | 3,3 & 4,5 ^ 6)}}
Ni les tableaux : {name[2], name['mine']}
Voici une partie de la syntaxe non prise en charge
Pas de support pour '++', '--', '%',';' : min ( ++ age , -- age , age % 2) ;
Ni '|', '&', '^' : ( sum (2 | 3,3 & 4,5 ^ 6) }
Ni les tableaux : nom [ 2 ] , nom [ 'le mien' ]
Voici une partie de la syntaxe non prise en charge
Pas de support pour '++', '--', '%',';' : min ( ++ age , -- age , age % 2) ;
Ni '|', '&', '^' : ( sum (2 | 3,3 & 4,5 ^ 6) }
Ni les tableaux : nom [ 2 ] , nom [ 'le mien' ]


Exemples d'adaptation (par exemple, extension de {INSERTANS:xxx})

"Cher {M.}/{Mme} Smith..."

Utilisez la fonction if() pour choisir conditionnellement si vous souhaitez afficher « M. ». ou 'Madame'.

La syntaxe est if(test,do_if_true,do_if_false).

# Code Question Type
1 sexe Quel est votre sexe ? Sexe
|exemple1 Cher {if(gender=='M','Mr.','Mrs.')} Smith, ... Long texte libre



Comme on peut le constater ci-dessous, « M. » et « Mme » sont adaptés à ce que le répondant choisit comme réponse à la question « genre ».



"Cher {M.}/{Mme} Smith..." dans l'e-mail d'invitation

Vous pouvez utiliser l'exemple ci-dessus dans l'e-mail d'invitation en utilisant les attributs de la table des jetons. Utilisez la fonction if() pour choisir si « M. » ou 'Mme.' doit être utilisé dans l’e-mail.


La syntaxe est "if(test,do_if_true,do_if_false)".

# attribut valeur
1 Nom Smith
2 Adresse e-mail test@test. com
3 ATTRIBUTE_2 M


Texte dans l'e-mail d'invitation :

Cher {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},

vous avez été invité à participer à une enquête :

https:/...



vue par e-mail :



Exemples de calcul / d'évaluation

Calculez les valeurs d'évaluation au moment de l'exécution et stockez les résultats dans les données d'enquête

Cet exemple utilise toutes les fonctionnalités d'EM, notamment la pertinence, la personnalisation et le type de question Équation.

Cela montre également qu'ils sont tous compatibles JavaScript, donc si vous disposez de ces fonctionnalités sur une page, cela changera dynamiquement à mesure que les gens définiront et modifieront leurs réponses.

# Code Question Type Pertinence
1 numKids Combien d'enfants avez-vous ? Saisie numérique - 2 kid1 Quel âge a votre premier enfant ? Saisie numérique numKids >= 1
3 kid2 Quel âge a votre deuxième child? Saisie numérique numKids >= 2
4 kid3 Quel âge a votre troisième enfant ? Saisie numérique numKids >= 3
5 kid4 Quel âge a votre quatrième enfant ? Saisie numérique numKids >= 4
6 sumKidAges {sum(kid1.NAOK,kid2. NAOK,kid3.NAOK,kid4.NAOK)} Équation 1
7 kidSummary Vous avez dit que vous aviez {numKids}. {if(numKids==1,'enfant','enfants')}. {if(numKids>1,implode(' ','La somme des âges de vos premiers ',min(numKids,4),' enfants est ',sumKidAges,'.'),' ')} |1


Pour télécharger cet exemple, veuillez cliquer sur le lien suivant : Assessments_survey_example.


Vous trouverez ci-dessous des captures d'écran de questions représentatives. Comme vous pouvez le constater, la syntaxe EM met en évidence tous les champs susceptibles de contenir une personnalisation. Ici, vous voyez des exemples de pertinence de mise en évidence de la syntaxe, de type de question Équation et de substitutions au sein d’une question. Vous pouvez également utiliser des substitutions dans l'aide, l'affichage de l'en-tête de groupe, le message de bienvenue et le message de fin.

Dans l'exemple suivant, puisque la pertinence est {numKids >= 2), la question ne sera visible que si la répondante déclare avoir au moins deux enfants.



Ci-dessous, vous remarquerez peut-être que chaque variable est associée au suffixe .NAOK. Cela est dû à la façon dont EM prend en charge la pertinence en cascade. Si vous n'aviez pas .NAOK, alors la somme ne serait calculée que si la personne dit avoir 4 enfants (par exemple, si toutes les variables sont pertinentes). L'utilisation de .NAOK signifie que nous voulons calculer la somme même si tout ou partie des variables ne sont pas pertinentes (par exemple, "Non applicable" (NA) est correct (OK)).

Cependant, l'attribut .NAOK affecte uniquement si les variables sont transmises à EM. Si la personne interrogée dit initialement qu'elle a 3 enfants et entre l'âge de chacun, puis change d'avis et dit qu'elle en a 2, nous ne voulons pas voir la somme des 3 valeurs saisies - puisque le troisième enfant est "sans objet". dans notre cas plus :



Chaque expression distincte est codée par couleur avec un fond beige. Comme vous pouvez le constater, il existe ici trois expressions distinctes. Le dernier contient un message qui s'affiche sous condition uniquement si la personne a plus d'un enfant.



Voici maintenant des captures d’écran de l’enquête en action.

Lorsque vous visitez la page pour la première fois, vous voyez ceci. Notez qu'il est dit "Vous avez 0 enfant" au lieu de "Vous avez 0 enfant".



Si je change la valeur du nombre d'enfants à 1, l'affichage passe instantanément à ceci, même s'il se trouve sur la même page :



Notez maintenant que la grammaire est correcte : "Vous avez 1 enfant".

Maintenant, je change la valeur du nombre d'enfants à 3, et l'affichage change instantanément à ceci.

Notez que vous voyez maintenant le message conditionnel en bas : "La somme des âges de vos 3 premiers enfants est 0."



Je vais maintenant saisir l'âge de mes enfants imaginaires et j'obtiens cet affichage, résumant leurs âges :



Encore une fois, le score et l'affichage sont mis à jour instantanément au fur et à mesure que je saisis les valeurs, vous pouvez donc l'utiliser pour afficher le total cumulé d'un score d'évaluation.


Maintenant, je change la valeur du nombre d'enfants à 2. L'affichage est devenu ceci :



Notez que même si j'avais saisi une valeur de 5,5 pour le troisième enfant, le rapport ne résume désormais que les valeurs de mes 2 premiers enfants.

La raison en est que la 3ème valeur n'est plus pertinente et que les valeurs non pertinentes sont activement ignorées par EM.

Si je devais remettre le nombre d'enfants à 3, je verrais la valeur de 5,5 que j'ai saisie à nouveau. Ainsi, je ne perds aucune information saisie sur la page.

Cependant, si je navigue vers la page Suivant ou Précédent, toutes les valeurs non pertinentes seront supprimées dans la session et dans la base de données. Donc, si je gardais la valeur à 2, passais à la page suivante, puis revenais et déclarais que j'ai effectivement 3 enfants, je ne verrais plus l'âge de 5,5 ans.


Entrez les données et voyez un rapport changeant dynamiquement de ce qui a été saisi sur la même page

Cet exemple présente le processus de personnalisation dans LimeSurvey.

Pour télécharger cet exemple, cliquez sur le lien suivant : Exemple d'enquête sur les changements dynamiques.

Voici à quoi ressemble la page au départ. Vous voyez uniquement la question demandant dans quelle ville vous habitez :



Une fois que vous commencez à saisir une réponse, le processus de personnalisation démarre également :


Au fur et à mesure que vous saisissez les réponses, le tableau en bas de la page est mis à jour pour afficher les codes de réponse et les valeurs de vos réponses.


Exemples de débogage courants

Instructions if() imbriquées (logique conditionnelle)

EM prend en charge la fonction « if(test,do_if_true,do_if_false) » afin que vous puissiez effectuer une logique conditionnelle ou une personnalisation. Cette fonction peut être imbriquée pour faire l'équivalent de "if { } else if { } else { }". EM vous fera savoir si les parenthèses ne sont pas équilibrées (par exemple, s'il vous manque une parenthèse fermante droite), ou si vous avez des parenthèses droites supplémentaires. Vous devriez essayer de compter les parenthèses lorsque vous composez de longues instructions if imbriquées, les enregistrer, vérifier les erreurs de syntaxe et les corriger si elles sont trouvées. Vérifions ensemble l'exemple ci-dessous.

Le groupe de questions utilisé ci-dessous est accessible à partir d'ici : Tailoring Survey example.lsg


Tout d’abord, sans rien saisir, vous voyez simplement « Bonjour ».



Si vous saisissez un nom, le message "Bonjour {nom}" s'affiche.



Si vous indiquez un âge, vous recevez un message personnalisé, selon que vous êtes un enfant d'âge préscolaire ou non :



Âge scolaire, adolescent ou adulte. Voici un adolescent qui souhaite rester anonyme :



Voici le fichier logique du groupe. Comme vous pouvez le voir dans la question « si basé », il existe des déclarations if imbriquées basées sur l'âge de la personne.



Lorsque vous modifiez initialement cette question, il est probable qu'à un moment donné, vous ayez un nombre de parenthèses incorrect. Voici ce qui se passe si vous en avez trop peu :



Si vous survolez le mot « si », qui est entouré d'un cadre rouge, il est indiqué « Parenthèses non équilibrées ». Dans ce cas, il devrait y avoir quatre parenthèses fermantes après « déjà adulte ! », mais il n’y en a que trois.

Si par contre vous disposez d’une parenthèse droite supplémentaire, elle sera entourée d’un cadre rouge, comme ceci :



Lorsque vous modifiez réellement la question, la question ressemble à ceci :