liste de fichiers dans une liste de dossiers

Eléphant du PHP | 76 Messages

28 oct. 2005, 13:01

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 !
Modifié en dernier par Gakman le 28 oct. 2005, 14:42, modifié 2 fois.
@++
Gakman
-> http://gakman.free.fr

Mammouth du PHP | 19672 Messages

28 oct. 2005, 13:04

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 76 Messages

28 oct. 2005, 14:28

si si je l'ai mis en bas -> j'obtiens une superbe page blanche avec ce code
@++
Gakman
-> http://gakman.free.fr

Mammouth du PHP | 1311 Messages

28 oct. 2005, 14:31

si tu utilise se code c'est normale que ca beugue quelque part
 if (@file_exists($fich)){
   include($fich); 
:wink:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 oct. 2005, 14:34

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"); 
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 76 Messages

28 oct. 2005, 14:39

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
Modifié en dernier par Gakman le 28 oct. 2005, 14:41, modifié 1 fois.
@++
Gakman
-> http://gakman.free.fr

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 oct. 2005, 14:41

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 ...
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 76 Messages

28 oct. 2005, 14:43

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é.
@++
Gakman
-> http://gakman.free.fr

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 oct. 2005, 14:47

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"

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 76 Messages

28 oct. 2005, 15:00

Mais c'est bien sûr !
Je corrige ça tout de suite et je vous dit si ça marche ou pas !
@++
Gakman
-> http://gakman.free.fr

Eléphant du PHP | 76 Messages

28 oct. 2005, 15:20

<?
$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:
@++
Gakman
-> http://gakman.free.fr

Eléphant du PHP | 76 Messages

28 oct. 2005, 16:16

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 :( .
@++
Gakman
-> http://gakman.free.fr

Eléphant du PHP | 76 Messages

28 oct. 2005, 16:27

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);
@++
Gakman
-> http://gakman.free.fr

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 oct. 2005, 16:32

[Mode HS]
Je t'ai envoyé un MP pour ton site perso
[/Mode HS]
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 76 Messages

28 oct. 2005, 17:46

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:
@++
Gakman
-> http://gakman.free.fr