Se connecter avec
S'enregistrer | Connectez-vous

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

Dernière réponse : dans Programmation

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)
Lassé par la pub ? Créez un compte
Expert Programmation

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. }
Expert Programmation

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>

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

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 !
Lassé par la pub ? Créez un compte
Tom's guide dans le monde