Lister un repertoire [Résolu]

Signaler
Messages postés
16
Date d'inscription
lundi 23 décembre 2019
Statut
Membre
Dernière intervention
17 janvier 2020
-
yg_be
Messages postés
9343
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
17 janvier 2020
-
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

Messages postés
27274
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2020
2016
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 )
Bill-Billion
Messages postés
16
Date d'inscription
lundi 23 décembre 2019
Statut
Membre
Dernière intervention
17 janvier 2020

Merçi pour votre réponse je vais en chercher d'avantage sur cette fonction
Messages postés
3547
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
17 janvier 2020
923
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
Bill-Billion
Messages postés
16
Date d'inscription
lundi 23 décembre 2019
Statut
Membre
Dernière intervention
17 janvier 2020

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!
Reivax962
Messages postés
3547
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
17 janvier 2020
923 > Bill-Billion
Messages postés
16
Date d'inscription
lundi 23 décembre 2019
Statut
Membre
Dernière intervention
17 janvier 2020

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 ;)
Messages postés
9343
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
17 janvier 2020
489
bonjour, suggestion pour compter le nombre de fichiers:
$nombre=0;
while($file = readdir($dir)) {
   if( ! is_dir($file)  ) {
      $nombre = $nombre + 1 ;
   }
}
jordane45
Messages postés
27274
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2020
2016 > Bill-Billion
Messages postés
16
Date d'inscription
lundi 23 décembre 2019
Statut
Membre
Dernière intervention
17 janvier 2020

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 ?
Bill-Billion
Messages postés
16
Date d'inscription
lundi 23 décembre 2019
Statut
Membre
Dernière intervention
17 janvier 2020
> jordane45
Messages postés
27274
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2020

Si un utilisateur se desinscrit sur mon site je devrais aussi supprimer ses données?(simple conseil)
Pour l'uniq id je l'ai fait mais j'aimerais comprendre cette partie de l'explication
https://www.php.net/manual/fr/function.uniqid.php

Avertissement
Cette fonction ne garantie pas l'unicité des valeurs de retour. Car la plupart des systèmes ajustent l'horloge système par NTP ou similaire; l'horloge système est modifié constament.
yg_be
Messages postés
9343
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
17 janvier 2020
489 > Bill-Billion
Messages postés
16
Date d'inscription
lundi 23 décembre 2019
Statut
Membre
Dernière intervention
17 janvier 2020

il est possible, exceptionnellement, que la fonction retourne une valeur déjà retournée précédemment. il est donc prudent de vérifier que la valeur n'est pas encore utilisée.
Bill-Billion
Messages postés
16
Date d'inscription
lundi 23 décembre 2019
Statut
Membre
Dernière intervention
17 janvier 2020
> yg_be
Messages postés
9343
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
17 janvier 2020

il est possible, exceptionnellement, que la fonction retourne une valeur déjà retournée précédemment. il est donc prudent de vérifier que la valeur n'est pas encore utilisée.
Oui ça j'ai compris il ne garantie pas l'unicité en retour à une forte probalité à moins qu'on active bool $more_entropy=true;
Ce que j'ai pas compris exactement c'est ça:
Car la plupart des systèmes ajustent l'horloge système par NTP ou similaire; l'horloge système est modifié constament.
yg_be
Messages postés
9343
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
17 janvier 2020
489 > Bill-Billion
Messages postés
16
Date d'inscription
lundi 23 décembre 2019
Statut
Membre
Dernière intervention
17 janvier 2020

les systèmes utilisent des techniques comme le protocole NTP pour connaitre l'heure exacte, et ajustent leur horloge en fonction, il est donc possible que la fonction soit appelée deux fois "au même moment", ce qui risque de donner deux fois le même résultat.
Messages postés
16
Date d'inscription
lundi 23 décembre 2019
Statut
Membre
Dernière intervention
17 janvier 2020

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