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

  FORUM HardWare.fr
  Programmation
  PHP

  [resolu] Trier une listbox qui affiche le contenu d'un répertoire. ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu] Trier une listbox qui affiche le contenu d'un répertoire. ?

n°1946647
fscalda
Gaaaaaazzzz
Posté le 02-12-2009 à 15:15:30  profilanswer
 

onjour à tous,  
j'ai actuellement une listbox qui se rempli avec le contenu d'un repertoire.  
Je désire faire un tri par ordre alphabetique "humain". J'ai chercher les différentes fonction qui pourrait m'aideret j'ai trouvé NATCASESORT.  :D  Mais, et c'est la que je pêche,  je ne vois pas du tout comment passer ma fonction, à part dans un array juste après le While, et la, je vois pas. Ca commence à devenir du chinois...
 

Code :
  1. <?php
  2. $rep ='../upload/';
  3. if (!is_dir ($rep)) {
  4. echo 'Erreur, ', $dir,' n\'est pas un repertoire valide';
  5. exit;
  6. }
  7. $dir = opendir ($rep);
  8. while (false !== ($fichier = readdir ($dir))) {
  9. if ($fichier !== '..' && $fichier !== '.') {
  10.    echo '<option value="',$fichier,'">',$fichier,'</option>';
  11. }
  12. }
  13. ?>


 
PS : J'en connais un qui va me parler de PDO  :D  mais j'ai pas du tout eu le temps de m'y mettre. En fait, j'ai quasi plus de temps à moi pour me former.

Message cité 1 fois
Message édité par fscalda le 08-12-2009 à 09:18:13
mood
Publicité
Posté le 02-12-2009 à 15:15:30  profilanswer
 

n°1946650
skeye
Posté le 02-12-2009 à 15:18:15  profilanswer
 

Au lieu de faire un echo dans ta boucle, tu remplis un tableau.
Ensuite tu le tries, puis tu boucles dessus pour afficher.

 

...et aucun rapport avec PDO.[:pingouino]


Message édité par skeye le 02-12-2009 à 15:18:30

---------------
Can't buy what I want because it's free -
n°1946804
stealth35
Posté le 03-12-2009 à 09:56:36  profilanswer
 

si tu veux affiché le contenu d'un dossier, je te conseil DirectoryIterator  
http://fr.php.net/manual/fr/class. [...] erator.php
 
(PDO c'est le bien)

n°1947046
fscalda
Gaaaaaazzzz
Posté le 03-12-2009 à 16:43:59  profilanswer
 

Merci d'avoir répondu.
 
Bon, j'arrive avec ma boucle ....

Code :
  1. <?php
  2. while($val=mysql_fetch_array($result))
  3. if($val["valid"] == 1)
  4. {
  5. $id=$val['ID'];
  6. $aFile=$val['aFile'];
  7. echo"$aFile";
  8. echo "<br />";
  9. }
  10. ?>


 
Mais pour l'instant, je n'arrive pas l'adapter.
Donc je reprends les cours sur le site du zero sur les array... qu'est que je galere sur des trucs ...

n°1947067
fscalda
Gaaaaaazzzz
Posté le 03-12-2009 à 17:10:23  profilanswer
 

Assemblage à la vil coyote.  
 

Code :
  1. <?php
  2. $rep ='../upload/';
  3. if (!is_dir ($rep)) {
  4.     echo 'Erreur, ', $dir,' n\'est pas un repertoire valide';
  5.     exit;
  6. }
  7. $dir = opendir ($rep);
  8.         while (false !== ($fichier = readdir ($dir))) {
  9.             if ($fichier !== '..' && $fichier !== '.') {
  10.    //
  11.    //
  12.    while($val=mysql_fetch_array($result))
  13.   if($val["valid"] == 1)
  14.   {
  15.   echo '<option value="',$fichier,'">',$fichier,'</option>';
  16.   }
  17.    //echo '<option value="',$fichier,'">',$fichier,'</option>';
  18.    //
  19.    //
  20.             }
  21.         }
  22. ?>

n°1947071
fscalda
Gaaaaaazzzz
Posté le 03-12-2009 à 17:15:59  profilanswer
 

Pas loin, mais ça trie pas vraiment tout  :pt1cable:  
 

Code :
  1. <?php
  2. $rep ='../upload/';
  3. if (!is_dir ($rep)) {
  4.     echo 'Erreur, ', $dir,' n\'est pas un repertoire valide';
  5.     exit;
  6. }
  7. $dir = opendir ($rep);
  8.         while (false !== ($fichier = readdir ($dir))) {
  9.             if ($fichier !== '..' && $fichier !== '.') {
  10.    //
  11.    //
  12. $contenu = array ("$fichier" );
  13. sort($contenu); 
  14. foreach($contenu as $fichier)
  15. {
  16.     echo '<option value="',$fichier,'">',$fichier,'</option>';
  17. }
  18.             }
  19.         }
  20. ?>


Message édité par fscalda le 03-12-2009 à 17:28:27
n°1947104
stealth35
Posté le 03-12-2009 à 18:17:40  profilanswer
 

tu veu pas utilisé DirectoryIterator   ?

n°1947109
fscalda
Gaaaaaazzzz
Posté le 03-12-2009 à 18:34:11  profilanswer
 

J'avoue que je me suis tellement pris la tête, et qu'en plus, ça trie rien du tout... que j'ai pas regardé. J'y vais de ce pas  :jap:

n°1947238
fscalda
Gaaaaaazzzz
Posté le 04-12-2009 à 10:31:24  profilanswer
 

Toujours pas touché DirectoryIterator  , par contre, ça à l'air plus simple d'emploi.
 
En attendant, j'ai presque touché du doigt la solution.  
Sauf que ça m'incremente le contenu, je m'explique, ça m'affiche :
 
a
b
b
c
c
c
d
d
d
d
etc
 

Code :
  1. <?php
  2. $rep ='../upload/'; 
  3. if (!is_dir ($rep)) { 
  4. echo 'Erreur, ', $dir,' n\'est pas un repertoire valide'; 
  5. exit; 
  6. $dir = opendir ($rep);
  7. $contenu = array ();
  8. while (false !== ($fichier = readdir ($dir))) { 
  9. if ($fichier !== '..' && $fichier !== '.') {
  10.           //
  11.           //
  12.  
  13. $contenu[] = $fichier;
  14.   } 
  15.  
  16. foreach($contenu as $element) 
  17. echo '<option value="',$fichier,'">',$fichier,'</option>'; 
  18. ?>

n°1947247
fscalda
Gaaaaaazzzz
Posté le 04-12-2009 à 10:36:30  profilanswer
 

Bon, j'ai bien une erreur dans ma boucle .... array_unique ne marche pas, donc si je comprends bien, je boucle un poil tard.

mood
Publicité
Posté le 04-12-2009 à 10:36:30  profilanswer
 

n°1947262
stealth35
Posté le 04-12-2009 à 10:51:24  profilanswer
 

Code :
  1. foreach(new DirectoryIterator('/www') as $item)
  2. {
  3.     if($item->isFile())
  4.     {
  5.         echo '<option value="' . $item->getFilename() . '">' . $item->getFilename() . '</option>';
  6.     }
  7. }


Message édité par stealth35 le 04-12-2009 à 10:52:25
n°1947280
fscalda
Gaaaaaazzzz
Posté le 04-12-2009 à 11:18:50  profilanswer
 

Hello,
 
il n'y à pas legion de renseignement sur DirectoryIterator  :(  
J'ai juste trouvé la fonction isFile >  liste uniquement les fichiers.
 
J'ai testé et rien. Pas le bon chemin ? Pourtant / racine donc /www/upload/ ou c'est parce que ce n'est pas la racine réelle du site ?

n°1947285
stealth35
Posté le 04-12-2009 à 11:23:25  profilanswer
 

fait un coup de realpath sinon
 
new DirectoryIterator(realpath('/www/upload'))

n°1947294
fscalda
Gaaaaaazzzz
Posté le 04-12-2009 à 11:31:17  profilanswer
 

Dans le doute, j'ai tenté sur un nouveau fichier de voir les répertoires :
 

Code :
  1. <?php
  2. $iterator = new DirectoryIterator(dirname('/www'));
  3. foreach ($iterator as $fileinfo) {
  4.     if ($fileinfo->isDir()) {
  5.         echo $fileinfo->getFilename() . "\n";
  6.     }
  7. }
  8. ?>


 
Et j'ai ce message :
 

Code :
  1. Fatal error: Cannot instantiate non-existent class: directoryiterator in /homez.93/portalde/www/test5.php on line 2


 
Je tente le realpath, on sait jamais ;)


Message édité par fscalda le 04-12-2009 à 11:31:39
n°1947296
stealth35
Posté le 04-12-2009 à 11:33:53  profilanswer
 

pourquoi dirname ?, c'est realpath qui faut faire


Message édité par stealth35 le 04-12-2009 à 11:34:13
n°1947307
fscalda
Gaaaaaazzzz
Posté le 04-12-2009 à 11:42:32  profilanswer
 

Je voulais voir si il listais les repertoires, plus facile que les photos.  :D

n°1947308
stealth35
Posté le 04-12-2009 à 11:45:22  profilanswer
 

les ca liste les répertoire aussi, tu peu meme faire du recrusif

n°1947309
fscalda
Gaaaaaazzzz
Posté le 04-12-2009 à 11:48:42  profilanswer
 

Pareil,  
 
le chemin : /homez.93/portalde/www/upload
 
Fatal error: Cannot instantiate non-existent class: directoryiterator in /homez.93/portalde/www/admin/test5.php on line 2
 
Marche pas, comme si la fonction n'était pas dispo...  :heink:

n°1947333
stealth35
Posté le 04-12-2009 à 13:13:13  profilanswer
 

ta quelle version de PHP ?

n°1947412
fscalda
Gaaaaaazzzz
Posté le 04-12-2009 à 15:33:28  profilanswer
 

J'ai sur ce serveur PHP Version 4.4.9  :heink:  
 
Bon, c'est pas grave, j'ai trouvé de façon PHP4  :whistle:  
 

Code :
  1. 1.  <?php
  2.    2.       $rep ='../upload/';
  3.    3.       if (!is_dir ($rep)) {
  4.    4.       echo 'Erreur, ', $dir,' n\'est pas un repertoire valide';
  5.    5.       exit;
  6.    6.       }
  7.    7.       //       
  8.    8.       $dir = opendir ($rep);
  9.    9.       $contenu = array ();
  10.   10.       //boucle  
  11.   11.       while (false !== ($fichier = readdir ($dir))) {
  12.   12.       if ($fichier !== '..' && $fichier !== '.') {
  13.   13.       $contenu[] = $fichier;
  14.   14.       }
  15.   15.       }
  16.   16. 
  17.   17.              foreach($contenu as $cle => $element)
  18.   18.             {
  19.   19.             echo '<option value="',$fichier,'">',$fichier,'</option>';
  20.   20.             }
  21.   21.       ?>


 
Allez, dès que j'ai du temps, je me tente la fonction UNLINK, celle la même qui me pose probleme, et toujours sur ce serveur  :pfff:

n°1947423
stealth35
Posté le 04-12-2009 à 16:07:17  profilanswer
 

a mince, t'es sous free, ovh ?

n°1947450
fscalda
Gaaaaaazzzz
Posté le 04-12-2009 à 17:21:07  profilanswer
 

Chez OVH .... ils étaient bien ... avant ... avant le drame ...

n°1947474
stealth35
Posté le 04-12-2009 à 18:48:18  profilanswer
 

lol, tu peu mettre PHP 5,3 chez ovh, avec un htaccess
http://guide.ovh.com/Php5ChezOvh

n°1947811
fscalda
Gaaaaaazzzz
Posté le 07-12-2009 à 09:57:12  profilanswer
 

Bah, je ne compte pas rester chez OVH, donc pour l'instant ça va le faire  :D  


Message édité par fscalda le 07-12-2009 à 09:57:51
n°1948225
fscalda
Gaaaaaazzzz
Posté le 08-12-2009 à 09:17:22  profilanswer
 

fscalda a écrit :

onjour à tous,  
j'ai actuellement une listbox qui se rempli avec le contenu d'un repertoire.  
Je désire faire un tri par ordre alphabetique "humain". J'ai chercher les différentes fonction qui pourrait m'aideret j'ai trouvé NATCASESORT.  :D  Mais, et c'est la que je pêche,  je ne vois pas du tout comment passer ma fonction, à part dans un array juste après le While, et la, je vois pas. Ca commence à devenir du chinois...
 

Code :
  1. <?php
  2. $rep ='../upload/';
  3. if (!is_dir ($rep)) {
  4. echo 'Erreur, ', $dir,' n\'est pas un repertoire valide';
  5. exit;
  6. }
  7. $dir = opendir ($rep);
  8. while (false !== ($fichier = readdir ($dir))) {
  9. if ($fichier !== '..' && $fichier !== '.') {
  10.    echo '<option value="',$fichier,'">',$fichier,'</option>';
  11. }
  12. }
  13. ?>


 
PS : J'en connais un qui va me parler de PDO  :D  mais j'ai pas du tout eu le temps de m'y mettre. En fait, j'ai quasi plus de temps à moi pour me former.


mood
Publicité
Posté le   profilanswer
 


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

  [resolu] Trier une listbox qui affiche le contenu d'un répertoire. ?

 

Sujets relatifs
[Résolu - PHP] Incrémenter une variable par autre chose que +1[Résolu] [Jquery] ui droppable limiter nombre de drop
[RESOLU] Carré à la place des accentsproblème firefox/CSS [RESOLU]
[Résolu] remplacer un mot réccurant[Résolu] Exécution de plusieurs SQL dans un .bat
classer alphabiquement le contenu d'un répertoire(resolu) Problème de positionnement d'un bouton CSS
[Résolu] String2charArray et charArray2String 
Plus de sujets relatifs à : [resolu] Trier une listbox qui affiche le contenu d'un répertoire. ?


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