Page 1 sur 1

Notice: Undefined variable: errors

Posté : 24 avr. 2016, 11:04
par le loup solitaire
bonjour,

je ne comprend pas pourquoi cette erreur, pouvez vous m'expliqué, je sais que ça veut dire "variable non défini", mais pourquoi dans le script.
<?php 

$reponses = array(
    'chx' => array(
        'reponse' => 'un',
        'mot' => 'po',
        'drag' => '___rtable',
         'image' => 'img/portable.gif'
    ) ,
    'chx_1' => array(
        'reponse' => 'le',
        'mot' => 'so',
        'drag' => '___l',
         'image' => 'img/sol.gif'
    ) ,
    'chx_2' => array(
        'reponse' => 'un',
        'mot' => 'peau',
        'drag' => 'dra___',
         'image' => 'img/drapeau.gif'
    ) ,
    'chx_3' => array(
        'reponse' => 'un',
        'mot' => 'teau',
        'drag' => 'pla___',
         'image' => 'img/plateau.gif'
    ) ,
    'chx_4' => array(
        'reponse' => 'des',
        'mot' => 'vau',
        'drag' => 'tra___x',
         'image' => 'img/panneau.gif'
    ) ,
    'chx_5' => array(
        'reponse' => 'de la',
        'mot' => 'sau',
        'drag' => '___ce',
         'image' => 'img/sauce.gif'
    ) ,
    'chx_6' => array(
        'reponse' => 'un',
        'mot' => 'seau',
        'drag' => '____',
         'image' => 'img/seau.gif'
    ) ,
    'chx_7' => array(
        'reponse' => 'du',
        'mot' => 'cho',
        'drag' => '___colat',
        'image' => 'img/chocolat.gif'
    ), 
    'chx_8' => array(
        'reponse' => 'une',
        'mot' => 'to',
        'drag' => '___mate',
         'image' => 'img/tomate.gif'
    ) ,
    'chx_9' => array(
        'reponse' => 'des',
        'mot' => 'chau',
        'drag' => '___ssures',
        'image' => 'img/chaussure.gif'
    ) 

);
 
  
foreach($reponses as $cle => $reponse)
    {
   
              if (isset($_POST['correction']))
        {
        $clic = $_POST[$cle];
	
        if (empty($clic) && empty($clic) !=  $reponse['mot'])
            {
			var_dump($clic);	
            $msg = '<p>veuillez remplir tous les champs</p>';
            echo $msg;
            }
          else
        if ($clic == $reponse['mot'])
            {
			 
            echo '<p style="margin-left:4em;">' . $reponse['mot'] . '</p><p style="margin-left:5em;">'. $reponse['drag'] . '</p><br />';

            }
          else
        if ($clic != $reponse['mot'])
            {
					$errors = array();
                    $errors[$cle] = htmlspecialchars($clic);
                    
                     echo '<article class="content_img"><figure><img src="'. $reponse['image'] .'" alt="" width:"75" height="75" /></figure><p style="color:red;margin-left:4em;"><del>' . $errors[$cle] . '</del><p>'.$reponse['mot'].'</p><p style="text-align:right;margin-left:5em;">'. $reponse['drag'] . '</p></article>';
				
          
                }
        }
    }
                echo'<br />';
         echo'<p style="display:inline-block;margin:2em 0 0 35%;padding:.5em;background:#54d0ce;font-size:1.2em;">Bonnes réponses :'.count($reponse['mot']).' - '.count($errors[$cle]).'/10</p>';
          echo'<br /><br />';

      ?>
merci d'avance

Re: Notice: Undefined variable: errors

Posté : 24 avr. 2016, 11:53
par tof73
il faut mettre la ligne
$errors = array();
à un endroit où elle sera toujours executé et pas seulement selon un if.

Notice: Undefined index: chx_9

Posté : 24 avr. 2016, 12:13
par le loup solitaire
merci je n’ai plus d'erreur pour ça, mais par contre j'en ais une autre "undefined index:chx_9" pourquoi?

Re: Notice: Undefined variable: errors

Posté : 25 avr. 2016, 13:13
par Ryle
Bonjour,

Tout dépend de la ligne de l'erreur... A vue de nez, je dirais que c'est dans ta boucle quand tu fais appel à $clic = $_POST[$cle];
$cle est bien définie dans ton tableau, mais à aucun moment tu ne vérifies que l'index contenu dans $cle est bien présent dans $_POST... tu demandes à php de récupérer la valeur sans te soucier de savoir si elle existe... s'il ne la trouve pas, il affiche ce genre de message.

Et si c'est pas cette ligne là, il te suffit de contrôler ton code en fonction du message de php :)

Tu dois aussi avoir une erreur ici : empty($clic) && empty($clic) != $reponse['mot']
empty($clic) sera rarement égal à $reponse['mot'] ... :)