Switch & while

Résolu
florire Messages postés 187 Statut Membre -  
-helper- Messages postés 92 Statut Membre -
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 !

2 réponses

  1. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    '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
    1. -helper- Messages postés 92 Statut Membre 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
  2. florire Messages postés 187 Statut Membre 6
     
    D'accord, et merci pour ta réponse rapide et pour ton code qui fonctionne parfaitement (:
    0