|
kamal kamal
|
Mercredi 18 Février 2009 5:03:35 pm
céer un quiz
Bonjour tout le monde
je veux véer un quiz Avec une question et plusieurs réponses,Après sélection de réponse, et envoi du formulaire.
si
l’internaute a fourni la bonne réponse on affiche vraix si non on affiche erreur
j'atten vos reponses
merci d'avance.
salut
|
|
guillaume jupin
|
Jeudi 19 Février 2009 9:09:54 am
Re: céer un quiz
Bonjour,
J'ai fait il y a peu exactement la meme chose !
Moi c'est un questionnaire de 10 questions.
En fait j'ai ajouté une classe questionnaire avec un champ pour le libelle de la question, un champ de type option (liste de choix) ,un champ pour le "libelle de la mauvaise reponse", et un champ "bonne reponse" qui contiens le numero de la bonne reponse de mes options. j'ai pris pour identifiant de classe un champ numero.
Donc au final j'ai un repertoire "questionnaire" qui contiens mes 10 questions.
dans mon template collectedinfo je recupere le numero de l'option que l'utilisateur a saisie, si il correspond a mon champ "bonne reponse" alors je le redirige (javascript) vers la question suivante (j'increment mon idendifiant de classe que je traite de 1). Si c'est la mauvaise reponse j'affiche mon message "libelle de la mauvaise reponse" et un lien en dessous pour aller a la question suivante.
j'ai ajouté un test (si c'est la question 10) j'arréte le questionnaire...
Voila l'idée...
En esperant avoir pu vous aider !
cdt
Guillaumej02
|
|
guillaume jupin
|
Vendredi 20 Février 2009 2:16:04 pm
Re: céer un quiz
Voici mon code, a vous de l'adapter a votre situation.
PS : j'ai fait concordé la priorité avec l'identifiant de ma question : ex la question nomé 1 a la priorité 1.
Voici mon code :
<!-- #########################################################################################################!-->
<!-- ############################ Recuperation de la valeur de la liste de choix #########################!-->
<!-- #########################################################################################################!-->
{default collection=cond( $collection_id, fetch( content, collected_info_collection, hash( collection_id, $collection_id ) ),
fetch( content, collected_info_collection, hash( contentobject_id, $node.contentobject_id ) ) )}
{section loop=$collection.attributes}
<!-- On recupere la valeur de la liste des choix-->
{def $reponse=0}{set reponse=$:item.data_int}
{def $reponselibelle=0}{set reponselibelle=$:item.contentobject_attribute.value.option_list}
<!-- On ajoute 1 car les option commencent a 0 au lieu de 1... -->
{set reponse=$reponse|inc}
{/section}
{/default}
<!-- #########################################################################################################!-->
<!-- ############################ Affichage du message bon/mauvais et navigation #########################!-->
<!-- #########################################################################################################!-->
<!-- l'indentifiant du noeud correspond a la priorité -->
{def $offset=0}{set offset=$node.name}
<!-- nom de la qestion suivante -->
{def $next=0}{set next=$node.name} {set next=$next|inc}
{let children=fetch(content, list, hash( parent_node_id,159, sort_by, array('priority',true(),$node.node_id), class_filter_type, include, class_filter_array, array( 'question' )))}
{section name=Child max=1 offset=$offset loop=$children}
<!-- On test si la reponse est bonne -->
{if $:item.data_map.bonne_reponse.content|eq($reponse)}
<!-- c'est la bonne reponse -->
{if $next|le(9)}
<!-- C'est la bonne reponse et ce n'est pas la fin : on redirige a la question suivant -->
Bravo c'est la bonne réponse !
<SCRIPT LANGUAGE="JavaScript">
document.location.href={concat("/quizz/",$next)|ezurl}
</SCRIPT>
{else}
<!-- C'est la bonne reponse et c'est la fin -->
Bravo c'est la bonne réponse !
<a href={"/"|ezurl}>{ezini('SiteSettings')}Fin du questionnaire!</a>
{/if}
{else}
<!-- c'est la mauvaise reponse -->
{if $next|le(9)}
<!-- c'est la mauvaise reponse mais pas la fin alors on met le message et le liens vers la question suivante -->
{$:item.data_map.message.data_text}
<div id="mauvaise">
<a href={concat("/quizz/",$next)|ezurl}> QUESTION SUIVANTE </a>
</div>
{else}
<!-- c'est la mauvaise reponse et la fin alors on met le message seulement -->
{$:item.data_map.message.data_text}
<a href={"/"|ezurl}>{ezini('SiteSettings')}Fin du questionnaire!
{/if}
{/if}
{/section}
{/let}
Guillaumej02
|