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 3706 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;
}
.....*
A voir également:

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
0
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
0
kohntark Messages postés 3706 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 -
0
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
0

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;
    }
}

?>
0
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
0
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.
0
kohntark Messages postés 3706 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 -
0