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

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Trier par ordre alphabétique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Trier par ordre alphabétique

n°1136977
Proov
Art & Science
Posté le 01-07-2005 à 11:19:45  profilanswer
 

salut !!
 
j'ai récupéré un petit script PHP sur le net pour me lister un répertoire qui contient environ 1300 fichiers, ça donne ça: http://flasheur.free.fr/warcraft3/maps (je l'ai un peu modifié visuellement)
 
l'embetant c'est qu'il affiche les fichiers dans le désordre :( et j'aimerais qu'il soit classé par ordre alphabétique, avant je savais le faire quand j'essaiyai le PHP mais je le faisait sur les base de données MySQL, là je sais pas le faire...  
 
 
y'a 2 fichiers dans le script: fonctions.php et index.php
je vous donne la partie qui liste les fichiers :jap:  

Code :
  1. // --------------------------------------- Affichage des fichiers ----------------------------------------- //
  2. $IndiceImage++;
  3. for($i=0;$i<$fileind;$i++)
  4. {
  5. $nomfic      = $filetab[$i]["nom"];
  6. $ext         = GetExtension($nomfic);
  7. $ext         = strtolower($ext);
  8. $icone       = GetIcone($ext);
  9. $IndiceImage = $i;
  10. $pair      = $i%2;
  11. ?>
  12. <TR>
  13.  <TD <? if ($pair==1) {echo "";?>BGCOLOR="#F2F4F7" bordercolor="#F2F4F7"<?} else {echo "";?>BGCOLOR="#EBEEF3" bordercolor="#EBEEF3"<?}?>width=35 ALIGN="center"><IMG SRC ="./images/<? echo $icone ?>"></TD>
  14.  <TD <? if ($pair==1) {echo "";?>BGCOLOR="#F2F4F7" bordercolor="#F2F4F7"<?} else {echo "";?>BGCOLOR="#EBEEF3" bordercolor="#EBEEF3"<?}?>ALIGN="left"  ><font face=" Verdana,Arial, Helvetica, sans-serif" size="1"><A HREF="<? echo $chemin."/".$nomfic; ?>"><? echo $nomfic ; ?></A></font></TD>
  15.  <TD <? if ($pair==1) {echo "";?>BGCOLOR="#F2F4F7" bordercolor="#F2F4F7"<?} else {echo "";?>BGCOLOR="#EBEEF3" bordercolor="#EBEEF3"<?}?>ALIGN="right"  ><font face=" Verdana,Arial, Helvetica, sans-serif" size="1"><? echo FormatTailleFichier(filesize($chemin."/".$nomfic)); ?></font></TD>
  16. </TR>
  17. <?
  18. }
  19. // ------ fin du tableau ---- //
  20. ?>


 
vous y comprenez quelquechose ou pas ? :D  
 
sinon si y'a une autre maniere de lister un dossier, en conservant ce coté esthétique qui permette un lien sur chaque fichier je suis preneur :jap:  
 
merci :hello:

mood
Publicité
Posté le 01-07-2005 à 11:19:45  profilanswer
 

n°1137051
GaSPaRD77
Posté le 01-07-2005 à 11:59:40  profilanswer
 

Bah on pourrait avoir le code qui recupère la liste des fichiers .. ?

n°1137056
KrisCool
“Verbeux„
Posté le 01-07-2005 à 12:02:29  profilanswer
 

Pas besoin.
Tu as visiblement un tableau de tableaux associatifs.
$filetab[$i]['nom'] contient le nom du fichier.
 
Utilise usort() sur $filetab, avec une fonction de comparaison qui compare le champ 'nom' de chacun des éléments de $filetab.
 
A moins de faire le boulot à ta place, je ne peux pas être plus précis ;)


Message édité par KrisCool le 01-07-2005 à 12:03:06

---------------
Loose Change Lies | Bars | Last.fm
n°1137193
Proov
Art & Science
Posté le 01-07-2005 à 14:12:02  profilanswer
 

merci je vais essayer, si vous voulez je vous uploade le code source :jap:

