Is_dir ne trouve pas mes repertoires ? [Résolu]

Signaler
Messages postés
2
Date d'inscription
dimanche 17 septembre 2017
Statut
Membre
Dernière intervention
1 juillet 2020
-
 Dickie45 -
Bonjour,

J'essaye de lister des noms de répertoires et les introduire dans un "array" avec "if(is_dir(...)) et je ne récupère que les deux répertoires "." et ".." alors qu'il y en a 3 autres

En voici le listing php :
<?php
$repertoire='./img/';
$chemin_galeries = opendir($repertoire);
$noms_galeries=array();
while($galerie = readdir($chemin_galeries)){
 if(is_dir($galerie)) // && $galerie!="." && $galerie!="..")
  {array_push($noms_galeries, $galerie);}
 }
closedir($chemin_galeries);
$nb_galeries=count($noms_galeries);
echo "\t<br/><br/>".$nb_galeries." galeries trouvées <br/>dans ".$repertoire." <br/>";
foreach($noms_galeries as $nom){
 echo $repertoire.$nom."<br/>";
 
 }


et voici le html obtenu :
<div id='gauche'>
  <br/><br/>2 galeries trouvées <br/>dans ./img/ <br/>./img/.<br/>./img/..<br/>
 </div>

merci de vos conseils, je suis novice
Configuration: Windows / Firefox 56.0

2 réponses

Messages postés
28924
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 juillet 2020
2 605
Bonjour,

Dans la doc de phpil est indiqué
/* Ceci est la façon correcte de traverser un dossier. */
    while (false !== ($entry = readdir($handle))) {
        echo "$entry\n";
    }

    /* Ceci est la MAUVAISE façon de traverser un dossier. */
    while ($entry = readdir($handle)) {
        echo "$entry\n";
    }

Tu as donc choisi la mauvaise.


Ensuite, il me semble que tu n'as pas ré-indiqué le chemin vers ces dossiers.
En faisant, comme dans l'exemple, un echo .. tu pourrais voir ce que contient réellement ta variable
Et je suppose qu'en faisant
if(is_dir( $repertoire . $galerie)) {

ça devrait mieux marcher
En effet j'avais indiqué incomplètement le chemin !
Ça a suffi pour régler le pb sur lequel je séchais.
J'ai en plus corrigé pour utiliser la façon "correcte"...
Marci.