QCM en php

Résolu/Fermé
Fetide68 Messages postés 738 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 26 avril 2024 - 2 déc. 2010 à 15:33
Fetide68 Messages postés 738 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 26 avril 2024 - 3 déc. 2010 à 10:22
Bonjour,

Pour m'entrainer en php j'essaie de faire un QCM...

QCM avec question : "Quel département correspond au XX ?"; x étant donné au hasard.
et QCM avec 4 propositions dont la bonne réponse.

Je n'arrive à donner un ordre aléatoire pour les réponses et empêcher le programme d'afficher deux fois la même proposition.

Voilà ma source :

<?php
require ('tools/departements.php');	 
// Liste des départements : Extrait ci dessous:
// $dpt[1] = "01"; $departement[1]="Ain"; (valeurs préalabement déclarées en Array();

// Choix aléatoire d'un numéro de département pour la question :
$num=intval(rand(1,count($departement))); 

// Trois propositions au hasard (dont peut-être la bon :s !)
$propositions=Array();

// Les trois mauvaises réponses dans un tableau
for ($i=1;$i<=3;$i++) $propositions[$i]=$departement[intval(rand(1,count($departement)))];

// La bonne réponse à la fin du même tableau
$propositions[4]=$departement[$num];

// Affichage de la question et des propositions					
echo "<h1>$q. A quel département correspond le numéro ".$dpt[$num]." ?</h1>";
echo "<ul>";
		for ($i=1;$i<=count($propositions);$i++) {
			echo "<li id='prop[$i]'><input type='radio' value='".$propositions[$i]."' name='propositions' id='rep[$i]' onclick='A FAIRE' /> <label for='rep[$i]'>".$propositions[$i]."</label></li>";
		}
echo "</ul>";
?>


Si quelqu'un a une idée ?

Merci.
A voir également:

1 réponse

coeus Messages postés 3019 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 119
2 déc. 2010 à 21:04
Pour empêcher d'afficher deux fois la même proposition, tu peux progressivement remplir un array() avec un indice sur les propositions déjà utilisées, et tu vérifies à chaque fois que le script veut entrer une nouvelle proposition ; si celle qu'il avait en tête est déjà dans le array, il doit recommencer, jusqu'à ce qu'il tombe sur une proposition originale.

Et pour mettre tes propositions dans le désordre, tu peux utiliser un shuffle() sur ton array :
www.w3schools.com/php/func_array_shuffle.asp

J'espère que ça t'aide !
4
Fetide68 Messages postés 738 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 26 avril 2024 32
3 déc. 2010 à 10:22
Parfait ! Merci...
0