Lister un repertoire

Résolu/Fermé
Bill-Billion Messages postés 41 Date d'inscription lundi 23 décembre 2019 Statut Membre Dernière intervention 2 septembre 2020 - Modifié le 16 janv. 2020 à 01:06
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 20 janv. 2020 à 09:38
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
16 janv. 2020 à 07:00
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 lundi 23 décembre 2019 Statut Membre Dernière intervention 2 septembre 2020
16 janv. 2020 à 15:00
Merçi pour votre réponse je vais en chercher d'avantage sur cette fonction
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
16 janv. 2020 à 09:58
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 lundi 23 décembre 2019 Statut Membre Dernière intervention 2 septembre 2020
16 janv. 2020 à 14:58
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011 > Bill-Billion Messages postés 41 Date d'inscription lundi 23 décembre 2019 Statut Membre Dernière intervention 2 septembre 2020
17 janv. 2020 à 09:12
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 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
16 janv. 2020 à 10:10
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
16 janv. 2020 à 10:27
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 lundi 23 décembre 2019 Statut Membre Dernière intervention 2 septembre 2020 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
16 janv. 2020 à 14:52
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > Bill-Billion Messages postés 41 Date d'inscription lundi 23 décembre 2019 Statut Membre Dernière intervention 2 septembre 2020
16 janv. 2020 à 14:55
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 lundi 23 décembre 2019 Statut Membre Dernière intervention 2 septembre 2020 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
16 janv. 2020 à 15:09
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > Bill-Billion Messages postés 41 Date d'inscription lundi 23 décembre 2019 Statut Membre Dernière intervention 2 septembre 2020
16 janv. 2020 à 15:48
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 lundi 23 décembre 2019 Statut Membre Dernière intervention 2 septembre 2020
16 janv. 2020 à 15:01
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