Aide - Recherche - Membres - Calendrier
Version complète : Scanner un dossier ? c'est possible ?
Forum Développeur - Administration serveur, programmation et base de données > Programmation > PHP
amoss
voila, je cherche à scanner le contenu de mon dossier "album" j'utilise le script qui suit :

Code
<?
$dir = "./album";

// Ouvre un dossier bien connu, et liste tous les fichiers
if ($is_dir=is_dir($dir)) {
if ($dh = opendir($dir)) {
 while (($file = readdir($dh)) !== false) {
if (@filetype($file) == "dir" && $file!='.' && $file!='..')
 echo '<li><a href="?page=aff_album&dir='.urlencode($file).'" />'.basename($file).'</a></li>';
}
 closedir($dh);
}
}
echo '</ul>';
echo $is_dir.'<br /> '.$dh.'<br />';

?>


le problème c'est que ca ne marche que si je lui indique de scanner le dossier courant "." !

je fait ca avec easyphp sous Windows ... est ce que ca peut venir de la ?
ou ai-je raté qqchose au script ?


Merci d'avance de vos reponses icon_biggrin.gif
jep
amoss (May 31 2005, 04:30 PM) a dit :
le problème c'est que ca ne marche que si je lui indique de scanner le dossier courant "." !

je fait ca avec easyphp sous Windows ... est ce que ca peut venir de la ?
ou ai-je raté qqchose au script ?

Non, normalement, "./album" et "album" seront traité exactement de la même façon par PHP.

Outre ce problème, l'utilisation de ce test me laisse perplexe :
Php
if ($is_dir=is_dir($dir))
car il est totalement inutile !

Enfin, pour "scanner" un dossier, il existe des fonctions beaucoup plus performante et interressante :
> http://php.net/glob (PHP 4.3)
> http://php.net/scandir (PHP 5)
icon_wink.gif
amoss
pour le truc incohérent, c'etait pour le debeugage, desolé, la bonne instruction c'est
Code
if(is_dir($dir)){ --- }

le truc c'est que je ne sais pas utilisé glob pour voir uniquement les dossier dans un dossier ...

je cherche à dresser la liste des dossiers contenus dans ./album/
jep
Tous simplement :

Php
<?
$dir = "album/";

echo "<ul>";

foreach(glob($dir."*") as $file){
if($file != "." && $file != ".." && is_dir($dir.$file)){
echo '<li><a href="?page=aff_album&dir='.urlencode($file).'" />'.$file.'</a></li>';
}
}

echo "</ul>";

?>

icon_wink.gif
amoss
d'abord merci de ta reponse .

en suite j'ai testé ton code, et j'ai bidouillé un peu ... quand je fair un print_r du resultat de glob, je vois tout mes repertoires. mais il semble que le foreach deconne un peu ... il n'affiche rien du tout !

si tu a une idée ...

Merci
amoss
en fai tc'est bon ! j'ai fini par trouver !

voila ce qui clochait :

Citation :
if($file != "." && $file != ".." && is_dir($file)){


car $file contient le chemin jusqu'au repertoire et non le nom du repertoire lui même. on peut aussi utiliser basename() ...


Merci encore pour ton aide !
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.