trier le contenu de mon répertoire en fonction du type de fichier

trier le contenu de mon répertoire en fonction du type de fichier - PHP - Programmation

Marsh Posté le 16-03-2007 à 20:08:46    

Salut à tous,
 
j'ai une fonction qui affiche le contenu de mon répertoire dans l'ordre alphabétique.
J'aimerais moi qu'elle m'affiche le contenu de façon alphabétique mais en mettant d'abord les répertoires...(comme sous windows quoi... :D )
 
Merci de votre aide

Reply

Marsh Posté le 16-03-2007 à 20:08:46   

Reply

Marsh Posté le 16-03-2007 à 22:07:46    

Reply

Marsh Posté le 17-03-2007 à 12:54:21    

non je vois pas :(

Reply

Marsh Posté le 17-03-2007 à 14:50:19    

Bin dans ta boucle tu stockes les noms des répertoires et des fichiers dans deux tableaux à part, pis t'affiches dans l'ordre que tu veux. :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 17-03-2007 à 19:58:19    

ok je vais essayer...merci

Reply

Marsh Posté le 17-03-2007 à 21:12:36    

Salut,  
 
Tu trouveras ci-dessous un début de réponse, très et trop simpliste mais assez détaillée.
 
Mais tout n'est pas fait  :)  
 
Bonne chance pour la suite.
 

Code :
  1. <?PHP
  2. function vichenzo_listing ($directory)
  3. {
  4. // En PHP5 tu as la fonction scandir qui te retourne un tableau
  5. $files = scandir($directory);
  6. // SI PHP4 vas faire un tour sur le lien ci-dessous
  7. // http://fr3.php.net/manual/fr/function.scandir.php
  8. // Décommente les deux lignes ci dessous pour voir la tête du tableau
  9. //print_r($files);
  10. //Echo '<br><hr><br>';
  11. // On initialise la variable $html qui vas nous servir pour retourner le résultat
  12. $html ='';
  13. // Avec la fonction "is_dir" on test pour savoir si c'est un dossier
  14. foreach ($files as $value)
  15. {
  16.    $test = is_dir ($directory.$value);
  17.    if ($test == TRUE)
  18.    {
  19.  $html .= $value.'<br>';
  20.    }
  21. }
  22. // Avec la fonction "is_file' on test pour savoir si c'est un fichier
  23. foreach ($files as $value)
  24. {
  25.    $test = is_file ($directory.$value);
  26.    if ($test == TRUE)
  27.    {
  28.  $html .= $value.'<br>';
  29.    }
  30. }
  31. return $html;
  32. }
  33. // Remplace 'MON_REPERTOIRE' par le répertoire à scanner
  34. $directory    = 'MON_REPERTOIRE';
  35. // On éxecute la fonction
  36. $html = vichenzo_listing ($directory);
  37. //On affiche le résultat
  38. Echo $html;
  39. ?>


Message édité par Protohd le 17-03-2007 à 21:13:33
Reply

Marsh Posté le 19-03-2007 à 10:23:59    

Merci beaucoup Protohd pour ton aide...je vais étudier ça ce soir...:D
 
Merci

Reply

Marsh Posté le 19-03-2007 à 19:22:21    

J'ai regardé comment je pourrais faire mais d'après ce que je comprend, il faudrait que je mette tous les résultats dans un tableau pour ensuite utiliser la fonction sort()
Mais le probleme c'est que j'affiche tout dans un tableau Html sans utiliser de array
Voilà en gros la structure de mon code...j'ai retire tout ce qui était html pour que ca soit plus clair...ca veut dire qu'il faut que je recommence tout  :sweat: ? ou il y a t-il une autre solution??

Code :
  1. function ExploreDir($dir)
  2. {
  3. $rep=opendir($dir);
  4. chdir($dir);
  5. if ($handle = opendir('.'))
  6. {
  7. while ($fichier=readdir($rep)) 
  8. {
  9.  if ($fichier != "." && $fichier != ".." )
  10.   {
  11.   if (is_dir($fichier))
  12.           {
  13.    echo "<a href=index.php?page=affich_rep&dir=".$dir.">".$fichier."</a><br>";
  14.           }
  15.           else
  16.           {
  17.    echo "<a href=".$dir."/".$fichier.">".$fichier."</a>";
  18.    }
  19.   }
  20. }
  21. }
  22. closedir($handle);
  23. }


 
PS :  je pense que vous avez devinez que mon niveau php n'est pas très élevé... :whistle:


Message édité par vichenzo le 19-03-2007 à 19:23:04
Reply

Marsh Posté le 19-03-2007 à 22:31:01    

Bonsoir,  
 
Dans ton code, il y'a peut-être un problème dans ta boucle WHILE.
 
Dans un premier temps, fais une boucle ne retenant que les répertoires.
Ensuite, refais une autre boucle pour ne retenir que ce qui n'est pas des répertoires (regardes mon exemple).
 
Ainsi, dans la première boucle ton premier "Echo" ne vas afficher que les répertoires.
Ensuite, dans la seconde boucle "Echo" ne vas afficher que les fichiers.
 
Tu as fait des "Echo" dans une fonction, pourquoi pas mais je pense que ce n'est pas très propre.
Remplaces "Echo" par "$html .=" ( ".=" pour l'aditionner au précédent).
Sans oublier de faire un "return $html;" à la fin de ta fonction pour qu'il te renvoie la valeur.
Valeur que tu vas récupérer en faisant : $html = ExploreDir ("mon_repertoire" );
Valeur que tu vas afficher en faisant "Echo $html;"
 
Je n'ai pas tout vérifié, mais là tu devrais vraiment être sur la voie pour résoudre ton problème.

Reply

Marsh Posté le 20-03-2007 à 01:12:31    

MErci Protohd je vais essayé ça rapidement (mais hélas pas avant jeudi :()
 
Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed