Petit QCM en PHP

Eléphant du PHP | 139 Messages

14 avr. 2005, 17:01

Voila, je cherchais le moyen de résoudre le problème de Moker ici :
http://www.phpfrance.com/forums/voir_su ... ponse1.php

Appeler plusieurs fois le même formulaire sans perdre les données des premières réponses.

Alors, je me suis dit pourquoi pas faire un petit Questionnaire à choix multiple en une page pour vérifier que ça fonctionne !!!

C’est ce que j’ai fait !!

Voici le code :
<?php
$question[0]="Quel âge avez-vous ?|Moins de 18 ans|Plus de 18 ans";
$question[1]="Comment trouvez-vous le site/forum de PHPFrance ?|Pas mal|Bien|Génial|Extraordinaire";
$question[2]="Votre niveau en PHP est ?|Débutant|Initié|Expert";
if (isset($_POST['nb'])) { $nb=$_POST['nb']; }else{ $nb=0; }
if (isset($_POST['reponse'])) { $reponse=$_POST['reponse'].$_POST['rep']."," ; }else{ $reponse=""; }
if ($nb < count($question))
{
 ?>
 <form name="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
 <?php 
 $laqueston=explode("|",$question[$nb]);
 echo $laqueston[0]."<br><br>"; 
 for ($nbr_rep=1; $nbr_rep < count($laqueston); $nbr_rep++)
 {
 	?>
 	<input type="radio" name="rep" value="<?php echo $nbr_rep; ?>" <?php if ($nbr_rep==1) echo "checked"; ?>><?php echo $laqueston[$nbr_rep]."<br>"; 
  }
  ?>
 <br>
 <input type="hidden" name="reponse" value="<?php echo $reponse; ?>">
 <input type="hidden" name="nb" value="<?php echo $nb+1; ?>"> 
 <input type="submit" name="envoyer" value="Envoyer"><br> 
 </form>
<?php
}else{
$rep=explode(",", $reponse);
 echo "Terminer<br><br>";
 for ($i=0; $i <= count($reponse)+1; $i++)
 {
 	$laqueston=explode("|",$question[$i]);
 	echo "A la question : <font color=\"FF0000\">".$laqueston[0]."</font> Vous avez répondu <font color=\"00FF00\">".$laqueston[$rep[$i]]."</font><br>";
 }
}

?>
Je me suis dit que ça pouvait toujours servir à l’un ou l’autre.

Exemple d’utilisation : dans formulaire d’inscription, un sondage, un quiz,…. A vous de voir.
(Moi j’affiche les résultats, mais rien ne vous empêche de les stocker dans une base de données par exemple ou un fichier).

Mammouth du PHP | 859 Messages

14 avr. 2005, 17:06

Bien joué ;)

MI7
Petit nouveau ! | 6 Messages

14 sept. 2019, 00:56

Je remonte un vieux thread de 2005 je suis tombé dessus via google, puis quand j'ai testé le code a la toute fin j'avais une erreur de tableau donc j'ai fais une correction: $reponse[0] : fonctionne A1 :)

j'ai fais quel que modification.

tout fois auriez vous une idée pour la ligne 58 j'ai écrit echo " A la question " :
j'aimerais que sa soit écrit question 1 ensuite 2 ensuite 3. j'ai tenter de créer une variable dans la boucle for ligne 54 et j'ai fais un test : $x = 1; puis $x +=1; de cette façon a tout les fois que la boucle fait un tour ma variable monte de +1 mais cela n'a pas fonctionné.
<?php
$question[0]="John F. Kennedy à été |Un ami personnel de Fidel Castro|Le leader de la révolution américaine|Assassiné en 1963 par Jack Ruby|Assassiné à Dallas en 1963";
$question[1]="Quel président américain fut assassiné en 1865?|Abraham Lincoln|George Washington|Richard Nixon|Andrew Johnson";
$question[2]="Il s'est lui-même fait nommer président à vie d’Haïti. C'est son fils Jean-Claude qui lui a succédé en 1971?|P.E. Trudeau|Richard Hatfield|François Duvalier|Ernesto « Che » Guevara";

$reponseq[0]="Assassiné à Dallas en 1963";
$reponseq[1]="Abraham Lincoln";
$reponseq[2]="François Duvalier";

$note = 0;
if (isset($_POST['nb'])) 
{ 
    $nb=$_POST['nb']; 
}
else
{ 
    $nb=0; 
}

if (isset($_POST['reponse'])) 
{ 
    $reponse[0]=$_POST['reponse'].$_POST['rep']."," ; 
}
else
{ 
    $reponse[0]=""; 
}

if ($nb < count($question))
{
 ?>
 <form name="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
 <?php 
 $laqueston=explode("|",$question[$nb]);
 echo $laqueston[0]."<br><br>"; 
 for ($nbr_rep=1; $nbr_rep < count($laqueston); $nbr_rep++)
{
 	?>
 	<input type="radio" name="rep" value="<?php echo $nbr_rep; ?>" <?php if ($nbr_rep==1) echo "checked"; ?>><?php echo $laqueston[$nbr_rep]."<br>"; 
}
 ?>
 <br>
 <input type="hidden" name="reponse" value="<?php echo $reponse[0]; ?>">
 <input type="hidden" name="nb" value="<?php echo $nb+1; ?>"> 
 <input type="submit" name="envoyer" value="Envoyer"><br> 
 </form>
<?php
}
else
{
$rep=explode(",", $reponse[0]);
 echo "Terminer<br><br>";
	
	for ($i=0; $i <= count($reponse)+1; $i++)
	{   
		
		$laqueston=explode("|",$question[$i]);
		echo "A la question " . $note . ": <font color=\"FF0000\"> " . $laqueston[0] . "</font><br> Vous avez répondu  " . $laqueston[$rep[$i]] . "<br> Reponse :"  . $reponseq[$i] . "<br><br>";	
	}
}
?>