Lister des dossiers/fichiers

[REQ] Listing dossier
Invité n'ayant pas de compte PHPfrance

29 mai 2006, 23:35

Bonjour :D

Voila j'aurais une question, je voudrais lister le contenue du server, j'ai trouver ce code...
function liste($repertoire="") {
  $handle=opendir("./".$repertoire);
  while ($fichier = readdir($handle)) {
  if(!ereg("^\.",$fichier) && is_dir($repertoire.$fichier) ) {
    echo "<input type='radio' name='dossier' value='".$repertoire.$fichier."' />".$repertoire.$fichier."<br />";
    listedossier_rec($repertoire.$fichier."/");
    }
  }
}

Et sinon j'ai celui la:
function lister($chemin) {
   echo '<u>Contenu du dossier '.$chemin.'</u><br><blockquote>';
     //nom du répertoire à lister
   $nom_repertoire = $chemin;
   //on ouvre un pointeur sur le repertoire
   $pointeur = opendir($nom_repertoire);
   //pour chaque fichier et dossier
   while ($fichier = readdir($pointeur))
   {
      //on ne traite pas les . et ..
      if(($fichier != '.') && ($fichier != '..'))
      {
         //si c'est un dossier, on le lit
         if (is_dir($nom_repertoire.'/'.$fichier))
         {
            echo '<blockquote>';   
            lister($nom_repertoire.'/'.$fichier);
            echo '</blockquote>';
         }
         else
         {
            //c'est un fichier, on l'affiche
            echo $fichier.'<br>';
         }
      }
   }
   echo '</blockquote><u>Fin du dossier '.$nom_repertoire.'</u><br>';

   //fermeture du pointeur
   closedir($pointeur);
}
J'ai tester le premier, mais j'ai une error quand mes fichier font plus dune certaine taille...au allentour des 10Mo je crois..

J'ai cette error :

Code : Tout sélectionner

Warning: is_dir() [function.is-dir]: Unable to access this file in /mnt/122/sdb/a/5/xxxxx/lister.php on line 18
Quand au 2eime j'ai 50 erreur...

Donc merci a l'ame charitable qui m'aidera :lol:

Listing
Invité n'ayant pas de compte PHPfrance

29 mai 2006, 23:45

Le prob dans le premier code vient d'ici:

$repertoire.$fichier

Nan??

il y a une mauvaise liaison entre le repertoire et le fichier..



HS : Faudrait ke je retrouve mon pass?? :roll:

Mammouth du PHP | 19672 Messages

30 mai 2006, 07:18

Le problème est probablement là:
if (is_dir($nom_repertoire.'/'.$fichier))
Il faudrait écrire :
if (is_dir($fichier))
Si on considère en effet que juste avant, ton premier if se fait sur $fichier tout simplement, la suite devrait se faire sur cette même variable.

Le echo() qui suit en revanche ne devrait pas poser de problème.

Quant à la taille des fichiers, ça ne devrait pas changer quoique ce soit...:-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 mai 2006, 10:15

La deuxième fonctionne très bien tel quel chez moi...

Quant au premier script, quand tu fais $repertoire.$fichier, il faut t'assurer que $repertoire termine bien par un "/". A quoi correspond la fonction listedossier_rec ? ca serait pas plutot liste() qu'il faudrait utiliser pour qu'il tourne en récursif ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

30 mai 2006, 10:20

modération : dans les réglements du forum, il est écrit ça :
Veuillez utiliser un titre clair et précis qui correspond bien à votre problème.
Les titres contenant "HELP", "Aidez-moi !" n'apportent rien à la compréhension de votre problème. De même, nous savons déjà par votre message que vous avez besoin d'aide.

J'ai donc modifié ton titre. Merci d'y prendre garde par la suite ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Slurp
Invité n'ayant pas de compte PHPfrance

30 mai 2006, 10:48

@zeus dsl je me suis tromper dans les champs (pseudo/titre) :roll:


Bon j'ai retester, j'ai reussi pour le listing des dossier...
Mais maintenant c'est au niveau niveau de is_file

en faite g fait des test, j'ai mit un fichier de 4.77Mo sur mon FTP, pas de prob.
J'en remet un de 4.80Mo, ca bug il me met :

Code : Tout sélectionner

Warning: is_file() [function.is-file]: Unable to access this file in /mnt/122/sdb/a/5/xxxx/lister.php on line 27
ligne 27:
    if(is_file("$dossier/$fichier") && !ereg($GLOBALS['EXCLUDE'],$fichier)) {
J'ai htacces pour empecher l'acces direct

Slurp
Invité n'ayant pas de compte PHPfrance

30 mai 2006, 11:26

J'ai beau utiliser n'importe quel fonction de listing (j'en ais essayer 50 que j'ai trouver sur le net...)
Il me srot tout le temps la meme error:

Warning: is_file() [function.is-file]: Unable to access this file in /mnt/122/sdb/a/5/xxxx/2.php on line 11

ligne 11 : if(is_file($rep.$f))[/code]

Slurp
Invité n'ayant pas de compte PHPfrance

30 mai 2006, 11:43

Bon a premier vue, c'est free (oui 'est sur free que je suis) qi block le listing des fichier sup a 5Mo...

Aurait t-il une autre fonction, permettant de les lister??

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 mai 2006, 11:46

Si le problème est sur is_file(), peut être peut tu essayer d'utiliser is_dir() en inversant ta condition ?

Slurp
Invité n'ayant pas de compte PHPfrance

30 mai 2006, 11:53

is_dir, liste les repertoire, pas les fichier.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 mai 2006, 12:04

Il liste pas non, il te dit juste si le chemin que tu lui passes en paramètre correspond à un dossier...
Vu que les chemins proviennent d'une fonction, c'est que les objets existent (il va pas les inventer non plus ;)) et si is_dir() te permet de savoir que ce n'est pas un dossier c'est qu'il y a quand même de grandes chances que ce soit un fichier :)

Slurp
Invité n'ayant pas de compte PHPfrance

30 mai 2006, 12:28

Oki Ryle Merci de ton aide

Je viens de trouver un script qui me list le contenue, meme avec des fichier superieur a 5Mo sans affichier d'erreur, j'essaye de l'implementer dans mon premier script, je vous tient au courrant....

Merci encore pour l'aide :D [/php]

Slurp
Invité n'ayant pas de compte PHPfrance

30 mai 2006, 13:20

C'est bon...ca marche :D

Merci a vous

Enfin ca marche, on va dire que c du system D :wink:

Je verrai pour le refaire proprement quand j'aurai plus de temps...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 mai 2006, 22:07

Juste par curiosité et peut être que ça aidera quelqu'un d'autre peux tu nous montrer le code ? (même si c'est du système D ) :)

(en même temps en tant qu'invité je ne suis pas sûr qu'il va revenir sur ce post :x )

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 24 Messages

05 juin 2006, 15:04

pffff dommage ca m'aurait bien interressé moi :evil: