IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Inserer une condition


Sujet :

Langage PHP

  1. #1
    Membre à l'essai Avatar de kentaro
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Points : 17
    Points
    17
    Par défaut Inserer une condition
    bonjour
    j’essaye d’intégrer une condition basique au code ,mais ma condition ne fonctionne pas ,étant débutant je ne comprend pas pourquoi, j'ai mentionner dans le code l'endroit ou sa bloque par "mon probleme est ici ,merci pour votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php
    $array = array('1'=>array('libelle'=>'je vois grace à ','img'=>null,
    	'choix'=>array
    		('mes yeux.'=>true,
    		'ma tete.'=>false,
    		'mon nez.'=>false)),
    	'2'=>array('libelle'=>'je sens grace à . ','img'=>Null,
    		'choix'=>array
    			('mon bras.'=>false,
    			'mon nez.'=>true,
    			'mon coude.'=>false)),
    	'3'=>array('libelle'=>'high kick dans la gueule grace à','img'=>Null,
    		'choix'=>array
    			('mon pied.'=>true,
    			'mon genoux.'=>false,
    			'mon orteil.'=>false)));
    echo "<form action='test.php' method='post'>";
    foreach($array as $num=>$question){
        echo '<h3>'.'QUESTION '.$num.'</h3>'.$array[$num]['img'].'<br />'.' -'.$array[$num]['libelle'].' :<br />';
        foreach($question['choix'] as $reponse=>$choix){
            echo '<input type="checkbox" name="choice['.$num.'][]"  value="'.$reponse.''.$choix.'">'.$reponse.'<br />';
        }
        echo '<p />';
    }
    echo'<input type="RESET" value="Effacer" />';
    echo'<input type="SUBMIT" name="btn_valid" value="Valider" />';
    echo'</form>';
    if(isset($_POST['choice'])){
    	print_r ($_POST['choice']); 
        foreach ($array as $num => $question){
            echo'<p />QUESTION '.$num.' - '.$array[$num]['libelle'].' : <br />';
            echo '--->vous avez repondu : ';
    // mon probleme est ici ************************************************		
    	if ($_POST["choice"]){
    		echo "la reponse est juste";
    	}
    	else{
    		echo "la reponse est fausse";
    	}
    //************************************************
        }
    }
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Déjà tu n'as pas besoin d'indiquer dans le formulaire si la réponse est bonne ou fausse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     foreach($question['choix'] as $reponse=>$choix){
            echo '<input type="checkbox" name="choice['.$num.'][]"  value="'.$reponse.'">'.$reponse.'<br />';
        }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    foreach ($array as $num => $question){
        echo'<p />QUESTION '.$num.' - '.$array[$num]['libelle'].' : <br />';
        echo '--->vous avez repondu : ';
     
        if(isset($_POST['choice'][$num])) {
              $reponse = $_POST['choice'][$num];
              echo $reponse;
     
              if ($array[$num]['choix'][$reponse] == TRUE) {
                    //bonne réponse
              }
              else {
                   // mauvaise réponse
              }
       }
    }
    Fais attention à tes dénominations.
    Un coup tu as mis "choice" un coup tu as mis "choix"
    Appeller un tableau "array" ce n'est pas génial.

  3. #3
    Membre à l'essai Avatar de kentaro
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    Salut sabotage et merci pour ton aide.
    helas le code ne fonctionne pas ,j'ai essayé de chercher l'erreur durant toute la soirée,mais je ne trouve pas.

    Citation Envoyé par sabotage Voir le message
    Déjà tu n'as pas besoin d'indiquer dans le formulaire si la réponse est bonne ou fausse :
    justement après j'ai l'intention de compter le nombre de 'true' grâce à la fonction count

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     foreach($question['choix'] as $reponse=>$choix){
            echo '<input type="checkbox" name="choice['.$num.'][]"  value="'.$reponse.'">'.$reponse.'<br />';
        }
    je constate que tu as enlever $choix à 'value' je pensais qu'il etait utile vu qu'il contiens 'true' et 'false'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    foreach ($array as $num => $question){
        echo'<p />QUESTION '.$num.' - '.$array[$num]['libelle'].' : <br />';
        echo '--->vous avez repondu : ';
     
        if(isset($_POST['choice'][$num])) {
              $reponse = $_POST['choice'][$num];
              echo $reponse;
     
              if ($array[$num]['choix'][$reponse] == TRUE) {
                    //bonne réponse
              }
              else {
                   // mauvaise réponse
              }
       }
    }
    Citation Envoyé par sabotage Voir le message
    Fais attention à tes dénominations.
    Un coup tu as mis "choice" un coup tu as mis "choix"
    Appeller un tableau "array" ce n'est pas génial.
    merci pour ces éléments je ferais la correction.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    je constate que tu as enlever $choix à 'value' je pensais qu'il etait utile vu qu'il contiens 'true' et 'false'
    C'est comme dans un questionnaire papier : tu n'écris pas Vrai/Faux a côté des réponses.
    Le candidat te rends sa copie (envoi le formulaire) et tu regardes dans ta grille de réponses ($array) si les réponses qu'il a données ($_POST['choice']) sont bonnes.

  5. #5
    Membre à l'essai Avatar de kentaro
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    merci pour ces précisions sabotage

    concernant mon code ,le précédent me donner une erreur de type
    "Notice: Undefined variable: array in F:\LiberKey\MyApps\UwAmp\www\Nouveau dossier\test.php on line 62" (je travail directement sur ma cle usb)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php
    /********************************************************/
    $qcm = array('1'=>array(
    	'libelle'=>'je vois grace à ','img'=>null,
    	'choix'=>array(
    		'mes yeux.'=>true,
    		'ma tete.'=>false,
    		'mon nez.'=>false)),
    '2'=>array(
    	'libelle'=>'je sens grace à . ','img'=>Null,
    	'choix'=>array(
    		'mon bras.'=>false,
    		'mon nez.'=>true,
    		'mon coude.'=>false)),
    '3'=>array(
    	'libelle'=>'high kick dans la gueule grace à','img'=>Null,
    	'choix'=>array(
    		'mon pied.'=>true,
    		'mon genoux.'=>false,
    		'mon orteil.'=>false)));
    /********************************************************/
    echo "<form action='test.php' method='post'>";
    // $num= '1','2','3'.
    //$question='libelle','img','choix'.
    foreach($qcm as $num=>$question){
        echo '<h3>'.'QUESTION '.$num.'</h3>'.$qcm[$num]['img'].'<br />'.' -'.$qcm[$num]['libelle'].' :<br />';
    //$reponse='mes yeux','ma tete','mon nez' (pour la question 1)
    //$choix='true','false','false'
    	foreach($question['choix'] as $reponse=>$choix){
    		echo '<input type="checkbox" name="reponse_box['.$num.'][]"  value="'.$reponse.'">'.$reponse.'<br />';
    	}
    	echo '<p />';	
    }
    echo'<input type="RESET" value="Effacer" />';
    echo'<input type="SUBMIT" name="btn_valid" value="Valider" />';
    echo'</form>';
    /*****************************************************/
    if(isset($_POST['reponse_box'])){
    	//print_r ($_POST['reponse_box']); 
    	foreach ($array as $num => $question){
    		echo'<p />QUESTION '.$num.' - '.$array[$num]['libelle'].' : <br />';
    		echo '--->vous avez repondu : ';
    		if(isset($_POST['choice'][$num])) {
    			$reponse = $_POST['choice'][$num];
    			echo $reponse;
    			if ($array[$num]['choix'][$reponse] == TRUE) {
    				echo'bonne réponse';
    			}
    			else {
    				echo'mauvaise réponse';
    			}
    		}
    	}
    }
    ?>
    suite à cette erreur j'ai ajouté un nouvelle boucle( foreach) pour prendre en considération le true/false ($choix) , je n'ai certe plus de message d'erreur , mais ma condition ne se fait pas correctement ,puisque qu'elle me répond par la négative , alors que la réponse est juste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <?php
    /****************************************************/
    $qcm = array('1'=>array(
    	'libelle'=>'je vois grace à ','img'=>null,
    	'choix'=>array(
    		'mes yeux.'=>true,
    		'ma tete.'=>false,
    		'mon nez.'=>false)),
    '2'=>array(
    	'libelle'=>'je sens grace à . ','img'=>Null,
    	'choix'=>array(
    		'mon bras.'=>false,
    		'mon nez.'=>true,
    		'mon coude.'=>false)),
    '3'=>array(
    	'libelle'=>'high kick dans la gueule grace à','img'=>Null,
    	'choix'=>array(
    		'mon pied.'=>true,
    		'mon genoux.'=>false,
    		'mon orteil.'=>false)));
    /**************************************************/
    echo "<form action='test.php' method='post'>";
    // $num= '1','2','3'.
    //$question='libelle','img','choix'.
    foreach($qcm as $num=>$question){
        echo '<h3>'.'QUESTION '.$num.'</h3>'.$qcm[$num]['img'].'<br />'.' -'.$qcm[$num]['libelle'].' :<br />';
    //$reponse='mes yeux','ma tete','mon nez' (pour la question 1)
    //$choix='true','false','false'
    	foreach($question['choix'] as $reponse=>$choix){
    		echo '<input type="checkbox" name="reponse_box['.$num.'][]"  value="'.$reponse.'">'.$reponse.'<br />';
    	}
    	echo '<p />';
    }
    echo'<input type="RESET" value="Effacer" />';
    echo'<input type="SUBMIT" name="btn_valid" value="Valider" />';
    echo'</form>';
    /*************************************************************/
    if(isset($_POST['reponse_box'])){
    	print_r ($_POST['reponse_box']);
    	foreach ($qcm as $num => $question){
    		echo'<p />QUESTION '.$num.' - '.$qcm[$num]['libelle'].' : <br />';
    		echo '--->vous avez repondu : ';
    		foreach($question['choix'] as $reponse=>$choix){
    			if(isset($_POST['reponse_box'][$num])) {
    				echo $reponse;
    				if ($qcm[$num]['choix'][$reponse][$choix] == true) {//if ($qcm[$num]['choix'][$reponse] == TRUE) {
    					echo'<br />bonne réponse';
    				}
    				else {
    					echo'<br />mauvaise réponse';
    				}
    			}break;
    		}	
    	}
    }
    ?>
    Merci pour votre aide

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Notice: Undefined variable: array
    Normal : tu as renomme $array en $qcm

  7. #7
    Membre à l'essai Avatar de kentaro
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    oups en effet... , cependant je viens de faire la rectification et j'ai maintenant une nouvelle erreur qui est la suivante :
    "Array to string conversion in F:\LiberKey\MyApps\UwAmp\www\Nouveau dossier\test.php on line 74"

    en y regardant de plus pret "echo $reponse;" ne me revois que "array" ,alors que "print_r ($reponse);" me renvois bien "Array ( [0] => mes yeux. ) " il y a, il me semble une erreur a ce niveau sur la fonction "echo" , j'ai tenté l'utilisation de la fonction explode mais rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    if(isset($_POST['reponse_box'])){
    	foreach ($qcm as $num => $question){
    		echo'<p />QUESTION '.$num.' - '.$qcm[$num]['libelle'].' : <br />';
    		echo '--->vous avez repondu : '
    		if(isset($_POST['reponse_box'][$num])) {
    			$reponse = $_POST['reponse_box'][$num];
    			//$reponse = explode( "",$_POST['reponse_box'][$num]);
                            //print_r ($reponse);
    			echo $reponse;
    			if ($qcm[$num]['choix'][$reponse] == true) {
    				echo'<br />bonne réponse';
    			}
    			else {
    				echo'<br />mauvaise réponse';
    			}
    		}
    	}
    }
    concernant la condition elle reste bloquer sur "mauvais réponse..."

    merci pour votre

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Avec des checkbox, on peut cocher plusieurs réponses différentes pour une même question.
    Est-ce voulu et si oui, comment cela doit-il être geré ?

  9. #9
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par kentaro Voir le message
    oups en effet... , cependant je viens de faire la rectification et j'ai maintenant une nouvelle erreur qui est la suivante :
    "Array to string conversion in F:\LiberKey\MyApps\UwAmp\www\Nouveau dossier\test.php on line 74"

    en y regardant de plus pret "echo $reponse;" ne me revois que "array" ,alors que "print_r ($reponse);" me renvois bien "Array ( [0] => mes yeux. ) " il y a, il me semble une erreur a ce niveau sur la fonction "echo" , j'ai tenté l'utilisation de la fonction explode mais rien.
    echo affiche une chaine de caractères. Donc si ce que tu lui passes en "paramètres" n'est pas une chaine de caractères, echo va appliquer une conversion en chaine de caractères. Ce qui pour un tableau va renvoyer "Array"

    explode transforme une chaine en tableau. Si tu veux concaténer un tableau, je te conseille plutôt implode.

    Mais Sabotage a raison : si tu es censé avoir une seule réponse correcte par question, ce ne sont pas des checkboxes qu'il faut utiliser, mais plutôt des boutons radio.

  10. #10
    Membre à l'essai Avatar de kentaro
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Avec des checkbox, on peut cocher plusieurs réponses différentes pour une même question.
    Est-ce voulu et si oui, comment cela doit-il être geré ?
    oui c'est voulu , il peux y avoir 1 ou 2 "true" par question .

    Citation Envoyé par Celira Voir le message
    echo affiche une chaine de caractères. Donc si ce que tu lui passes en "paramètres" n'est pas une chaine de caractères, echo va appliquer une conversion en chaine de caractères. Ce qui pour un tableau va renvoyer "Array"

    explode transforme une chaine en tableau. Si tu veux concaténer un tableau, je te conseille plutôt implode.

    Mais Sabotage a raison : si tu es censé avoir une seule réponse correcte par question, ce ne sont pas des checkboxes qu'il faut utiliser, mais plutôt des boutons radio.
    merci celira l'utilisation de implode m'a permit de debloquer la situation.

    maintenant le code fonctionne cependant quand je mets de 2 "true" à la question j'ai l'erreur suivant :

    Notice: Undefined index: mes yeux.,ma tete. in F:\LiberKey\MyApps\UwAmp\www\Nouveau dossier\test.php on line 73
    Notice: Undefined index: mes yeux.,ma tete. in F:\LiberKey\MyApps\UwAmp\www\Nouveau dossier\test.php on line 80

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    $qcm = array('1'=>array ('libelle'=>'je vois grace à ','img'=>null, 'choix'=>array
    	('mes yeux.'=>true,
    	'ma tete.'=>true,
    	'mon nez.'=>false)),
    '2'=>array ('libelle'=>'je sens grace à . ','img'=>Null, 'choix'=>array
    	('mon bras.'=>false,
    	'mon nez.'=>true,
    	'mon coude.'=>false)),
    '3'=>array ('libelle'=>'high kick dans la gueule grace à','img'=>Null, 'choix'=>array
    	('mon pied.'=>true,
    	'mon genoux.'=>false,
    	'mon orteil.'=>false)));
    //***************************************************
    echo "<form action='test.php' method='post'>";
    // $num= '1','2','3'.
    //$question='libelle','img','choix'.
    foreach($qcm as $num=>$question){
        echo '<h3>'.'QUESTION '.$num.'</h3>'.$qcm[$num]['img'].'<br />'.' -'.$qcm[$num]['libelle'].' :<br />';
    //$reponse='mes yeux','ma tete','mon nez' (pour la question 1)
    //$choix='true','false','false'
    	foreach($question['choix'] as $reponse=>$choix){
    		echo '<input type="checkbox" name="reponse_box['.$num.'][]"  value="'.$reponse.'">'.$reponse.'<br />';
    	}
    	echo '<p />';
    }
    echo'<input type="RESET" value="Effacer" />';
    echo'<input type="SUBMIT" name="btn_valid" value="Valider" />';
    echo'</form>';
    //***************************************************
    if(isset($_POST['reponse_box'])){
    	print_r ($_POST['reponse_box']); 
    	foreach ($qcm as $num => $question){
    		echo'<p />QUESTION '.$num.' - '.$qcm[$num]['libelle'].' : <br />';
    		echo '--->vous avez repondu : ';
    		if(isset($_POST['reponse_box'][$num])){
    			$reponse = implode(",", $_POST['reponse_box'][$num]); 
    			echo $reponse;
    			if ($qcm[$num]['choix'][$reponse] == true)//if ($qcm[$num]['choix'][$reponse] == true){
    				echo'<br />une ou plusieurs reponses sont justes';	
    			}
    			elseif ($qcm[$num]['choix'][$reponse] != true)//elseif ($qcm[$num]['choix'][$reponse] == false){
    				echo'<br />mauvaise réponse';		
    			}
    		}
    		else{
    			echo'<br />Aucune reponse de votre part';
    		}	
    		//$resultat[] = count(array_filter($_POST['reponse_box'][$num]));
    	}	
    	echo'<br />nombre de reponse juste';
    	//echo array_sum($resultat);		
    }


    malgré mes multiples essais , je n'arrive pas à trouver l'erreur
    merci pour votre aide.

  11. #11
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Le probleme est indiqué en rouge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    $qcm = array(
            '1'=>array (
                'libelle'=>'je vois grace à ',
                'img'=>null, 
                'choix'=>array(
                    'mes yeux.'=>true,
                    'ma tete.'=>true,
                    'mon nez.'=>false)
             ), 
    		'2'=>array (
                'libelle'=>'je sens grace à . ',
                'img'=>Null, 
                'choix'=>array(
                    'mon bras.'=>false,
                    'mon nez.'=>true,
                    'mon coude.'=>false)
            ), 
    		'3'=>array (
                'libelle'=>'high kick dans la gueule grace à',
                'img'=>Null, 
                'choix'=>array(
                    'mon pied.'=>true,
                    'mon genoux.'=>false,
                    'mon orteil.'=>false)
            )
          );
     
    echo "<form action='test.php' method='post'>"; 
    // $num= '1','2','3'.
    //$question='libelle','img','choix'.
    foreach($qcm as $num=>$question){
        echo '<h3>'.'QUESTION '.$num.'</h3>'.$qcm[$num]['img'].'<br />'.' -'.$qcm[$num]['libelle'].' :<br />'; 
     
        foreach($question['choix'] as $reponse=>$choix){
            echo '<input type="checkbox" name="reponse_box['.$num.'][]"  value="'.$reponse.'">'.$reponse.'<br />';
        }
        echo '<p />'; 
    } 
    echo'<input type="RESET" value="Effacer" />';
    echo'<input type="SUBMIT" name="btn_valid" value="Valider" />';
    echo'</form>';
     
    if(isset($_POST['reponse_box'])){
        print_r ($_POST['reponse_box']); 
    
        foreach ($qcm as $num => $question){
            echo'<p />QUESTION '.$num.' - '.$question['libelle'].' : <br />';
            echo '--->vous avez repondu : ';
    
            if(isset($_POST['reponse_box'][$num])){
    
                $reponse = implode(",", $_POST['reponse_box'][$num]); 
                echo $reponse;
                // TU AS UN PROBLEME ICI : tu dois parcourrir chaque  $_POST['reponse_box'][$num] pour les comparer et non le implode
                if (!empty($question['choix'][$reponse])){
                    echo'<br />une ou plusieurs reponses sont justes';	
                } else {
                    echo'<br />mauvaise réponse';		
                }
            } else {
                echo'<br />Aucune reponse de votre part';
            } 
        }	
        echo'<br />nombre de reponse juste';
    }

    EDIT : solution possible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    $qcm = array(
            '1'=>array (
                'libelle'=>'je vois grace à ',
                'img'=>null, 
                'choix'=>array(
                    'mes yeux.'=>true,
                    'ma tete.'=>true,
                    'mon nez.'=>false)
             ), 
    		'2'=>array (
                'libelle'=>'je sens grace à . ',
                'img'=>Null, 
                'choix'=>array(
                    'mon bras.'=>false,
                    'mon nez.'=>true,
                    'mon coude.'=>false)
            ), 
    		'3'=>array (
                'libelle'=>'high kick dans la gueule grace à',
                'img'=>Null, 
                'choix'=>array(
                    'mon pied.'=>true,
                    'mon genoux.'=>false,
                    'mon orteil.'=>false)
            )
          );
     
    echo "<form action='test.php' method='post'>"; 
    // $num= '1','2','3'.
    //$question='libelle','img','choix'.
    foreach($qcm as $num=>$question){
        echo '<h3>'.'QUESTION '.$num.'</h3>'.$qcm[$num]['img'].'<br />'.' -'.$qcm[$num]['libelle'].' :<br />'; 
     
        foreach($question['choix'] as $reponse=>$choix){
            echo '<input type="checkbox" name="reponse_box['.$num.'][]"  value="'.$reponse.'">'.$reponse.'<br />';
        }
        echo '<p />'; 
    } 
    echo'<input type="RESET" value="Effacer" />';
    echo'<input type="SUBMIT" name="btn_valid" value="Valider" />';
    echo'</form>';
     
    if(isset($_POST['reponse_box'])){
        print_r ($_POST['reponse_box']); 
     
        foreach ($qcm as $num => $question){
            echo'<p />QUESTION '.$num.' - '.$question['libelle'].' : <br />';
            echo '--->vous avez repondu : ';
     
            if(isset($_POST['reponse_box'][$num])){
     
                $reponse = implode(",", $_POST['reponse_box'][$num]); 
                echo $reponse;
     
                $right = 0;
                foreach ($_POST['reponse_box'][$num] as $answer){
                    if (!empty($question['choix'][$answer])){
                        $right++;
                    }
                }
     
                if ($right){
                    echo'<br />une ou plusieurs reponses sont justes';	
                } else {
                    echo'<br />mauvaise réponse';		
                }
            } else {
                echo'<br />Aucune reponse de votre part';
            } 
        }	
        echo'<br />nombre de reponse juste';
    }

    pour info : quand tu fais foreach ($qcm as $num => $question), INUTILE de faire $qcm[$num] car c'est egal a $question donc utilise direct $question.

  12. #12
    Membre à l'essai Avatar de kentaro
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    merci marcuscircus, je m'en vais tester le code, par contre je ne comprend pas l'utilisation de "$right = 0;" et de "$right++;" je vois qu'il y a une incrémentation ,mais pourquoi?

    merci pour ton aide

  13. #13
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Probablement pour le cas où tu voudrais tester si toutes les réponses exactes possibles ont été trouvées.

  14. #14
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    1 - pour être sur qu'au moins 1 réponse et correct.
    2 - En voyant la phrase
    echo'<br />nombre de reponse juste';
    je me suis dis que ça te serait surement utile.

  15. #15
    Membre à l'essai Avatar de kentaro
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    Merci à tous je passe en resolu .
    bon week-end

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. inserer un bouton suivant une condition
    Par ramijrad dans le forum ASP
    Réponses: 2
    Dernier message: 08/04/2011, 12h16
  2. inserer une ligne avec condition
    Par pepesese dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/02/2008, 19h22
  3. [CR] Inserer une image à partir d'un fichier
    Par Gandalf24 dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 23/07/2003, 10h55
  4. [VBA-W] [Word] Insérer une image MSChart
    Par fredo1664 dans le forum VBA Word
    Réponses: 2
    Dernier message: 20/11/2002, 09h09
  5. [VB6] [Excel] Insérer une image dans une feuille
    Par mathias dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 09/10/2002, 07h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo