Questionnaire XML/XSLT (et réponses en PHP)

Eléphant du PHP | 398 Messages

08 mars 2008, 16:20

Pour un projet de la fac, j ai un questionnaire XML/XSLT/PHP à faire et éprouve quelques difficultés, notamment en XSLT dans un premier temps, et PHP dans un 2nd temps.

Mon fichier XML se présente de ce style :

Code : Tout sélectionner

<sous_qcm matiere="informatique"> <question> <libelle>Ma question gnagnia ?</libelle> <choix score="0">Reponse 1</choix> <choix score="0">Reponse 2</choix> <choix score="1">Reponse 3</choix> </question> </sous_qcm>
Donc comme on peut le voir, une bonne réponse vaut 1 et une mauvaise réponse 0. Le .xml ne pose aucun soucis.

Le .xsl, lui récupère les données et les traite. Mon soucis repose sur l'affichage des réponses. En effet, mon prof souhaite que en cas de mauvaise réponse choisie, on attache la bonne réponse (pour être envoyé et traitée par le PHP ensuite).

Code : Tout sélectionner

<xsl:template match="choix"> <div id="reponse"> <input type="radio" name="{count(preceding::question)+1}" value="{@score}" style="border:#999999 1px solid;" /> <em><xsl:value-of select="." /></em> valeur:<xsl:value-of select="@score" /><!-- Affiche la reponse --> <!-- il faut attacher la bonne reponse (lettre b)en cas de mauvaise réponse --> <xsl:if test="@score == 0"> <input type="hidden" value="b" /> </xsl:if> </div> </xsl:template>
Le probleme réside dans le <xsl:if>. Je ne sais pas trop comment l'attacher. De plus, j ai dans mon code un

Code : Tout sélectionner

<xsl:value-of select="concat('Q',count(preceding::question)+1)" />
mais je sais pas quoi en faire, je l'ai pris au tableau...
Je pense qu'il va servir dans la clause if...

Pour le PHP, voici le code pour l'instant, si ça peut aider :
<?php
$resultat = 0;

$chaine = $_SERVER["QUERY_STRING"]; //chaine recuperer
echo $chaine,'<br />'; //affichage de la chaine recuperer

foreach($_GET as $key=>$val){
	//$key correspond au numero des questions
	//$val correspond au point des réponses
	$pc = substr($key,0,1); //recupere le 1er caractere de la chaine
	if($pc == "b"){ //si le 1er caractere est b
		$num = substr($key,1);
		$bonneRep[$num] = $val;
	}
	else{
		$score[$key] = $val;
	}
}	

echo '<hr /> Resultat score total : '.$resultat;
?> 
Merci d'avance ;)
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe