Switch case avec conditions

bruno9173 Messages postés 44 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 avril 2010 - 20 juin 2009 à 11:47
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 21 juin 2009 à 15:08
Bonjour,

A-t'on le droit d'écrire cette condition dans un case ? Chez moi ça ne fonctionne pas.

switch ($VALEUR)
    {
    case ($VALEUR > 100) :
        
        echo "<script>alert('message')</script>";
        break;
}
.....*

8 réponses

cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009
20 juin 2009 à 11:57
Bonjour,

La syntaxe que tu as utilisé n'est effectivement pas correcte. A ma connaisance, c'est l'inconvénient du "control structure" switch case.

Pour ton cas, tu pourrais faire:

switch ($valeur) {
   case 101: //signifiant une valeur supérieure à 100
      echo "<script>alert('message')</script>";
      break;
}

Cordialement
bruno9173 Messages postés 44 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 avril 2010
20 juin 2009 à 15:57
je dois controler une valeur par 3 fois :
valeur == 0
valeur > 100%
valeur == ""

IL ne reste plus que la methode if else :

if

elseif

elseif

else
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
20 juin 2009 à 16:18
Salut,

Qu'est ce qui ne fonctionne pas au juste ??
Je ne pense pas que la syntaxe soit incorrecte et ça devrait fonctionner.

@tropNul :
case 101: //signifiant une valeur supérieure à 100
=> plutôt strictement égal à 101 non ??

Cordialement,

Kohntark -
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009
20 juin 2009 à 17:26
à kohntark :



Tout à fait et au temps pour moi. Je n'avais pas fait attention à ce détail pourtant très important.

à bruno9173 :

Pour reprendre ce qu'à dis kohntark, pourrions nous voir la partie du code qui ne fonctionne pas ?

Cordialement

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bruno9173 Messages postés 44 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 avril 2010
20 juin 2009 à 19:49
Voici le code d'essai en entier dans ma page :

<form method="post" action="" name="formulaire2">

</form>

<?php

$VALEUR = 500; //pour l'exemple

if (isset($_POST['valider']))
{
switch ($VALEUR)
    {
    case ($VALEUR > 100) :
        echo "<script>alert('message1')</script>";
        break;
    case ($VALEUR == "") :
        echo "<script>alert('message2')</script>";
        break;
    case 0 :
        echo "<script>alert('message3')</script>";
        break;
    default :
        echo 'réusi';
        break;
    }
}

?>
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009
21 juin 2009 à 13:23
En effet, switch voudra des valeurs fixes. Comme tu l'as réalisé plus tôt, if serait plus approprié.

Cordialement
bruno9173 Messages postés 44 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 avril 2010
21 juin 2009 à 13:57
J'ai fini en javascript car je n'arrive pas à réafficher le formulaire avec les valeurs saisies.

Merci encore pour votre aide. Bon dimanche.
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
21 juin 2009 à 15:08
Je ne suis pas sur que switch attende des valeurs fixes, je dirai plutôt qu'il n'aime pas trop le mix string / int.
Un truc comme ça ne devrait pas poser de pb (pas testé) :

switch($a) {
  case 0 :
  echo '0';
  break;
  case 1 :

  echo '1';

  break;
  case ($a < 2):
  echo '1';
  break;
  case ($a < 200):
  echo '2';
  break;
  case ($a < 2000):
  echo '3';
  default:
  echo 'default';
  break;
}

Enfin, dans le cas de Bruno il est nettement préférable de paser par des if / elseif

Cordialement,

Kohntark -
Rejoignez-nous