Tableau Array et variable dynamique

Résolu
Bonjour à tous,
Voici mon problème : j'ai crée un tableau Array comme suivant :

$type = array('H'=>'Hotel', 'G'=>'Gite', 'C'=>'Camping', 'CH'=>'Chambres d\'hotes', 'R'=>'Restauration traditionnel', 'RR'=>'Restauration rapide', 'M'=>'Musée', 'S'=>'Site touristique', 'A'=>'Artisannat local', 'TF'=>'Randonnée fluviale', 'CV'=>'Centre équestre', 'SA'=>'Sports aériens', 'SM'=>'Sports mécaniques', 'SN'=>'Sports nautiques', 'L'=>'Loisir');

Je souhaite afficher sur ma page les produits de ma BDD avec donc la catégorie où ils appartiennent

print utf8_encode("$Ligne[nom] - $type[$Ligne[categorie]]";)

A l'affichage je veux que cela affiche par exemple : "Domaine Commentçamarche - Chambre d'hotes".
Or avec l'écriture dans le print, la page bloque et ne s'ouvre pas. Par contre si par exemple je remplace $Ligne[categorie] par G ou C etc, cela m'affiche bien la page avec le type d'activité.

Merci par avance de votre aide !
Configuration: Mac OS X
Safari 525.18

6 réponses

  1. Contributeur
    Bonjour,

    Attention ! Tu as marqué : $Ligne[categorie]. J'imagine que $Ligne fait référence au résultat d'une requête SQL sur ta base (?), si oui il ne faut pas mettre entre cotte/doubles cottes comme ceci : $Ligne["categorie"] ?

    Sinon la question à se poser est : qu'ais-je dans ma variable $Ligne["categorie"]. Si ca fonctionne en remplaçant $Ligne["categorie"] par "G", c'est qu'il y a un souci au niveau de $Ligne["categorie"]
    0
    1. J'avais déjà essayé avec les doubles quotes et le résultat est identique.
      Pourtant, si j'écris $Ligne[categorie] au lieu de $type[$Ligne[categorie]], cela m'affiche bien la valeur correspondante (à savoir C, CH ou G,etc) à chaque nom...

      Le soucis c'est que dès que je place $Ligne[categorie] comme valeur de $type, PHP ne me l'interprète plus et je n'ai donc pas la valeur correspondante à l'attribut qui s'affiche (par exemple, si c'est "H" ça m'affiche "Hotel"). Je suppose que le problème vient d'un soucis d'un syntaxe, mais lequel... ?
      0
      1. Contributeur
        print utf8_encode("$Ligne[nom] - $type[$Ligne[categorie]]";) 


        Le ';' n'est pas au bout endroit déjà, je ne sais pas si c'est une faute de recopie ou non ?

        Sinon est-ce que tu peux essayer avec cette syntaxe :
        print utf8_encode($Ligne[nom]." - ".$type[$Ligne['categorie']]); 

        0
        1. Toujours le même résultat, même en remplaçant les quotes par des doubles quotes ou en les enlevant selon ton code, et en essayant plusieurs possibilités de syntaxe...

          Pour le ";" c'est bien une erreur de saisie de ma part.
          0
          1. Bon ben j'ai trouvé !!!

            print utf8_encode("$Ligne[nom] - ".$type[$Ligne[categorie]]."
            ");

            Merci de ton aide ;)
            0
            1. Contributeur
              Simplement le "" à la fin qui change tout ?
              0
          2. C'est le point et la double quote qui changent tout : ".CODE."

            Ah les mystères du PHP...
            0
            1. Contributeur
              Ca oui c'est toujours la syntaxe que j'emploie, mais c'est déjà ce que j'avais donné plus haut à la différence que je n'avais pas mis ."" à la fin. Je suis étonné que cela change quelque chose... enfin le principal c'est que c'est résolu :D
              0