Le Switch permet d'avoir une écriture simplifiée, nettement plus lisibile qu'une pile de if then else. Exemple simple $Nombre = 2; switch($Nombre) { case 1: echo "Un"; case 2: echo "Deux"; case 3: echo "Trois"; } * Constatez l'absence de ; à la fin de switch($Nombre). Très important, sinon ça ne marche pas! * Après case 1, case 2 et case 3, ce sont deux ponts : et non pas point-virgule ; * les accolades sont nécessaires Dans cet exemple le résultat sera étrangement : DeuxTrois Je n'ai pas d'explication quant à ce phénomène, mais j'ai une solution : Il est nécessaire d'inclure le mot-clé break; afin de l'informer qu'il doit s'arrêter. Le code suivant : $Nombre = 2; switch($Nombre) { case 1: echo "Un"; break; case 2: echo "Deux"; break; case 3: echo "Trois"; break; } affichera : Deux * Si $Nombre avait valu 5, rien n'aurait été affiché, et aucune erreur n'aurait été générée. Phénomène lié au break : Dès qu'une comparaison est exécutée, le break renvoie immédiatement à la ligne d'instruction après le Switch. Exemple : $Nombre = 5; switch($Nombre) { case 5 : echo "Cinq"; break; case 5 : echo "Five"; break; } Affiche seulement : Cinq Gestion des valeurs non prévues avec default Si nombre est différent de 1,2 ou 3, on veut afficher "Nombre différent de 1, 2 ou 3" : $Nombre = 5; switch($Nombre) { case 1: echo "Un"; break; case 2: echo "Deux"; break; case 3: echo "Trois"; break; default: echo "Nombre différent de 1, 2 ou 3"; break; } * C'est bien default : et PAS case default : Gestion des plages de valeur Il faut savoir que l'écriture $Nombre = 1; switch($Nombre) { case 1: echo "Un"; break; } N'est que la contraction de l'écriture : $Nombre = 1; switch($Nombre) { case $Nombre == 1: echo "Un"; break; } Quand on a compris ça, la gestion des plages de valeurs coule de source. L'exemple suivant affiche : * Petit si le nombre est inférieur à 10 * Moyen s'il est compris entre 10 et 50 * Grand s'il est supérieur à 50 $Nombre = 32; switch ($Nombre) { case ($Nombre < 10) : echo "petit"; break; case (($Nombre >= 10) && ($Nombre <= 50)) : echo "Moyen"; break; case ($Nombre > 50) : // ou default, c'est pareil echo "Grand"; break; // dernier break facultatif par sa nature même } * En fait, on peut mettre n'importe quelle expression booléenne après les case, même si ça n'a rien à voir avec l'instruction initiale switch.
if ($Pourcent <= 4){ $imgp = '01'; } elseif (($Pourcent >= 5) && ($Pourcent <= 9)){ $imgp = '02'; } elseif (($Pourcent >= 10) && ($Pourcent <= 14)){ $imgp = '03'; } elseif (($Pourcent >= 15) && ($Pourcent <= 19)){ $imgp = '04'; } elseif (($Pourcent >= 20) && ($Pourcent <= 24)){ $imgp = '05'; } elseif (($Pourcent >= 25) && ($Pourcent <= 29)){ $imgp = '06'; } elseif (($Pourcent >= 30) && ($Pourcent <= 34)){ $imgp = '07'; } elseif (($Pourcent >= 35) && ($Pourcent <= 39)){ $imgp = '08'; } elseif (($Pourcent >= 40) && ($Pourcent <= 44)){ $imgp = '09'; } elseif (($Pourcent >= 45) && ($Pourcent <= 49)){ $imgp = '10'; } elseif (($Pourcent >= 50) && ($Pourcent <= 99)){ $imgp = '11'; } elseif (($Pourcent >= 100) && ($Pourcent <= 149)){ $imgp = '12'; } elseif (($Pourcent >= 150) && ($Pourcent <= 199)){ $imgp = '13'; } elseif (($Pourcent >= 200) && ($Pourcent <= 249)){ $imgp = '14'; } elseif ($Pourcent >= 250){ $imgp = '15'; }
<?php $host="localhost"; $login="root"; $pass=""; $base="atast"; $table="tableau"; mysql_connect($host,$login,$pass) or die('serveur ?'); mysql_select_db($base) or die('base ?'); $sql="select image from ".$table; $query=mysql_query($sql) or die('demande ?'); $choix = array(); while($res=mysql_fetch_array($query)){ $choix[]=$res['image']; } $count=count($choix); if(isset($choix) && !empty($choix)){ $position=rand(0,$count-1); /*sol 1*/ $rand_keys = array_rand($choix,$position+1); echo $choix[$position] . "\n"; /*sol 2*/ shuffle($choix); echo $choix[$position]."\n"; $choix=array(); /*vide le tableau*/ $count=0; }else{ echo 'erreur choix vide'; } ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question<?php $host="localhost"; $login="root"; $pass=""; $base="atast"; $table="tableau"; mysql_connect($host,$login,$pass) or die('serveur ?'); mysql_select_db($base) or die('base ?'); $sql="select image from ".$table; $query=mysql_query($sql) or die('demande ?'); $choix = array(); while($res=mysql_fetch_array($query)){ $choix[]=$res['image']; } $count=count($choix); if(isset($choix) && !empty($choix)){ $position=rand(0,$count-1); /*sol 1*/ $rand_keys = array_rand($choix); echo $choix[$rand_keys] . "\n"; /*sol 2*/ shuffle($choix); echo $choix[$position]."\n"; $choix=array(); /*vide le tableau*/ $count=0; }else{ echo 'erreur choix vide'; } ?>
Par ailleurs, même si le textarea de ce site ne comprend pas le «bbcode», des boutons autorisent l'insertion de codes divers et variés.
if ($prm<50) $prm=round($pourcent/5); else $prm=10+round($pourcent/50); $prf="";if ($prm<10) $prf="0"; $imgp=$prf.$prm;