Aide pour encapsulation de variable

Eléphanteau du PHP | 28 Messages

16 déc. 2007, 13:58

bonjour,
je vous explique d'abord le but, et ensuite le problème rencontré.

Je liste dans un tableau le nombre (et donc leur nom) de dossier contenu dans un répertoire spécifique.
Puis je voudrais créer autant de tableau de fichiers qu'il y a de dossier, pour y lister tout les fichiers de chaque tableau

Le problème rencontré est l'encapsulation de variable dans une variable, voyez donc:
for ($i=0 ; $i<($nbr_dir+1) ; $i++) $tab_file_.$i= array(); //crée tous les tableaux_de_fichiers de chaque dossiers
cette ligne ne me renvoi pas d'erreur.

Par contre quand j'utilise ce tableau avec la variable $i qui correspond a un choix, çà pose probléme au navigateur, voyez-donc:
for ($i=0, $j=1 ; $i<=($nbr_dir-1) ; $i++, $j++)
   echo "<label><img src='../../images/transferts/".$tab_dir[$i]."/".$tab_file_.$i.[0]"' alt='' width='190' border='0' /><br />";
c'est cette variable qui pose probléme:
$tab_file_.$i.[0]
donc ma question est:
Est-ce que j'ai faux depuis le début, ou si non, comment on encapsule une variable dans une autre


Cordialement

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 déc. 2007, 14:04

Pour définir un nom de variable dynamiquement il faut utiliser les acolades :
${'tab_file_'.$i} = array(); 
Ta syntaxe ne comporte pas d'erreur, mais ne correpond pas du tout à ce que tu attendais ;)

Ton " $tab_file_.$i.[0] " deviendrait donc " ${'tab_file_'.$i}[0] "
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 28 Messages

16 déc. 2007, 15:37

merci bien pour ce point de cours que je ne connaissais pas.

çà marche nickel, sauf que après le choix des dossiers, je n'arrive pas a afficher les images du dossier.

erf, j'ai trouvé l'erreur suivante en écrivant la question :P


Merci merci, j'ai donc réussi (avec votre aide) a faire un p'tit script pour connaitre le nombre de dossier(album)
afficher la première image en guise de visualisation,
permettre de faire un choix par bouton radio
puis via un bouton
voir le contenu de se dossier

il suffit donc de rajouter un dossier avec des images dedans, le formatage n'a aucune importance :P

--------------------
EDIT: si j'ai quand même un petit probléme.

Pour connaitre le nombre d'image contenu dans le dossier choisi par l'utilisateur, j'utilise strlen(). Mais çà me renvoi toujours 5, qu'il y ai 5 image, 3 ou même une trentaine...
//rappel:
//$tab_file_0 = liste des images contenu dans le 1er dossier ; $tab_file_1 = liste des images contenu dans le 2ieme dossier ; ... 

$choix_album = $_POST['choix_album'];
$nbr_img_dir_choisi = strlen(${'tab_file_'.$choix_album});
Je comprend pas, dites si vous voulez plus de code
Modifié en dernier par lkaiman le 16 déc. 2007, 16:02, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 déc. 2007, 16:02

Modération :
lkaiman, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 28 Messages

16 déc. 2007, 16:03

justement, elle ne l'est plus :P

voir mon post ci-dessus

Eléphanteau du PHP | 40 Messages

16 déc. 2007, 17:18

c'est un autre probleme tu aurrais du changer de poste et marquer celui-ci resolut.
sinon strlen() renvois la longueur d'une chainne de caractaire donc comme tu l'utilise pour un tableau sa te renvoie la longueur de 'array' qui est 5. essais plutot count() pour obtenir le nombre de valeur dans un tableau
en construction http://plus2site.fr

Eléphanteau du PHP | 28 Messages

16 déc. 2007, 19:16

merci, çà marche maintenant

mais je pige pas, j'ai toujours utilisé strlen() pour connaitre la taille du tableau,enfin ya peut être une différente entre le C et le PHP :P

Résolu et tout marche ;)