Partage
  • Partager sur Facebook
  • Partager sur Twitter

condition if non respectée

    20 juin 2020 à 15:00:48

    Bonjour,

    je rame depuis 24 h sur une stupide condition ! (et oui)
     mon code est le suivant :

    $test=0;
    $decal_select="";
    $final=array();
     for($i=sizeof($_SESSION['arbo'])-1; $i>=0 ; $i--) { if($_GET['type']==$_SESSION['arbo'][$i][1] && $_GET['id']==$_SESSION['arbo'][$i][2]) { $decal_select=$_SESSION['arbo'][$i][0]; echo '<br> selection : '.$_SESSION['arbo'][$i][3]; } if($decal_select==$_SESSION['arbo'][$i][0]+1 && $test==0) //pour avoir le parent { $type_parent=$_SESSION['arbo'][$i][1]; $id_parent =$_SESSION['arbo'][$i][2]; echo '<br> parent : '.$_SESSION['arbo'][$i][3]; $test++; } if($test==0) { array_unshift($final,$_SESSION['arbo'][$i][0]); //on fait un array de tous les décal lu avant la selection } }

    Le problème vient de la dernière condition if (test==0) n'est pas prise en compte alors qu'elle l'est sur la condition précédente.
    Dit autrement ma valeur de test passe bien à 1 mais le dernier array_unschift() continue d'empiler les résultats !

    J'ai testé avec if ( $test !=1) , rien à faire.

    mais attention, cela ne le fait que si $_SESSION['arbo'][$i][0] est égal à 1

    si $_SESSION['arbo'][$i][0] est égal à 2, alors $test prend bien la valeur 1 !

    Une idée pour aider un pauvre prof de collège en pleine galère...
    Merci

    -
    Edité par Zelione 20 juin 2020 à 15:01:43

    • Partager sur Facebook
    • Partager sur Twitter

    Si on faisait toujours  comme "on a toujours fait", on en serait encore à l'âge des cavernes.

      20 juin 2020 à 15:46:53

      Salut,

      Ca aurait était sympa pour les yeux de mieux indenter ton code.

      De plus, tu utilises un mot-clé réservé à PHP comme variable : final

      Pareillement, pour tes équations, c'est bien de les mettre entre parenthèses, ca évite les bêtises et ca les rend plus lisibles.

      Pour ce qui est de ton probléme, tu affirmes que tu as bien débug la variable $test dans ta boucle ?

      Je reposte au propre:

      $test = 0;
      $decal_select = "";
      $fin = array();
      
      for($i = (sizeof($_SESSION['arbo'])-1); $i >= 0 ; $i--)
      {
      	if( $_GET['type'] == $_SESSION['arbo'][$i][1] && $_GET['id'] == $_SESSION['arbo'][$i][2] )
      	{
      		$decal_select = $_SESSION['arbo'][$i][0];
      		echo '<br> selection : '.$_SESSION['arbo'][$i][3];
      	}
      	if( $decal_select == ($_SESSION['arbo'][$i][0]+1) && $test == 0 )      //pour avoir le parent
      	{
      		$type_parent = $_SESSION['arbo'][$i][1];
      		$id_parent = $_SESSION['arbo'][$i][2];
      		echo '<br> parent : '.$_SESSION['arbo'][$i][3];
      		$test++;
      	}
      	if(!$test)
      	{
      		array_unshift($fin, $_SESSION['arbo'][$i][0]);  //on fait un array de tous les décal lu avant la selection
      	}
      }
      
      ?>

      De ce que je vois, mais sans vraiment comprendre le contenu et ce que tu souhaites, la seule façon pour que ta dernière condition soit valide, c'est uniquement si ta deuxième condition est invalide et donc n'incrémente pas $test. De ce fait, tu sais d'où provient la coquille, mais il est impossible que tu ne rentres pas dans ta dernière condition si $test vaut 0, montre nous le debug de cette variable.

      -
      Edité par xoxotf 20 juin 2020 à 15:59:54

      • Partager sur Facebook
      • Partager sur Twitter
        20 juin 2020 à 16:21:16

        Bonjour,

        Si $test == 0 est pris dans la condition précédente alors comme tu fais $test++, à la troisième condition $test doit valoir 1, non ?

        si tu mettais ou tu as mis un echo $test en insérant une ligne avant le if de la ligne 19, tu devrais le constater.

        A+

        • Partager sur Facebook
        • Partager sur Twitter
          4 juillet 2020 à 16:42:44

          Désolé de répondre si tard.

          Je ne sais plus ou j'en étais sur ce bout de code et de rage, j'ai codé autrement !
          En tout cas merci pour vos contributions.

          Je clos le sujet pour en faire un autre.

          Bonne journée

          • Partager sur Facebook
          • Partager sur Twitter

          Si on faisait toujours  comme "on a toujours fait", on en serait encore à l'âge des cavernes.

          condition if non respectée

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown