Switch case avec conditions

Signaler
Messages postés
44
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
19 avril 2010
-
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
-
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

Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009

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
Messages postés
44
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
19 avril 2010

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
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
26
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 -
Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009

à 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
Messages postés
44
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
19 avril 2010

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

?>
Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009

En effet, switch voudra des valeurs fixes. Comme tu l'as réalisé plus tôt, if serait plus approprié.

Cordialement
Messages postés
44
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
19 avril 2010

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.
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
26
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 -