[RESOLU] resultat non comforme

le loup solitaire
Invité n'ayant pas de compte PHPfrance

15 avr. 2016, 10:05

bonjour tout le monde.

j'ai un souci, je voudrai avoir deux choix: un choix 'un' et un choix 'une' avec dix questions, jusqu’à maintenant pas de message d'erreur, mais sur dix réponses voulu, je n'en ai qu'une, pourquoi?
<?php
				
				
				$reponses = array(
				  'chx'   => array('reponse' => 'une', 'mot' => 'route'),
				  'chx_1' => array('reponse' => 'un', 'mot' => 'four'),
				  'chx_2' => array('reponse' => 'un', 'mot' => 'bouton'), 
				  'chx_3' => array('reponse' => 'un', 'mot' => 'jour'), 
				  'chx_4' => array('reponse' => 'une', 'mot' => 'poubelle'), 
				  'chx_5' => array('reponse' => 'un', 'mot' => 'nouveau'),
				  'chx_6' => array('reponse' => 'un', 'mot' => 'trou'),
				  'chx_7' => array('reponse' => 'une', 'mot' => 'nouvelle'), 
				  'chx_8' => array('reponse' => 'un', 'mot' => 'tournevis'),
				  'chx_9' => array('reponse' => 'une', 'mot' => 'douche'),
				);
			
				foreach($reponses as $cle => $reponse){
			
				 $choix = array (
				
					'un' =>'un','une'=>'une'
				
				);
				foreach($choix as $key => $value_choix){
					
					echo '<p><input type="checkbox" name="'.$cle.'" value="'.$reponse['reponse'].'" />'.$key.'</p>';
				
					}
						echo'<p></p><p><b>'.$reponse['mot'].'</b></p><br />';
				}
				if(isset($_POST['correction'])){
					
					//print_r($_POST['correction']);
					$cle= $_POST[$cle];
					
					if(empty($cle)){
						
					$msg = '<p>veuillez remplir tous les champs</p>';
					
					echo $msg;
						
					}else if($cle <= $reponses){
					
						echo $cle;
						
						$cle++;
					}
					
				}	
				?>
merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 avr. 2016, 10:11

Bonjour,

A priori ici :
echo '<p><input type="checkbox" name="'.$cle.'" value="'.$reponse['reponse'].'" />'.$key.'</p>';
, ce n'est pas $reponse['reponse'] qu'il faut utiliser en valeur, mais $value_choix, sinon toutes les réponses seront toujours bonnes :)

Edit : pour le problème de boucle, le if (isset($_POST['correction'])) est en dehors de la boucle, il n'est donc pas répété autant de fois qu'il y a de questions... ton code est mal indenté, aligne les accolades, cela sera flagrant :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 1967 Messages

15 avr. 2016, 10:31

Dans ta boucle, $cle est un string, mais tu le traite parfois comme un nombre dans ta condition ou avec un $cle++ tout à fait inutile car redéfini à chaque itération de boucle
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 avr. 2016, 10:37

Et le name ne devrait il pas plutot être du type $cle.$key
Pour éviter des input au nom redondant ?
Je pense qu'il faudrait surtout que le type de champ soit un bouton radio et non une case à cocher. Il ne devrait à priori y avoir qu'une seule réponse possible à chaque question, le bouton radio est dès lors tout indiqué et permet de conserver le même nom de champ pour l'ensemble des boutons d'un même groupe :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

le loup solitaire
Invité n'ayant pas de compte PHPfrance

15 avr. 2016, 19:02

merci pour vos reponses