Rechercher : dans
Par :

[PHP]Lister les fichiers de plusieurs dossier

Dernière réponse le 19 fév 2008 à 09:44:33 Dev, le 18 fév 2008 à 17:46:59 
 Signaler ce message aux modérateurs

Bonjour à tous,
Je viens demander votre aide car je n'ai pas trouvé comment réaliser une arborescence concernant un ou plusieurs dossiers.
Dans un dossier, il y a un ou plusieurs sous dossiers qui eux même contiennent des fichiers. J'aimerais pouvoir afficher une arborescence un peu comme windows : que lorsque l'on clique sur un dossier, celui ci affiche les sous dossiers et fichiers qu'il contient ainsi desuite.

J'ai trouvé la fonction scandir avec laquelle j'ai pu récupérer quelques fichier mais cela ne me convient guerre...
je vous montre mon code :

$dir = "../Interface_admin";
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$files[] = $filename;
}

sort($files);

print_r($files);

rsort($files);

print_r($files);

Comme résultat j'obtiens :
Array ( [0] => . [1] => .. [2] => .htaccess [3] => .htpasswd [4] => ajout_cli.php [5] => ajout_news.php [6] => ajout_news_log.php [7] => ajout_news_modif.php [8] => arborescence.php [9] => connexion.php [10] => courrier.php [11] => courrier2.php [12] => courrier2bad.php [13] => essaidate.php [14] => images [15] => interface.html [16] => modif_info_cli.php [17] => modif_news.php [18] => save [19] => suppr_cli.php [20] => suppr_news.php [21] => test.php [22] => test2.php [23] => test_maj.php [24] => test_marque_IDConcess.php [25] => test_trait_ajout_log.php [26] => trait_ajout_cli.php [27] => trait_ajout_news_log.php [28] => trait_ajout_news_log2.php [29] => trait_ajout_news_tar.php [30] => traitement_modif_info_cli.php [31] => traitement_modif_news.php [32] => valid_suppr_cli.php [33] => valid_suppr_news.php [34] => valid_trait_cli.php [35] => valid_trait_news.php ) Array ( [0] => valid_trait_news.php [1] => valid_trait_cli.php [2] => valid_suppr_news.php [3] => valid_suppr_cli.php [4] => traitement_modif_news.php [5] => traitement_modif_info_cli.php [6] => trait_ajout_news_tar.php [7] => trait_ajout_news_log2.php [8] => trait_ajout_news_log.php [9] => trait_ajout_cli.php [10] => test_trait_ajout_log.php [11] => test_marque_IDConcess.php [12] => test_maj.php [13] => test2.php [14] => test.php [15] => suppr_news.php [16] => suppr_cli.php [17] => save [18] => modif_news.php [19] => modif_info_cli.php [20] => interface.html [21] => images [22] => essaidate.php [23] => courrier2bad.php [24] => courrier2.php [25] => courrier.php [26] => connexion.php [27] => arborescence.php [28] => ajout_news_modif.php [29] => ajout_news_log.php [30] => ajout_news.php [31] => ajout_cli.php [32] => .htpasswd [33] => .htaccess [34] => .. [35] => . )

Si vous pouviez m'aider à obtenir une page qui ressemble à:

- Images
-image1.jpg
-image2.jpg

-Test
-test1.php
-test2.php

Je vous en serais très reconnaissant...

Je vous remercie par avance, n'hésitez pas à me faire part de vos suggestions.

