Boucle Switch

Fermé
ellocodu59 - 29 mai 2008 à 15:05
 ellocodu59 - 29 mai 2008 à 15:19
Bonjour,

J'ai un petit problème par rapport à ma boucle switch : elle n'exécute pas les actions des différents cas mais va directement au "default". La requête du "default" marche très bien et les autres cas ne s'exécutent pas alors que la requête est la même ! Quand je clique sur les différents liens la page affiche toujours le résultat de la requête "default".
Avez-vous une idée? Merci.

Je vous donne mon code :

<?php
include("php/connexion.php");

$id = $_GET['ID'];
$requete = "SELECT * FROM trombi WHERE ID=\"".$id."\" ";
$result = mysql_db_query($bdd, $requete);
$donnees = mysql_fetch_array($result);

/* Requête pour sélectionner la matière choisie*/
$matiere = $_GET["matiere"];

switch ($matiere){
case 1:
$requete2 = "SELECT * FROM adm_blog WHERE matiere='flash' ORDER BY id";
break;
case 2:
$requete2 = "SELECT * FROM adm_blog WHERE matiere='illustrator' ORDER BY id";
break;
case 3:
$requete2 = "SELECT * FROM adm_blog WHERE matiere='photoshop' ORDER BY nom";
break;
case 4:
$requete2 = "SELECT * FROM adm_blog WHERE matiere='compoimages' ORDER BY nom";
break;
case 5:
$requete2 = "SELECT * FROM adm_blog WHERE matiere='aftereffects' ORDER BY nom";
break;
case 6:
$requete2 = "SELECT * FROM adm_blog WHERE matiere='sketchup' ORDER BY nom";
break;
case 7:
$requete2 = "SELECT * FROM adm_blog WHERE matiere='3dsmax' ORDER BY nom";
break;
case 8:
$requete2 = "SELECT * FROM adm_blog WHERE matiere='maya' ORDER BY nom";
break;
case 9:
$requete2 = "SELECT * FROM adm_blog WHERE matiere='films' ORDER BY nom";
break;
default:
$requete2 = "SELECT * FROM adm_blog WHERE matiere='flash' ORDER BY id";
}

$result2 = mysql_db_query($bdd, $requete2);
$donnees2 = mysql_fetch_array($result2);
?>


Et les liens correspondants :

<div id="typematiere">
<img src="image/PageBlog/onglet.jpg"/>  <?php echo "<a href=\"blog.php?ID=".$donnees["ID"]."&matiere=flash\" >";?>FLASH</a><br/><br/>
<img src="image/PageBlog/onglet.jpg"/>  <?php echo "<a href=\"blog.php?ID=".$donnees["ID"]."&matiere=illustrator\" >";?>ILLUSTRATOR</a><br/><br/>
<img src="image/PageBlog/onglet.jpg"/>  <?php echo "<a href=\"blog.php?ID=".$donnees["ID"]."&matiere=photoshop\" >";?>PHOTOSHOP</a><br/><br/>
<img src="image/PageBlog/onglet.jpg"/>  <?php echo "<a href=\"blog.php?ID=".$donnees["ID"]."&matiere=compoimages\" >";?>COMPO-IMAGES</a><br/><br/>
<img src="image/PageBlog/onglet.jpg"/>  <?php echo "<a href=\"blog.php?ID=".$donnees["ID"]."&matiere=aftereffects\" >";?>AFTER-EFFECTS</a><br/><br/>
<img src="image/PageBlog/onglet.jpg"/>  <?php echo "<a href=\"blog.php?ID=".$donnees["ID"]."&matiere=sketchup\" >";?>SKETCHUP</a><br/><br/>
<img src="image/PageBlog/onglet.jpg"/>  <?php echo "<a href=\"blog.php?ID=".$donnees["ID"]."&matiere=3dsmax\" >";?>3 DS MAX</a><br/><br/>
<img src="image/PageBlog/onglet.jpg"/>  <?php echo "<a href=\"blog.php?ID=".$donnees["ID"]."&matiere=maya\" >";?>MAYA</a><br/><br/>
<img src="image/PageBlog/onglet.jpg"/>  <?php echo "<a href=\"blog.php?ID=".$donnees["ID"]."&matiere=films\" >";?>FILMS FIN D'ANNEE</a>
</div>

2 réponses

JR des cavernes Messages postés 152 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 19 mai 2009 84
29 mai 2008 à 15:08
Il faut que tu mettes des cotes autour de tes chiffres comme cela : case '6':
0
Barracuda8 Messages postés 107 Date d'inscription vendredi 4 mai 2007 Statut Membre Dernière intervention 19 décembre 2011 72
29 mai 2008 à 15:13
Salut,

C'est normal si ton switch passe toujours par le cas par défaut.

Tu évalues les différentes valeurs de $matiere dans ton switch avec des valeurs allant de 1 à 9.

Mais vu les liens correspondant que tu as donné $matiere peut valoir "flash" ou "illustrator" ou ...

Donc $matiere ne vaut jamais un chiffre compris entre 0 et 9 et tu passes directement au cas pas défaut.

Ce qu'il faut faire:

switch ($matiere){
case "flash":
$requete2 = "SELECT * FROM adm_blog WHERE matiere='flash' ORDER BY id";
break;
case "illustrator":
$requete2 = "SELECT * FROM adm_blog WHERE matiere='illustrator' ORDER BY id";
break;
...


Voir aussi:

http://www.manuelphp.com/php/control-structures.switch.php



Bonne journée,
Barracuda.
0
ça marche niquel !
Merci pour ton aide !
Bonne journée
0