n°1137231
Proov
Art & Science
Posté le 01-07-2005 à 14:32:57  profilanswer
 

heu en fait je comprends pas trop la fonction usort()
je doit comparer le nom avec quoi ?
 
voici le code source demandé par Gaspard77
 

Code :
  1. // ------------------------------- Récupération des fichiers et répertoires dans tableau-- //
  2. $handle  = @opendir($chemintotal);
  3. $file    = @readdir($handle);      // repertoire .
  4. $file    = @readdir($handle);      // repertoire ..
  5. $repind  = 0;
  6. $fileind = 0;
  7. while ($file = @readdir($handle))
  8. {
  9. if(is_dir("$chemintotal/$file" ))
  10. {
  11.  $reptab[$repind]["nom"]           = $file;
  12.  $reptab[$repind]["taille"]        = filesize("$chemintotal/$file" );
  13.  $repind++;
  14. }
  15. else
  16. {
  17.  $filetab[$fileind]["nom"]         = $file;
  18.  $filetab[$repind]["taille"]        = filesize("$chemintotal/$file" );
  19.  $fileind++;
  20. }
  21. }
  22. @closedir($handle);

n°1137275
KrisCool
“Verbeux„
Posté le 01-07-2005 à 14:46:42  profilanswer
 

En gros, usort() va parcourir ton tableau en prenant les éléments deux par deux. Et pour chaque paire d'éléments, elle va appeler ta fonction de comparaison, en lui passant en paramètre les deux éléments de la paire.
 
Ta fonction de comparaison - appelons là comparer() - doit :
- prendre en paramètre deux arguments A et B
- si dans l'ordre dans lequel tu veux trier ton tableau A doit aller avant B : comparer($A, $B) doit renvoyer -1
- si dans l'ordre dans lequel tu veux trier ton tableau A doit aller après B : comparer($A, $B) doit renvoyer 1
- si les deux éléments sont de même ordre : comparer($A, $B) doit renvoyer 0
 
Dans ton cas, ta fonction comparer() s'écrit :
 

Code :
  1. function comparer($a, $b) {
  2.   if ($a['nom'] > $b['nom']) {
  3.     return 1;
  4.   } elseif ($a['nom'] < $b['nom']) {
  5.     return -1;
  6.   } else {
  7.     return 0;
  8. }


 
Il ne reste plus qu'à faire :

Code :
  1. usort($reptab, 'comparer');


 
Et le tour est joué ;)


---------------
Loose Change Lies | Bars | Last.fm
n°1137320
Proov
Art & Science
Posté le 01-07-2005 à 15:15:07  profilanswer
 

yes merci c'est déja plus clair !!! [:xp1700]  
 
 
grand merci a toi, c'est vraiment génial de tomber sur des personnes qui explique comme ça :love:  
 
je vais essayer et je vous montre le résultat :jap:

n°1137634
Proov
Art & Science
Posté le 01-07-2005 à 18:36:19  profilanswer
 

bon g testé ça marche pas :D  
 
comment on integre le usort($reptab, 'comparer'); dans le code ?
 
moi je l'ai mis juste avant l'affichage des noms des fichiers :o

n°1138956
Proov
Art & Science
Posté le 04-07-2005 à 00:37:45  profilanswer
 

je pensais a un truc, ça doit bouffer des ressources ce script non ? si il doit comparer 1300 fichiers pour les trier... paske là ça  met quand meme bcp de temps a afficher la page :(  
 
http://flasheur.free.fr/warcraft3/


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

  [PHP] Trier par ordre alphabétique

 

Sujets relatifs
Php et menu <select mulitple>PHP 5 : ERREUR : Cannot re-assign $this
ordre dans les expressions régulièresenvoyer variable PHP a du Flash
Connaissez vous un FrameWork Open Source travaillant avec PHP MYSQL ?Transmettre variables Javascript à PHP
Problème PHP sous windows[VBA] lien avec du PHP pour commander Excel
[PHP] je n'arrive pas à faire fonctionner ApacheGalerie PHP qui ne marche pas sous Firefox
Plus de sujets relatifs à : [PHP] Trier par ordre alphabétique


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