Problème listage répertoires

Bonsoir tout le monde,

J’ai besoin de lister les répertoires (et uniquement les répertoires) sans afficher . et …, j’ai donc utilisé le script suivant:

<?php
$dir = opendir(".");
while($file = readdir($dir)) {
if ($file != "." && $file != "..")
if (is_dir($file))
echo "$file\n";
}
closedir($dir);
?>

Dans ces conditions, il fonctionne bien, il ne m’affiche que les répertoires, si je modifie le répertoire et que je veux aller voir un répertoire parent, par exemple …/repertoire, il ne m’affiche rien du tout, alors que j’ai bien des répertoires…

Une idée du problème ?

Merci, et bonne soirée

Pas saisi le problème ? Tu fais quoi dans le cas où il se produit ?

Je fais quoi ? ben j’ai une page de test avec le code cité au dessus qui ne doit m’afficher que les répertoires contenus dans un autre répertoire, sur lequel j’ai des droits bien sur.

Si je veux lister le répertoire dans lequel est exécuté le script, pas de problème, si je veux lister un sous-répertoire, pas de problème, si je veux lister un répertoire d’un niveau au dessus, il ne m’affiche rien (pas d’erreur, pas de répertoires)

Je ne vois pas trop…

En fait, le problème n’est pas tout à fait ce que j’ai expliqué, si répertoire “.” est bien listé, alors que n’importe quel autre apparait “vide”… je dois m’être planté dans le code


J'avance un peu sur mon problème, je supprime le filtre qui filtre . et .. et du coup, j'ai ces deux répertoires qui s'affichent. Le problème se situerait alors du coté de la commande is_dir() qui ne peut vérifier les éléments venant d'un autre répertoire que celui à partir duquel est exécuté le script ?

Ah. Maintenant j’ai saisi.

Ton problème est le suivant :

<?php
$parentDirectory = '.';
$dir = opendir($parentDirectory);
while($file = readdir($dir)) {
if ($file != "." && $file != "..")
$fullPath = $parentDirectory . DIRECTORY_SEPARATOR . $file;
if (is_dir($fullPath))
echo "$file\n";
}
closedir($dir);
?>

is_dir utilise un chemin. Donc $file n’existe pas rapport au dossier courant du script.

Merci beaucoup pour l’explication, et le script :slight_smile:

Je voudrais pas trop en demander, mais, est-ce qu’il est possible d’adapter ce script pour trier les résultats par date ? (je sais, j’en ai jamais assez)

Faut stocker les résultat dans un array, le trier, et ensuite afficher le résultat