Votre question

[Résolu, merci à vous]Lister le contenu d'un dossier

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
5 Avril 2007 14:50:00

Bonjour à tous !

J'ai créé un script auquel il me manque une fonction indispensable, le nom de tous les sous dossiers d'un dossier nommé smiley.

Voilà le script, mon problème le suivant :
Pour l'instant les catégories sont enregistrés dans la base de donnée sous "libelle" dans la table "cat smiley".
Je souhaiterais modifier le script afin que celui ci fonctionne exactement de la même manière mais sans utiliser de base de données.
Dans "smileys" j'ai des sous catégories "lol", "mécontent"...
Je voudrais que emoticons.php?rubric_princ=lol
affiche tout les images du dossier lol.
Et je voudrais aussi avoir La liste de tous les sous-dossiers de "smileys".


Citation :

...

Merci, Merci, merci !!!!

PS : Oui je connaiis Google, merci d'avance pour toutes les réponses de ce type mais celui ci ne m'a pas satisfait (Je n'ai pas trouver exactement comme lister uniquement les dossiers)

Autres pages sur : resolu merci lister contenu dossier

a c 145 L Programmation
5 Avril 2007 15:40:23

Tu peux travailler en utilisant ta boucle while($fichier)...
Tu ajoutes:
  1. if (is_dir($fichier) && ($fichier != '.') && ($fichier!='..')) {
  2. $pointeur2 = opendir($nom_repertoire."/".$fichier);
  3. ...
  4. }

Mais c'est très sale, il vaut mieur créer une fonction récursive:
  1. function getDirectory( $path = '.', $level = 0 ){
  2. $ignore = array( 'cgi-bin', '.', '..' );
  3. $dh = @opendir($path);
  4. while (false !== ($file = readdir($dh))) {
  5. if (!in_array( $file, $ignore)) {
  6. $spaces = str_repeat( ' ', ( $level * 4 ) );
  7. if( is_dir( "$path/$file" ) ){
  8. echo "<strong>$spaces $file</strong><br />";
  9. getDirectory( "$path/$file", ($level+1) );
  10. } else {
  11. echo "$spaces $file<br />";
  12. }
  13. }
  14. }
  15. closedir( $dh );
  16. }
5 Avril 2007 16:02:52

Si ça peut t'aider ... Voila un petit script vite fait !

Cela t'aidera surement à comprendre le principe !

Sinon ! +1 crazycat !

  1. <body>
  2. <?php
  3.  
  4. function listDir($repertoire){
  5. $tab_file = array();
  6.  
  7. if ( !is_dir($repertoire) ) return;
  8.  
  9. if ( $dir = opendir($repertoire) ) {
  10. while($file = readdir($dir)) {
  11. if( !is_dir( $file ) ) continue;
  12. $tab_file[] = $file;
  13. }
  14.  
  15. foreach($tab_file as $entry) {
  16. echo '<a href="'.$PHP_SELF.'?rub='.$entry.'">'.$entry.'</a><br />';
  17. }
  18. }
  19. closedir($dir);
  20. }
  21.  
  22. function listImg($repertoire){
  23. $tab_file = array();
  24.  
  25. if ( !is_dir($repertoire) ) return;
  26.  
  27. if ( $dir = opendir($repertoire) ) {
  28. while($file = readdir($dir)) {
  29. $tab_file[] = $file;
  30. }
  31.  
  32. sort($tab_file);
  33. foreach($tab_file as $entry) {
  34. if(!ereg('.gif$|.png$|.jpg$|.jpeg$',$entry)) continue;
  35.  
  36. echo '<b>image : '.$entry.'</b><br />';
  37. }
  38. }
  39. closedir($dir);
  40. }
  41.  
  42. echo '<b>Categories:</b><br />';
  43.  
  44. listDir('.');
  45.  
  46. echo '<br /><u>Images:</u><br />';
  47. if(isset($_GET['rub'])){
  48. listImg($_GET['rub']);
  49. } else {
  50. listImg('.');
  51. }
  52.  
  53. ?>
  54. </body>
Contenus similaires
5 Avril 2007 17:43:32

Merci beacuoup, après 1 heure de boulot j'ai réussi à adapter tout ça ...
Mais deux problèmes apparaissent :
- Mon fichier étant placé dans des sous dossiers il s'affiche comme catégoprie "." et ".."
Comment enlever ces catégories qui affichent le contenu des dossiers supérieurs ?
Si ce n'est pas possible, je peux placer mon ficheir à la racine mais dans ce cas, quel code dois-je mettre ?
J'ai essayé :
listImg('emoticones''.');
Mais ça ne marche pas ... J'avoue que je n'utilise jamais ce type de fonction normalement et je n'y connais rien !
- 2ème problème, ou inclure la portion de code
-----
for ($j=0;$j<=$i-1;$j++)
{
if($j % 5 == 0){
echo '<tr/><tr>';
}
-----
Pour que les images s'affichent en tableau.

J'abuse un peu de vous ... Mais je galère !

Edit : Il y a aussi un problème mineur : Ce serait encore mieux si c'était par ordre alphabétique...
5 Avril 2007 17:56:54

Remarque le :

  1. while($file = readdir($dir)) {
  2. if( !is_dir( $file ) ) continue;
  3. $tab_file[] = $file;
  4. }


Et ajoute :

  1. while($file = readdir($dir)) {
  2. if( $file == '.' || $file == '..' ) continue;
  3. if( !is_dir( $file ) ) continue;
  4. $tab_file[] = $file;
  5. }


et pour l'ordre alphabetique :

  1. sort($tab_file);


je te préviens, mon script ne gère qu'un niveau de sous-dossier !
Pour une meilleur performance, suit les indications de crazycat pour une fonction récursive !
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS