Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1936 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  trier le contenu d'un readdir()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

trier le contenu d'un readdir()

n°1201898
syl94
Ni!
Posté le 18-09-2005 à 18:45:07  profilanswer
 

Salut,
 
je viens de faire une recherche sur le forum mais j'ai pas vraiment trouvé la réponse à mon probleme...
 
Voila mon code :
 

Code :
  1. $oDir = opendir($LogDir);
  2.         while (false !== ($logFiles = readdir($oDir))) {
  3.                 if ($logFiles != "." && $logFiles != ".." ) {
  4.                 $this_file = array(count($logFiles),$logFiles);
  5.                 sort($this_file);
  6.                 print_r($this_file);
  7.        
  8.                 $filesize = round(filesize($LogDir."/".$this_file[1]) / 1024,2);
  9.                         print "<input type=checkbox value=".$this_file[1]." name=logfile[]>&nbsp;<a href=".$_SERVER["PHP_SELF"]."?a=viewlog&v=".$this_file[1].">".$this_file[1]."</a> - (".$filesize." Ko)<br />\n";
  10.                 }
  11.         }


 
Donc je colle le résultat dans un tableau. Le print_r renvoi ca :
 

Code :
  1. Array ( [0] => 1 [1] => 20050917-history.log )  20050917-history.log - (0.13 Ko)
  2. Array ( [0] => 1 [1] => 20050916-history.log )  20050916-history.log - (0.61 Ko)
  3. Array ( [0] => 1 [1] => 20050914-history.log )  20050914-history.log - (0.55 Ko)
  4. Array ( [0] => 1 [1] => 20050915-history.log )  20050915-history.log - (0.85 Ko)
  5. Array ( [0] => 1 [1] => 20050918-history.log )  20050918-history.log - (0.8 Ko)


 
Donc forcement mon sort() ne fonctionne pas ...  
 
Si vous avez une idée de la méthode a utiliser, je suis preneur :)
 
Merci

mood
Publicité
Posté le 18-09-2005 à 18:45:07  profilanswer
 

n°1202018
claque2000
GamerTag : claquos2000
Posté le 19-09-2005 à 00:01:05  profilanswer
 

Tu veux le trier comment le contenu de ton readdir ?
Déjà trier le contenu d'un readdir ça a pas trop de sens, readdir renvoyant une string.
Puis sinon, readdir lit les fichiers et dossiers présents dans ton dossier dans l'ordre alphabétique, la plupart des fs organisant les fichiers comme cela.
Donc à priori pas besoin de sort


Message édité par claque2000 le 19-09-2005 à 00:01:56

---------------
Linux registered user #352556
n°1202026
syl94
Ni!
Posté le 19-09-2005 à 00:16:01  profilanswer
 

je souhaite trier mes fichiers par nom (ascendant ou descendant, peut importe pour le moment). Le site tourne sur un systeme GNU/Linux, le fs est en ext3 (pas de lien direct je presume). Lorsque j'affiche le resultat "brut" du readdir, le resultat est ce que j'ai indiqué dans mon precedent post, a savoir  
 

Code :
  1. 20050917-history.log
  2. 20050916-history.log
  3. 20050914-history.log
  4. 20050915-history.log
  5. 20050918-history.log


 
Bien entendu, si j'affiche le contenu du répertoire qui contient ces fichiers via un ls -l, ils sont correctement triés. Je souhaiterai pouvoir récuperer cet ordre sur la page, histoire que ce soit un peu plus cohérent (ouais c'est de l'esthetisme je suis d'accord ;) )
 
Merci :)


Message édité par syl94 le 19-09-2005 à 00:18:22
n°1202033
claque2000
GamerTag : claquos2000
Posté le 19-09-2005 à 00:43:45  profilanswer
 

Hum effectivement, sous macosx, l'affichage se fait dans l'ordre alphabétique mais sous linux, il semblerait que ce soit ordonné plus par date de création du fichier avec les noms de fichiers débutant par une lettre avant ceux commencant par un chiffre (ceci étant le résultat obtenu après divers test de l'affichage brut du readdir sur un serveur linux).  
 
La solution si tu utilise php5 est scandir :  
 http://fr2.php.net/manual/en/function.scandir.php
 
Sur cette page est aussi proposée l'alternative pour php4 qui fonctionne sous linux(tested)


---------------
Linux registered user #352556
n°1202053
syl94
Ni!
Posté le 19-09-2005 à 08:43:53  profilanswer
 

ok je connaissais pas cette alternative. Je vais tester ca.
 
Merci

n°1202250
omega2
Posté le 19-09-2005 à 11:35:57  profilanswer
 

Et avant php5, il suffit de transformer la chaine de caractére en ttableau et d'ordonner le tableau.

n°1202842
syl94
Ni!
Posté le 19-09-2005 à 22:23:12  profilanswer
 

bon j'ai trouvé une solution alternative :
 

Code :
  1. $files = array();
  2.         while (false !== ($logFiles = readdir($oDir))) {
  3.                 if ($logFiles == "." || $logFiles == ".." ) continue;
  4.                 $files[] = $logFiles;
  5.         }
  6.         sort($files);
  7.         for ($i=0;$i<count($files);$i++) {
  8.                 $filesize = round(filesize($LogDir."/".$files[$i]) / 1024,2);
  9.                 print "<input type=checkbox value=".$files[$i]." name=logfile[]>&nbsp;<a href=".$_SERVER["PHP_SELF"]."?a=viewlog&v=".$files[$i].">".$files[$i]."</a> - (".$filesize." Ko)<br />\n";
  10.         }


 
le resultat est correctement trié :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  trier le contenu d'un readdir()

 

Sujets relatifs
lecture du contenu d'une page html généréejoindre 2 champs au contenu différents
[???] convertir le formatage du contenu d'1 fichier txt ?Récupérer sous Excel le contenu de la page HTML en cours de l'explorer
contenu d'une news en popup en cliquant sur son titreRecuperer tout le contenu d'une balise (A L'AIDE :((( )
[php] Trier par ordre alphabétique [RESOLU]récupérer du contenu XML d'une fonction PHP dans une feuille XSLT ?
jsp trier tab de string 
Plus de sujets relatifs à : trier le contenu d'un readdir()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR