Probleme avec les SWITCH CASE ... à l'aide

Eléphant du PHP | 101 Messages

06 juil. 2010, 15:38

Bonjour à tous,
Bon je vais avoir du mal à m'exprimer je pense. ^^
Alors le truck c'est que je fais mon "Switch case" normal et tout va bien quand ma valeur est trouvée, en revanche ce qui est bizarre c'est lorsque je rentre dans le "default".
J'ai un truck du style
		case $res['category_id']=300340:
		case $res['category_id']=300330:
		case $res['category_id']=300390:
			$cats[$res['product_id']]='Informatique > Accessoires imprimante > Mémoire pour imprimante';
			break;	
			

		default:
			fwrite($fecr, $res['category_id']."\n");
			break;
et dans mon fichier, à chaque fois qu'il n'a pas reconnu la valeur il écrit 300390 dans le fichier d'écriture...
Est-ce assez clair?
SVP aidez moi lol je vais péter un cable merci

ViPHP
ViPHP | 5462 Messages

06 juil. 2010, 15:39

tu comprends pas cette ligne ?
fwrite($fecr, $res['category_id']."\n");

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

06 juil. 2010, 15:40

Un seul = c'est pour assigner une valeur. Pour comparer c'est deux: ==

On a pas tout le switch (ça aurait été bien) mais si tu le fais sur $res['category_id'] dans les cases tu ne devrais avoir que les valeurs potentielles, et pas de comparaison. Voir la doc de swithc() il y a des exemples.

Eléphant du PHP | 101 Messages

06 juil. 2010, 15:51

Bin en fait j'ai repris le programme d'un stagiaire. Et ça fonctionnait son truck. Mais le "=" ou "==" c'est pas pour les "if"?
mais je vais essayer sans remettre le case $res['category_id']=7: mais juste case 7: car moi à la base je faisais comme ça...mais comme son programme fonctionnait avec sa syntaxe je voulais la reprendre comprend tu?

ViPHP
ViPHP | 5462 Messages

06 juil. 2010, 15:55

Bin en fait j'ai repris le programme d'un stagiaire. Et ça fonctionnait son truck. Mais le "=" ou "==" c'est pas pour les "if"?
mais je vais essayer sans remettre le case $res['category_id']=7: mais juste case 7: car moi à la base je faisais comme ça...mais comme son programme fonctionnait avec sa syntaxe je voulais la reprendre comprend tu?

un switch y'a même pas de égale, c'est
switch($res['category_id'])
{
    case 300330:
    case 300340:
    case 300390:
        $cats[$res['product_id']]='Informatique > Accessoires imprimante > Mémoire pour imprimante';
        break; 
    default:
        fwrite($fecr, $res['category_id']."\n");
    break;
}

Eléphant du PHP | 101 Messages

06 juil. 2010, 16:04

Ok bin ma première idée était la bonne mais je me suis dit c'est peu être une autre syntaxe que je ne connais pas...et ça à l'air d'aller mieux déjà. Et par contre, comment fait-on pour faire une valeur comprise entre $valeur1 et $valeur2? sachant que $valeur2 est superieure?

ViPHP
ViPHP | 5462 Messages

06 juil. 2010, 16:09

Ok bin ma première idée était la bonne mais je me suis dit c'est peu être une autre syntaxe que je ne connais pas...et ça à l'air d'aller mieux déjà. Et par contre, comment fait-on pour faire une valeur comprise entre $valeur1 et $valeur2? sachant que $valeur2 est superieure?
avec des contitions :wink: (attention il s'arrête quand a la première condition positive)
$test = 25;
	
switch($test)
{
    case ($test < 10):
        echo '- 10';
        break;
    case ($test <= 30):
        echo '- 30';
        break;
    case ($test > 30):
        echo '+ 30';
        break;		
}

Eléphant du PHP | 101 Messages

06 juil. 2010, 16:12

avec des contitions :wink: (attention il s'arrête quand a la première condition positive)
on peut pas faire
$test = 25;
	
switch($test)
{
    case ($test > 10 && $test <30):
        echo 'entre 10 et 30';
        break;
		
}

ViPHP
ViPHP | 5462 Messages

06 juil. 2010, 16:14

oui tu peux

Eléphant du PHP | 101 Messages

06 juil. 2010, 16:26

Ok ok merci beaucoup je vais essayer tout ça. ^^