Bonne continuation

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « [PHP]Lister les fichiers de plusieurs dossier » dans :
[PHP] Lister le contenu d'un répertoire Voir Grâce à PHP, il est possible d'afficher le contenu d'un répertoire et de ses sous-répertoires. Voici ci-dessous une fonction permettant de parcourir récursivement les répertoires et sous-répertoires et d'en afficher les fichiers : function...
[Windows] Obtenir la liste des fichiers d'un dossier VoirLister le contenu d'un dossier Voici une astuce simple qui permet de lister le nom des fichiers contenus dans un répertoire. Vous pourrez obtenir en un clic les titres de vos chansons, de vos photos, etc. dans un fichier...
[MS-Dos] Lister le contenu d'un répertoire dans un fichier VoirIl peut s'avérer pratique d'effectuer le listage d'un ou plusieurs répertoires dans un fichier, afin de tenir par exemple un catalogue de fichiers. Sous MS-Dos (ou sous Windows en ouvrant une fenêtre d'invite de commande MS-Dos) il est possible...
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
Apache - Les fichiers .htaccess VoirLes fichiers .htaccess sont des fichiers de configuration d'Apache, permettant de définir des règles dans un répertoire et dans tous ses sous-répertoires (qui n'ont pas de tel fichier à l'intérieur). On peut les utiliser pour protéger un répertoire...

1

Thamior, le 18 fév 2008 à 18:28:59
  • +1

Bonjour,

J'ai eu aussi besoin de naviguer sur mon ftp avec en passant par une appli PHP.

Je te propose le script dont je me suis servis et qui est très bien :

<style type="text/css">
<!--
body,.mybox {
font-family:'Lucida console';
font-size:12px;
color:#000000;
background:#DDDDDD;
}
.mybox {
background:#FFFFFF;
width:100px;
}
-->
</style>
<?php
if(isset($page) ||empty($page))
{
//==========================================================//
// TAILLE DU DOSSIER (ET SOUS-DOSSIERS)
//==========================================================//
function dirsize($path,$recursive=true){
$result=0;
if(!@is_dir($path) || !@is_readable($path)) return -1;
$fd=@dir($path); if(!$fd) return -1;
$tmo=time();
while($file=$fd->read()){
if(substr($file,-1,1)!='.'){
if(@is_dir($path.'/'.$file.'/'))
$result+=$recursive?dirSize($path.'/'.$file.'/'):0;
else $result+=filesize($path.'/'.$file);
}
if(time()-$tmo>=2){ // TimeOut de 2 secondes
$fd->close();
return -1;
}
}
$fd->close();
return $result;
}


//==========================================================//
// UNITE DE LA TAILLE
//==========================================================//
function getfilesize($size){
if(!isset($size) || $size<0) return 'not found';
$units=array('',' Ko',' Mo',' Go',' To');
for($i=0;$size>1024;$i++) $size/=1024;
return round($size,2).$units[$i];
}


//==========================================================//
// TRAITEMENT DU POST
//==========================================================//
$lstd=Array(); // Tableau des dossiers
$lstf=Array(); // Tableau des fichiers
$lsts=Array(); // Tailles des fichiers
$myd=@$_POST['myd']; // Sélection du dossier
$myf=@$_POST['myf']; // Sélection du(des) fichier(s)

if((substr($myd,-1,1)=='.')&&(substr($myd,-2,2)!='..')) $myd='';
@chdir($myd);
echo '<b>'.getcwd().'</b> ('.@getfilesize(dirsize(getcwd())).')<br/>';
if($handle=@opendir(getcwd()))
while(($file=@readdir($handle))!==false)
if((@is_dir($file))||($file=='..')){
$lstd[]=getcwd().'/'.$file;
}else{
$lstf[]=$file;
$lsts[]=@getfilesize(filesize(getcwd().'/'.$file));
}
@closedir($handle);


//==========================================================//
// FORMULAIRE HTML
//==========================================================//
echo '<form name="mybrowse" method="post">';


echo '<select name="myd" size="20" class="mybox" '.
'onDblClick="mybrowse.submit();">';
if(strlen(getcwd())<4){
if('A:\\'!=getcwd())
echo '<option value="A:">A:</option>';
for($x=2;$x<26;$x++){
$unit=chr(65+$x).':';
if(@is_dir($unit) && $unit.'\\'!=getcwd())
echo '<option value="'.$unit.'">'.$unit.'</option>';
}
}
for($x=0;$x<count($lstd);$x++)
echo '<option value="'.$lstd[$x].'">'.basename($lstd[$x]).'</option>';
echo '</select>';


echo '<select name="myf[]" size="20" class="mybox" '.
'style="width:300px;" multiple>';
for($x=0;$x<count($lstf);$x++)
echo '<option value="'.$lstf[$x].'">'.$lstf[$x].' ('.$lsts[$x].')</option>';
echo '</select>';


echo '<br/>'.
'<noscript>'.
'<input type="submit" value=" LISTER " class="mybox"/>'.
'</noscript>'.
'</form>';


?>

Thamior.

Répondre à Thamior

2

Dev, le 19 fév 2008 à 09:11:00

Je te remercie Tharmior.
Je vais me pencher dessus desuite :)

Répondre à Dev

3

 Dev, le 19 fév 2008 à 09:44:33

Ton code marche à merveille mais sais tu comment je pourrais faire pour, en double cliquant sur un fichier, inscrire son nom à la suite du chemin qui s'affiche à l'aide de " echo '<b>'.getcwd().'</b> ('.@getfilesize(dirsize(getcwd())).')<br/>'; "

Merci d'avance

Répondre à Dev
Collection CommentÇaMarche.net