liste de fichiers dans une liste de dossiers

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 oct. 2005, 18:30

il faut effectivement mettre le chemin complet dans opendir():

donc voila une peoposition:
$handle=opendir('.');
while($dossier_j=readdir($handle))
{
	$est_dossier=is_dir($dossier_j);
	if($est_dossier)
	{		
		$handle2=opendir($dossier_j);
		while($dossier_s=readdir($handle2))
		{ 	
			$fich_details=$dossier_j.'/'.$dossier_s.'/details.php';
			
			if (file_exists($fich_details))			
			{								
				include($fich_details); 		
				echo '
				<table width="100%"  border="1">
				<tr>
				<td bgcolor="#33FFFF">'.$titre.'</td>
				</tr>
				<tr>
				<td>';	
				$sous_dossier = opendir($dossier_j.'/'.$dossier_s);				
				while ($fichiers_s = readdir($sous_dossier)) 				
				{
				  if ($fichiers_s != "." && $fichiers_s != ".." && $fichiers_s !="details.php") 
				  {
					echo $fichiers_s."<br />";
				  }
				}	
				closedir($sous_dossier);
				echo '    </td>
				</tr>
				<tr>
				<td bgcolor="#FFFF99">Par '.$auteur.', le '.$date.'</td>
				</tr>
				</table>';
			}
		}
	}
}
closedir($handle); 
si j'ai bien suivis la construction de tes dossier ça devrai faire l'affaire :wink:

/!\ 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

31 oct. 2005, 00:21

bon j'ai réussi avec une petite adaptation à faire le script me convenant (merci encore Truc), mais il me reste une chose à résoudre :
je souhaite faire un include() contenant le lien vers une page avec un argument de ce type :
include ("sav.php?jeu=".$_GET['rep']);
En fait ça m'est refusé car PHP semble prendre la totale comme un fichier et non un fichier avec un argument.
J'ai essayé en déclarant directement ("sav.php?jeu=1") mais c'est pareil.

Code : Tout sélectionner

Warning: main(sav.php?jeu=1): failed to open stream: No such file or directory in /var/www/free.fr/8/3/sossauvegardes/sq3/index.php on line 14 Warning: main(): Failed opening 'sav.php?jeu=1' for inclusion (include_path='/var/www/free.fr/8/3/sossauvegardes/include:.') in /var/www/free.fr/8/3/sossauvegardes/sq3/index.php on line 14
Donc ma question est : comment faire pour pouvoir intégrer une page (j'utilise habituellement include) en ajoutant un argument ce qui est obligatoire pour ma page ?
@++
Gakman
-> http://gakman.free.fr

Mammouth du PHP | 19672 Messages

31 oct. 2005, 00:37

Tu dois définir une variable et ensuite inclure le fichier. Mais dans ton fichier, il faut que tu récupères directement cette variable, pas avec $_GET ni $_POST mais telle quelle. La variable $rep étant définie avant, dans ton fichier, tu pointes directement sur $rep qui est alors accessible puisque faisant partie de la page dans laquelle il est inclus.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 76 Messages

31 oct. 2005, 01:06

Je n'arrive pas à comprendre ta réponse, en effet si je mets
include ("sav.php?jeu=1");
ça ne marche pas non plus, et point de variable ici.
@++
Gakman
-> http://gakman.free.fr

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

31 oct. 2005, 01:27

tu ne dois pas faire ceci
include ("sav.php?jeu=1");
mais juste
include ("sav.php");
dans ton fichier sav.php tu poura utiliser une variable $jeu=1; directement dans le code...

une inclusion de fichier passe inaperçu regarde le fonctionnement de l'include

/!\ 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

31 oct. 2005, 15:17

Merci. Oui en fait c'est logique, je change pas de page je fais juste un include.
J'ai encore un problème : j'ai changé la ligne
                    echo $fichiers_s."<br />"; 
qui affichait le nom des fichiers en ceci :
                    echo '<a href='.$sous_dossier.'/'.$fichiers_s.'>'.$fichiers_s.'</a><br />'; 
afin qu'elle affiche le nom du fichier en étant un lien vers celui-ci. Mais en fait dans la page finale le lien apparaît vers "Ressource" et non le fichier :shock: ? Comment ce fait-il donc ?
En fait j'obtien très exactement dans le code source de la page affichée (par exemple pour le fichier phare.ZIP) :

Code : Tout sélectionner

<a href=Resource id #4/phare.ZIP>phare.ZIP</a><br />
@++
Gakman
-> http://gakman.free.fr

Eléphant du PHP | 76 Messages

31 oct. 2005, 15:26

c'est résolu en mettant $dossier_j.'/'.$dossier_s à la place de $sous_dossier ... J'avais été trop vite et raté que $sous_dossier était un opendir() et pas seulement le chemin.
@++
Gakman
-> http://gakman.free.fr

Eléphant du PHP | 76 Messages

31 oct. 2005, 16:46

Bon voilà le code final si ça peut intéressé quelqu'un :
<?
$jeu=$_GET['jeu'];
$dossier_j="j_".$jeu;


echo '<p align="center" class="gdtitre">';
include($dossier_j."/nom.php");
echo '</p><p>&nbsp;</p>';


      $handle2=opendir($dossier_j); 
        while($dossier_s=readdir($handle2)) 
        {      
            $fich_details=$dossier_j.'/'.$dossier_s.'/details.php'; 
             
            if (file_exists($fich_details))             
            {                                 
                include($fich_details);          
                echo ' 
                <table width="100%"  border="1"> 
                <tr> 
                <td class="menu"><div>'.$titre.'</div></td>
                </tr> 
                <tr> 
                <td bgcolor="#FFFFFF">';     
                $sous_dossier = opendir($dossier_j.'/'.$dossier_s);                 
                while ($fichiers_s = readdir($sous_dossier))                  
                { 
                  if ($fichiers_s != "." && $fichiers_s != ".." && $fichiers_s !="details.php") 
                  { 
                    echo '<a href='.$dossier_j.'/'.$dossier_s.'/'.$fichiers_s.'>'.$fichiers_s.'</a><br />'; 
                  } 
                }     
                closedir($sous_dossier); 
                echo '    </td> 
                </tr> 
                <tr> 
                <td align="right" class="base">Par ';

if ($site=="") {echo $auteur;}
else {echo '<a href='.$site.'>'.$auteur.'</a>';}

				echo ', le '.$date.'</td> 
                </tr> 
                </table>
				<p>&nbsp;</p>
				'; 
            } 
        }
//      closedir($dossier_j);

?>
@++
Gakman
-> http://gakman.free.fr