Page 1 sur 1

switch ko

Posté : 01 avr. 2021, 21:50
par nestor94
Bonjour,

Si quelqu'un peut m'aider, je suis preneur. J'ai un switch qui ne prend en compte QUE le 1er cas....
J'ai surement loupé quelque chose, mais je ne vois pas.

  $sql = "SELECT aspect FROM membres WHERE id = :id" ;
  $pdostat = $bdd->prepare($sql);
  $pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
  $pdostat->execute();
  $resultat = $pdostat->fetch();
  if (!empty($resultat )) 
  { 
  $aspect = $resultat['aspect'];
 
            
            switch($aspect){
                case 0:
                    $resultat == '/images/HB.png';
					header('Location:achat_HB.php'); 
					
                    break;
                case 1:
                    ($resultat == '/images/HM.png');
					header('Location:achat_HM.php');
                    					
                    break;
                case 2:
                    ($resultat == '/images/HN.png');
					header('Location:achat_HN.php');
                    
					break;
                default:
                    echo 'Ca merde un peu';
            }
}
?>

Re: switch ko

Posté : 01 avr. 2021, 21:57
par or 1
que donne ?
var_dump($aspect);

Re: switch ko

Posté : 01 avr. 2021, 23:13
par nestor94
le var_dump ne retourne rien. C'est toujours la 1ere case du switch qui est éxecutée.

Re: switch ko

Posté : 02 avr. 2021, 18:22
par Ryle
Si le var_dump ne retourne rien, c'est que ta variable $aspect est vide ou égale à false ou à 0... et il est alors normal que php exécute le premier case :)

Tu peux vérifier facilement que ton switch n'est pas en cause en mettant une valeur à 1 ou 2 en dur à ta variable au lieu de récupérer la valeur de $resultat['aspect'] et en regardant le comportement de ton script :)


A noter que : $resultat == '/images/HB.png'; compare les deux valeurs et c'est tout. C'est comme si tout ce que tu avais sur ta ligne était : "true;" ou "false;". Ça ne génère pas d'erreur, mais ça ne sert à rien ;)

A moins que ce que tu veuilles faire c'est comparer la valeur de $aspect à tes différentes chaines '/images/HB.png', '/images/HM.png' ??? Auquel cas, effectivement tu t'y prends mal et ce sont ces chaines qu'il faut utiliser comme valeurs de tes case :)
switch ($aspect){
   case '/images/HB.png' :
      header('Location:achat_HB.php'); 
      break;
   case '/images/HM.png' : 
      header('Location:achat_HM.php');
      break;
   case '/images/HN.png' : 
      header('Location:achat_HN.php');
      break;
   default:
      echo 'Ca merde un peu';
}
Quoi qu'il en soit, la première chose est quand même de vérifier ce que contient $aspect et pourquoi ;)

Re: switch ko

Posté : 04 avr. 2021, 09:32
par nestor94
$aspect est bien présent en table pourtant...
Enfin, c'était bien une comparaison de chaines à effectuer pour que ce switch fonctionne correctement.
Merci pour la correction apportée.