Check out the LimeSurvey source code on GitHub!

Créer et remplir un champ dans lime_survey_4###

More
2 years 11 months ago #104002 by bermone
Bonjour,

Je développe en ce moment une application où chaque utilisateur est définie par son identifiant unique. Ce identifiant est la clé pour la jointure entre plusieurs élément d'enquête de l'application.
J'aime de ce fait créer un champ 'uid' dans la table lime_survey_(code de mon questionnaire) qui me permettra de poser une condition d'évolution lors de la réponse aux enquetes de l'application que je développe.
Pour faire simple je voudrais forcer les utilisateurs de mon appli à terminer la reponse du questionnaire lime survey avant de passer à la réponse d'un autre genre de questionnaire qui n'est pas du lime survey.

Pourriez vous m'aider à créer ce champ 'uid' au demarrage du questionnaire par un user?

bien cordialement

Please Log in to join the conversation.

More
2 years 11 months ago #104158 by bermone
Bonjour,

J'ai trouvé la solution pour ceux à qui ça pourrait intéresser.

Posons :
Table : correspond à la table 'lime_survey_(Code)'. C'est la table où est enregistré toutes les réponses au questionnaire.
Code : Correspond à l'identifiant du questionnaire
N : Représente le nombre d'enregistrement de 'Table' correspondant à un membre inscrit. Chaque membre inscrit est défini par un identifiant unique ('UID')
n : Correspond au nombre d'enregistrement dans 'Table'
Q : Correspond à l'identifiant de la question référence. (Cette question référence est une question cachée que j'ai crée pour facilité la transition de l'information")

J'ai créé une page php avec le lien du questionnaire en iframe. Les membres de l'application répondent au questionnaire à travers cette page. A l'ouverture de la page:
  1. Vérification enregistrements de 'Table'
    Dans un premier temps, le systeme vérifie l'état de Table. Pour se faire, il détermine n avec la fonction mysql_num_rows de php. Si n=0, c'est qu'il n'y a eu aucune réponse à notre questionnaire, on crée alors le champ uid. Si n!=0 alors il y a eu des réponses au questionnaire, par conséquent, le champ uid a été créé.
  2. Mise à jour du champ 'uid'
    Etant donnée qu'on peut pré-remplir un champ limesurvey depuis l'url du questionnaire
    - http://localhost/limesurvey/index.php/Code/lang-fr?Code&Q=UID
    Cette requête 'GET' donne pour valeur 'UID' à la question 'Q'. La suite de la démarche est de faire une mise à jour du champ uid de 'Table' avec pour valeur celle de la question 'Q'. Pourquoi cette manipulation? Tout simplement parce que j'ai remarqué que la question 'Q' se vide et passe à 'null' par la suite. Ne me demandez pas pourquoi, je ne saurai vous répondre.
  3. Réajustement de 'Table'
    J'ai pu constater que limesurvey fonctionne au cookies. C'est à dire que chaque enregistrement fait référence a un cookie à un instant 't'. Ce qui peut être embêtant si l'on souhaite que chaque enregistrement corresponde à un membre inscrit de notre application.
    Pour palier à cette difficulté, j'ai créer un script ajax, qui avec php vont quotidiennement:
    • Calculer N
    • Si N > 1, supprimer le plus vieux enregistrement où submitdate = 'Null'
    [/ul]

Bon, voila comment j'ai réussi à résoudre mon problème. Ce marche très bien. J'espère que ça servira à d'autres. Et si vous pensez pouvoir optimiser la démarche, n'hésitez pas à laisser un commentaire

Please Log in to join the conversation.

More
2 years 11 months ago #104180 by DenisChenu
Salut,

Oui, je fais aussi avec l'adresse email pour la recherche des fois.
A partir du moment ou tu as accès à la BDD, et que tu sais faire un peu de PHP :).

Par contre : Forum FR

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand (or search sondages pro).
The following user(s) said Thank You: bermone

Please Log in to join the conversation.

Moderators: Nickko
Imprint                   Privacy policy         General Terms & Conditions         Revocation information and revocation form