Switch & while

Résolu/Fermé
florire Messages postés 151 Date d'inscription lundi 15 juillet 2013 Statut Membre Dernière intervention 15 juillet 2022 - 28 mai 2014 à 17:43
-helper- Messages postés 89 Date d'inscription mercredi 21 mai 2014 Statut Membre Dernière intervention 15 juin 2014 - 29 mai 2014 à 17:22
Bonjour,
J'aimerais savoir si cela est possible:
switch ($d1[$i1]["rang"]){
    $requete = "SELECT * FROM rang ORDER BY nom ASC";
    $requete = mysql_query($requete) or die(mysql_error());
    while ($ligne=mysql_fetch_array($requete)){
        case '$ligne["nom"]': $couleur = "$ligne['couleur']"; break;
    }
    default: $couleur = "black"; // Les autres cas 
    break; // On fait rien
}


Si non, comment faire ?
Merci de votre aide !
A voir également:

2 réponses

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
Modifié par gravgun le 28/05/2014 à 17:53
'lut, non, c'est impossible.
En revanche tu peux parvenir a tes fins avec un tableau associatif:
// Tu fais ta requête
$requete = "SELECT * FROM rang ORDER BY nom ASC";
$requete = mysql_query($requete) or die(mysql_error());
// Et ajoute chaque couleur dans un tableau, indexé par son nom respectif
$couleurs = array();
while ($ligne=mysql_fetch_array($requete)){
    $couleurs[$ligne["nom"]] = $ligne['couleur'];
}

Pour vérifier si le nom existe dans le tableau, on se sert de array_key_exists():
$couleur = "";
if (array_key_exists($d1[$i1]["rang"], $couleurs)) {
    $couleur = $couleurs[$d1[$i1]["rang"]];
} else { // Correspondant à ton "default"
    $couleur = "black";
}

from human import idiocy
del idiocy
2
-helper- Messages postés 89 Date d'inscription mercredi 21 mai 2014 Statut Membre Dernière intervention 15 juin 2014 27
Modifié par -helper- le 29/05/2014 à 17:27
Oui ou isset( $tab['key'] )
Mais copié de la doc :
isset() ne retourne pas TRUE pour les clés de tableaux qui correspondent à une valeur NULL alors que c'est le cas pour array_key_exists().

Ou
in_array( $key, array_keys($tab) );
Mais la à mon avis c'est ce que fait déjà "array_key_exists" peut etre en plus rapide !...

Bon ok j'avoue : je ne connaissais pas array_key_exists !...
Lol
0
florire Messages postés 151 Date d'inscription lundi 15 juillet 2013 Statut Membre Dernière intervention 15 juillet 2022 6
28 mai 2014 à 18:27
D'accord, et merci pour ta réponse rapide et pour ton code qui fonctionne parfaitement (:
0