0/5 (11 avis)
Vue 16 530 fois - Téléchargée 1 986 fois
<?php function liste_rep($rep) { if (is_dir($rep) == true) { // $rep est un répertoire valide //[A AMELIORER] // on ajoute l'antislash if ($rep[strlen($rep)-1] != '\\') { $rep = $rep.'\\' ; } // on dit dans quel répertoire on se situe chdir($rep) ; echo('<b>'.getcwd().'\\</b></br>') ; // AMELIORER if (($pt_rep = opendir($rep)) != false) { // $rep a été ouvert // scan des répertoires while (($fichier = readdir($pt_rep)) != false) { // on lit le fichier courant if ($fichier != '.') // on ignore le répertoire courant { if (is_dir($rep.$fichier) == true) { echo('+<a href="index.php?chemin='.$rep.$fichier.'\\">'.$fichier.'</a></br>') ; } } } // on retourne au premier fichier rewinddir($pt_rep) ; // scan des fichiers while (($fichier = readdir($pt_rep)) != false) { // on lit le fichier courant if (is_dir($rep.$fichier) == false) { echo('-'.$fichier.'</br>') ; } } // on ferme le répertoire qui a été ouvert closedir($pt_rep) ; } } } ?> <html> <head> <title>Explorateur de dossiers récursif</title> </head> <body> <?php if (isset($_GET['chemin']) == false) { $dossier = 'c:\\Program Files\\' ; } else { $dossier = $_GET['chemin'] ; } liste_rep($dossier) ; ?> </body> </html>
31 mai 2006 à 22:52
Il faut remplacer les deux instructions dont je parlais par :
chdir($rep) ;
$rep = getcwd().'\\' ;
echo(''.getcwd().'\\') ;
(Oui, j'aurai pu simplement dire de rajouter une instruction entre les deux...)
1 juin 2006 à 16:48
C'est plutot bien... .. . :o)
Tu peux faire...
if (is_dir($rep))
à le place de...
if (is_dir($rep) == true)
is_dir renvoyant toujours true ou false pas besoin de comparason typée (===)... pareil pour...
if (($pt_rep = opendir($rep)) != false)
if (!$pt_rep = opendir($rep))
suffit... mais c'est pas bien grave ça ne change rien...
Par contre pour les deux boucles mieux vaut faire une comparaison typée...
while (false !($fichier readdir($pt_rep)))
remplacer...
if ($rep[strlen($rep)-1] != '\\')
{
$rep = $rep.'\\' ;
}
Par
if(substr($rep,-1) != DIRECTORY_SEPARATOR)
$rep .= DIRECTORY_SEPARATOR;
remplacer...
if ($fichier != '.')
// on ignore le répertoire courant
{
if (is_dir($rep.$fichier) == true)
{
Par...
if ($fichier != '.' && $fichier != '..' && is_dir($rep.$fichier))
{
Plutot que de faire deux boucles tu peux utiliser la récursivité...
while (false !($fichier readdir($pt_rep)))
{
if ($fichier != '.' && $fichier != '..')
{
if(is_dir($rep.$fichier))
{
echo '+ [index.php?chemin='.$rep.$fichier.DIRECTORY_SEPARATOR.' '.$fichier.']
';
liste_rep($rep.$fichier);
}
else echo '-'.$fichier.'
';
}
}
Voili voilou... .. .
@ tchaOo°
1 juin 2006 à 16:53
En ce qui concerne les tests genre "==true", je suis au courant, je changerai ceci plus tard pour que ce soit plus propre. Je les ai mis car j'ai changé plusieurs fois les conditions...
Je suis actuellement en train de faire un affichage des résultats dans un tableau xhtml et je suis assez fier du résultat. Si ça intéresse certains, je pourrais également le poster (en prenant soin de l'adapter avec les conseils de kankrelune).
1 juin 2006 à 17:40
@ tchaOo°
1 juin 2006 à 17:51
j'aime bien avoir tout mes codes formatés de la même façon, donc je les retirerai après.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.