IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Lister tous les répertoires récursivement


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 14
    Par défaut Lister tous les répertoires récursivement
    Bonjour chers développeurs!

    Je cherche récupérer des informations sur mon serveur, en particulier toute l'arborescence à partir d'un chemin entré en paramètre.

    Voici mon arborescence:


    J'ai fait des recherches et les fonctions comme readdir() ou encore directoryToArray() accompagné d'un if et une boucle semblent me convenir pour lister tout a partir d'un chemin, mais je voudrais en plus que seul le fichier le plus récent de chaque serveur soit affiché, mais je ne trouve pas le moyen de le faire dans la boucle. C'est un peu compliqué car ce doit être le fichier le plus récent par rapport à son nom et pas à sa date (je ne sais pas si vous me suivez) donc la fonction filemtime() ne semble pas me convenir...

    Je sollicite donc une âme charitable pour m'aider, merci!

  2. #2
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    Si c'est par le nom, c'est forcément un tri par ordre alphabétique. Manque de bol, ta nomenclature ne marche pour aucune des méthodes de tries standard (tu stockerai tes fichiers au format date SQL, YYYY--MM-JJ, ça serait directement dans le bon ordre).

    Bref, la solution passe par le stockage de tes noms de fichiers dans un tableau temportaire, et par l'utilisation d'une fonction de tri par callback, genre usort().

    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    function Tri(& $a, & $b)
    {
       if(intval(substr($a, 6, 4)) > intval(substr($b, 7, 4)))
           return 1;
      elseif(intval(substr($a, 6, 4)) < intval(substr($b, 7, 4)))
           return -1;
      else
      {
           if(intval(substr($a, 3, 2)) > intval(substr($b, 3, 2)))
              return 1;
           elseif(intval(substr($a, 3, 2)) < intval(substr($b, 3, 2)))
              return -1;
           else
           {
                  if(intval(substr($a, 0, 2)) > intval(substr($b, 0, 2)))
                       return 1;
                  elseif(intval(substr($a, 0, 2)) < intval(substr($b, 0, 2)))
                       return -1;
                  else
                      return 0;
            }
      }
    }
     
    usort($tab_de_date, "Tri");
    A debugger car je t'écrit ça à la volée !

  3. #3
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    A toute fin utile, je te met aussi le copier-coller d'une méthode que j'avais utilisé sur un ancien projet mais que j'avais supprimé car elle ne marche pas avec les versions un peu ancienne de PHP (à cause du use) comme c'était le cas pour le serveur qui hébergeait ce projet. C'est une fonction de tri de tableau multi critère, ce qui peut aussi être intéressant si tu exploses tes nom de fichier et que tu les range dans un tableau (explode('-', $nom_fichier)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    // LA FONCTION CI-DESSOUS EST SUPER, MAIS NE FONCTIONNE PAS AVEC PHP 2.2.5
    	/*
    	function multiSort() 
    	{ 
    		$args = func_get_args(); 
    		$c = count($args); 
    		if ($c < 2) { 
    			return false; 
    		} 
    		//recup tableau a trier 
    		$array = array_splice($args, 0, 1); 
    		$array = $array[0]; 
    		//trier avec une focntion anonyme
    		usort($array, function(& $a, & $b) use($args) { 
    			$i = 0; 
    			$c = count($args); 
    			$cmp = 0; 
    			while($cmp == 0 && $i < $c) 
    			{ 
    				$cmp = strcmp($a[ $args[ $i ] ], $b[ $args[ $i ] ]); 
    				$i++; 
    			} 
    			return $cmp; 
        	}); 
        	return $array; 
    	} 
    	*/

  4. #4
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Bonjour.
    il y a peut être plus simple.
    Sil tes noms de fichier commence bien par jj-mm-aaaa alors tu peut creer une variable date_pour_tri de la forme aaaammjj dans ta requête sur laquelle tu feras le tri avec ORDER BY date_pour_tri

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONCAT (SUBSTRING (file_name,7, 4), SUBSTRING (file_name,4, 2), SUBSTRING (file_name, 1, 2)) AS date_pour_tri
    file_name à remplacer par le bon nom de champ ...

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    ou même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    STR_TO_DATE(SUBSTRING (filename,1,10), '%d/%m/%Y')
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Lister tous les répertoires d'un serveur
    Par r0seBa dans le forum C#
    Réponses: 3
    Dernier message: 07/11/2011, 16h04
  2. [PHP 5.2] Lister tous les répertoires de l'espace web
    Par renaud26 dans le forum Langage
    Réponses: 6
    Dernier message: 01/08/2011, 11h19
  3. Lister tous les répertoires virtuelles
    Par toxine7777 dans le forum ASP
    Réponses: 1
    Dernier message: 13/10/2010, 14h14
  4. [Tableaux] Lister tous les répertoires dans une liste
    Par cdevl32 dans le forum Langage
    Réponses: 10
    Dernier message: 01/03/2008, 18h20
  5. Lister tous les documents d'un répertoire
    Par Jiyuu dans le forum VB.NET
    Réponses: 7
    Dernier message: 22/09/2007, 17h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo