Tom's Guide > Forum > Programmation > [Résolu, merci à vous]Lister le contenu d'un dossier

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

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

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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)


Message édité par Felix38 le 07-04-2007 à 15:59:45
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Tu peux travailler en utilisant ta boucle while($fichier)...
Tu ajoutes:

Code :
  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:

Code :
  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. }


Message édité par crazycat@idn le 05-04-2007 à 15:40:44
Répondre à crazycat@idn

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

Cela t'aidera surement à comprendre le principe !

Sinon ! +1 crazycat !

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


Message édité par RedTux le 05-04-2007 à 16:04:24
------------------------------ N'oubliez pas le [Résolu] dans le titre si vous êtes satisfait.
Les règles du Forum - À lire absolument
Répondre à RedTux

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


Message édité par Felix38 le 05-04-2007 à 17:46:43
Répondre à Felix38

Remarque le :

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



Et ajoute :

Code :
  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 :

Code :
  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 !


Message édité par RedTux le 05-04-2007 à 18:00:21
------------------------------ N'oubliez pas le [Résolu] dans le titre si vous êtes satisfait.
Les règles du Forum - À lire absolument
Répondre à RedTux
Tom's Guide > Forum > Programmation > [Résolu, merci à vous]Lister le contenu d'un dossier
Aller à :

Il y a 1997 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens