Exercices textes à trous

Balises

a marqué ce sujet comme résolu.

Bonjour à tous. Voilà, je développe une nouvelle version d’un site que j’ai créé pour mon épouse qui est enseignante. Dans celui-ci, elle peut créer des exercices pour les donner en devoirs à ses élèves.

Les exercices question => réponse ont été simples à implémenter, avec une question, une réponse.

Par contre, quand j’ai commencé à implémenter des exercices de textes à trous, ça a été plus compliqué. Je voulais donner la possibilité à l’utilisateur de pouvoir mettre, dans un même texte, plusieurs trous avec des réponses différentes.

Au début, j’avais l’organisation suivante : Dans une table 'question’, j’avais un champ 'content' avec un texte du genre : "Aujourd’hui, j’ai [[]] une pomme et j’ai [[]] un verre de sirop."

Ensuite, dans la même table, dans un champ 'correction’, j’avais les réponses qui se suivaient, comme par exemple ici : mangé;;;bu;;; (séparés par un caractère qui n’apparait pas dans un texte normal). A la correction, chaque mot était vérifié dans le bon ordre et comparé avec la correction.

Par la suite, j’ai adapté le système pour le rendre plus flexible et j’ai donné une 'id' à chaque question. La même question donnerait : "Aujourd’hui, j’ai [[1265]] une pomme et j’ai [[1266]] un verre de sirop." Puis, dans une table 'answers’, un champ 'content' avec 'mangé' (id:1265) et 'bu' (id:1266).

J’ai par la suite intégré un système de qcm, sur le même principe (c’est juste qu’il y a en plus une tables 'choices’ reliée à la 'question’, pour afficher une dropdown à la place d’un input vide).

Comme je vais refaire entièrement le site pour passer de php à Django, j’aimerais en profiter pour essayer de trouver la meilleure solution, c’est pourquoi je demande votre avis. Pensez-vous qu’il y a une meilleure façon de faire ?

Merci d’avance ! :)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte