[PHP]Lister les fichiers de plusieurs dossier
Dev
-
jaycreation -
jaycreation -
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
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
A voir également:
- [PHP]Lister les fichiers de plusieurs dossier
- Dossier appdata - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Impossible de supprimer un dossier - Guide
- Mettre un mot de passe sur un dossier - Guide
- Explorateur de fichiers - Guide
4 réponses
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.
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.