Page 1 sur 2

liste de fichiers dans une liste de dossiers

Posté : 28 oct. 2005, 13:01
par Gakman
Me revoilà :wink: avec une nouvelle question !

Je voudrais lister les fichiers contenus dans une série de dossiers eux-même dans des dossiers.
Je m'explique : voilà la structure
_ en racine le fichier index (logique !) et des dossiers nommés j_1, j_2, ...
_ chaque dossier j_* contient un fichier sav.php et des dossiers s_1, s_2, ...
_ dans chaque dossier s_* un fichier details.php (contenant $auteur, $titre et $date) et des fichiers (zip, rar,...)

Je souhaiterais affichier un petit tableau de trois lignes la première contenant la variable $titre, la 2e la liste des fichiers, la 3e les variables $auteur et $date.
<?
$handle=opendir('.');
 while($file=readdir($handle)){
  $pt=strrpos($file,".");
  $folder_name=$file;
  $fich="./".$file."/details.php";
  if (file_exists($fich)){
   include($fich);

echo '<table width="100%"  border="1">
  <tr>
    <td bgcolor="#33FFFF">'.$titre.'</td>
  </tr>
  <tr>
    <td>';

$folder = "./".$file."/";
$dossier = opendir($folder);
while ($fichier = readdir($dossier)) {
  if ($fichier != "." && $Fichier != ".." && $fichier !="details.php") {
    echo $fichier."<br />";
  }
}
closedir($dossier);

echo '	</td>
  </tr>
  <tr>
    <td bgcolor="#FFFF99">Par '.$auteur.', le '.$date.'</td>
  </tr>
</table>';
  }
 }
closedir($handle);
?>
Là j'obtiens une page blanche...

Merci encore !

Posté : 28 oct. 2005, 13:04
par Cyrano
Tu as exposé les données du problème, illustré avec du code: très bien, mais tu ne nous dis pas ce que tu obtiens avec ce code et en fin de compte on ne sait pas si ça fonctionne ou non : dans ce dernier cas, qu'est ce que tu obtiens...? :-k

Posté : 28 oct. 2005, 14:28
par Gakman
si si je l'ai mis en bas -> j'obtiens une superbe page blanche avec ce code

Posté : 28 oct. 2005, 14:31
par jeff
si tu utilise se code c'est normale que ca beugue quelque part
 if (@file_exists($fich)){
   include($fich); 
:wink:

Posté : 28 oct. 2005, 14:34
par zeus
Non, ça ne bug pas :-k Je ne comprend pas

par contre, tu as mis un " au début du include et pas à la fin
  if (@file_exists($fich)){
   include("$fich"); 

Posté : 28 oct. 2005, 14:39
par Gakman
je dois être mal réveillé (un comble à 14h38) mais je ne vois pas ce qui cloche ??? je ne peux pas mettre un include dans un if/file_exists ?

EDIT : ah oui à cause du guillemet. je l'ai viré il y a un moment et ça n'avait rien changé, je mets à jour mon 1er post avec le code actuel

Posté : 28 oct. 2005, 14:41
par zeus
non, le trux, c'est que dans ton include, tu ouvre des " avant $file que tu ne fermes jamais.

Soit tu en mets des 2 côtés, soit tu n'en mets pas ...

Posté : 28 oct. 2005, 14:43
par Gakman
oui je l'avais vu ce guillemet et 2 bourdes du genre que j'ai corrigées dans le code initial. je n'avais pas vu que je vous avais mis le code non corrigé. Désolé.

Posté : 28 oct. 2005, 14:47
par Truc
le probleme vient du fait que tu n'entre pas dans le sous dossier pour le lister.
tu recherche le fichier "details.php" dans "j_1/details.php" mais pas dans "j_1/s_1/details.php" et "j_1/s_2/details.php"

Posté : 28 oct. 2005, 15:00
par Gakman
Mais c'est bien sûr !
Je corrige ça tout de suite et je vous dit si ça marche ou pas !

Posté : 28 oct. 2005, 15:20
par Gakman
<?
$handle=opendir('.');
 while($file=readdir($handle)) {
  $pt=strrpos($file,".");
  $folder_name=$file;

  $handle2=@opendir("./".$file."/");
   while($file2=@readdir($handle2)) {
    $pt=strrpos($file2,".");
    $folder_name=$file2;

    $fich="./".$file."/".$file2."/details.php";
    if (@file_exists($fich)) {
     include($fich);
  
     $dossier = @opendir("./".$file2."/");
      while ($fichier = @readdir($dossier)) {
       if ($fichier != "." && $fichier != ".." && $fichier !="details.php") {
        echo $fichier."<br />";
       }
      }
     @closedir($dossier);
 
    }  
    
   }
  @closedir($handle2);

 }
closedir($handle);
?>
mais j'obtiens toujours une page blanche ! :cry:

Posté : 28 oct. 2005, 16:16
par Gakman
Pour tester j'ai mis du texte simple dans le fichier details.php et alors sur ma page ce texte s'affiche. Donc mon système d'ouverture de dossiers semble fonctionner, c'est le listage des fichiers qui ne va pas :( .

Posté : 28 oct. 2005, 16:27
par Gakman
J'ai changé une ligne :
     $dossier = @opendir("./".$file."./".$file2."/");
car vu que le fichier details.php m'est renvoyé quand je le remplis de texte et que je l'avais déclaré avec "./".$file."./".$file2."/" les opendir() ne semblent pas se cumuler ? C'est-à-dire que pour un opendir() contenu dans un autre il faut déclarer tout le chemin depuis la racine ?

exemple :
accès au dossier dos1/dos2/
$dir1=opendir("./dos1/");
   $dir2=opendir("./dos2/"); ou $dir2=opendir("./dos1/dos2/"); ???
   closedir($dir2);
closedir($dir1);

Posté : 28 oct. 2005, 16:32
par zeus
[Mode HS]
Je t'ai envoyé un MP pour ton site perso
[/Mode HS]

Posté : 28 oct. 2005, 17:46
par Gakman
ah mince c'est l'autre code php sur lequel vous m'avez déjà aidé que visiblement n'ai pas adapté parfaitement :(. Je vai revoir ça... et risque d'avoir encore besoin d'un coup de main ! Merci.
(cf http://www.phpfrance.com/forums/voir_re ... .php#73316)

EDIT : c'était juste une petite faute d'inattention mon autre problème, c'est résolu (ouf !). Il ne reste plus qu'à résoudre ce problème-ci. :wink: