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

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

Marsh Posté le 02-12-2009 à 15:15:30    

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
Reply

Marsh Posté le 02-12-2009 à 15:15:30   

Reply

Marsh Posté le 02-12-2009 à 15:18:15    

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 -
Reply

Marsh Posté le 03-12-2009 à 09:56:36    

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)

Reply

Marsh Posté le 03-12-2009 à 16:43:59    

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 ...

Reply

Marsh Posté le 03-12-2009 à 17:10:23    

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. ?>

Reply

Marsh Posté le 03-12-2009 à 17:15:59    

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
Reply

Marsh Posté le 03-12-2009 à 18:17:40    

tu veu pas utilisé DirectoryIterator   ?

Reply

Marsh Posté le 03-12-2009 à 18:34:11    

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:

Reply

Marsh Posté le 04-12-2009 à 10:31:24    

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. ?>

Reply

Marsh Posté le 04-12-2009 à 10:36:30    

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

Reply

Marsh Posté le 04-12-2009 à 10:36:30   

Reply

Marsh Posté le 04-12-2009 à 10:51:24    

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
Reply

Marsh Posté le 04-12-2009 à 11:18:50    

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 ?

Reply

Marsh Posté le 04-12-2009 à 11:23:25    

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

Reply

Marsh Posté le 04-12-2009 à 11:31:17    

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
Reply

Marsh Posté le 04-12-2009 à 11:33:53    

pourquoi dirname ?, c'est realpath qui faut faire


Message édité par stealth35 le 04-12-2009 à 11:34:13
Reply

Marsh Posté le 04-12-2009 à 11:42:32    

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

Reply

Marsh Posté le 04-12-2009 à 11:45:22    

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

Reply

Marsh Posté le 04-12-2009 à 11:48:42    

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:

Reply

Marsh Posté le 04-12-2009 à 13:13:13    

ta quelle version de PHP ?

Reply

Marsh Posté le 04-12-2009 à 15:33:28    

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:

Reply

Marsh Posté le 04-12-2009 à 16:07:17    

a mince, t'es sous free, ovh ?

Reply

Marsh Posté le 04-12-2009 à 17:21:07    

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

Reply

Marsh Posté le 04-12-2009 à 18:48:18    

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

Reply

Marsh Posté le 07-12-2009 à 09:57:12    

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
Reply

Marsh Posté le 08-12-2009 à 09:17:22    

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.


Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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