Lister un repertoire

Résolu
Bill-Billion Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -  
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'aimerais lister un dossier j'ai trouvé ce code sur un forum

<?php
function list_dir($name) {
if ($dir = opendir($name)) {
while($file = readdir($dir)) {
echo "$file\n";
if(is_dir($file) && !in_array($file, array(".",".."))) {
list_dir($file);
}
}
closedir($dir);
}
}
list_dir(".")
?>

Je l'ai vu enfaite pour la premiere fois ::j'ai d'abord lu les explications pour en comprendre,par contre j'ai pas trouvé tous les explications.
J'aimerais que quelqu'un m'aide à comprendre
Le gag
si $dir est le chemin
mon script php se trouve dans le dossier (Ex:essaie)
Rps du script

/*
.
..
soleil.png
lune.png
  • /

pourquoi $file m'affiche (..)par la suite s'il n'est pas entré dans un sous dossier pour afficher les fichier?
Mon autre question:
L'objectif enfaite c'etait d'uploader un fichier
move_uploaded_file()
J'ai d'abord deplacé le fichier et par la suite stocké son nom en base de données
ce que je veux c'est generer un compteur pour chaque fichier envoyé via le formulaire
je voudrais compter le nombre de fichier qui se trouve dans le dossier pour enfaire une boucle.
1.png,2.png
J'aimerais savoir comment je peux le faire?
Merçi de votre aide

4 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour
Je n'ai pas tout compris à ton explication..
Pourquoi vouloir les nommer 1.jpeg 2 ...3...
Il serait plus simple de générer des noms unique (en utilisant la fonction uniqid() par exemple )
0
Bill-Billion Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
 
Merçi pour votre réponse je vais en chercher d'avantage sur cette fonction
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Les répertoires « factices » « . » et « .. » seront toujours retournés par la fonction readdir.
Si tu ne veux pas les afficher, tu peux utiliser la même technique que pour la récurrence de ton code : remplacer
echo "$file\n";
par
if (!in_array($file, array(".",".."))) echo "$file\n";


Xavier
0
Bill-Billion Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
 
Ok,si j'ai bien compris Reivax962 "." et ".." n'existe pas vraiment dans le repertoire c'est pour cela si j'ai fait ceci
if(in_array($file,array(" . ", " .. "))
{
}

Ça m'affiche une erreur!
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011 > Bill-Billion Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
 
Alors de façon générale, « ça m'affiche une erreur » sans dire qu'elle est l'erreur, c'est pas très efficace pour recevoir de l'aide ;)
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, suggestion pour compter le nombre de fichiers:
$nombre=0;
while($file = readdir($dir)) {
   if( ! is_dir($file)  ) {
      $nombre = $nombre + 1 ;
   }
}
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Ce qui ne sera plus necessaire si il génère des noms uniques aléatoires pour ses fichiers au lieu de vouloir faire un système d'incrémentation.

Incrémentation qui, de toutes façons, pourrait se faire en utilisant une simple requête SQL (un COUNT dans sa bdd... ) puisqu'il semble indiquer qu'il stocke le chemin des fichiers en base...
0
Bill-Billion Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Oui c'etait une des posibilités mais j'ai voulu aussi connaître la réponse de l'autre!
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Bill-Billion Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
 
Le problème en incrémentant par rapport au nombre de fichiers dans ton répertoire... c'est que si tu en supprime.... au prochain ajout tu vas écraser des fichiers existants...
Pour être plus clair :
Tu as 3 fichiers ( le 1, le 2 et le 3 )
Pour une raison quelconque, tu supprimes le fichier 2
Puis tu veux uploader un nouveau fichier... il se nommera 3 ... et va donc écraser le "3" existant....

Pas de soucis avec le nommage "unique"....
0
Bill-Billion Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Ok compris donc allons pour l'unique Id,bien qu'il ne me paraît pas logique de supprimer les images du visiteur dans le dossier
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Bill-Billion Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
 
Un utilisateur n'a pas le droit de supprimer ses images ?
Tu ne supprimeras pas les images d'un utilisateur si tu supprimes l’utilisateur (ou qu'il se désinscrit ? )

=> Pour ces deux points.. attention à la RGPD !

et puis... tu ne feras jamais d'erreur et ne supprimeras jamais (par erreur, mégarde... bug.. ) un fichier dans ce répertoire ?
0
Bill-Billion Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
 
Merçi encore pour vos réponse,s'i y a toujours quelques chose à me faire comprendre de plus j'attends vos réponse,avant de mettre en résolu

Cordialement
0