Is_dir ne trouve pas mes repertoires ?

Résolu/Fermé
Dickie45 Messages postés 2 Date d'inscription dimanche 17 septembre 2017 Statut Membre Dernière intervention 1 juillet 2020 - Modifié le 1 juil. 2020 à 10:52
 Dickie45 - 1 juil. 2020 à 12:40
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

jordane45 Messages postés 38296 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 4 704
1 juil. 2020 à 11:08
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
1
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.
0