8792 sujets

Développement web côté serveur, CMS

Bonjour

je débute en php et je souhaiterai faire une fonction qui me permette de lister de manière récursive le contenu d'un répertoire.

C'est à dire, que je voudrais afficher :

./index.php
./www/
./www/fichier1.php
./www/fichier2.php
./www/images/
./www/images/image1.png
./www/images/image2.png
etc



j'ai fait pour cela une fonction mais j'ai une erreur Smiley confus

voici le code de ma page :
<?php

$files = getPath(".");
foreach($files as $i)
{
	echo "$i<br />";
}





function getPath($dir)
{
	$files = array();
	$handle = opendir($dir);
	
	// Parcours des fichiers et dossiers du répertoire courant
	while($file = readdir($handle)) {
		if($file != "." && $file != "..")
		{
			if(is_dir($file))
			{
				$files[] = "<b>".$dir."/".$file."/</b>";
			 	$newDir = chdir($file);
			 	$rep = getPath($file);
			 	foreach($rep as $i)
			 	{
			 		$files[] = "".$dir."/".$i;
			 	}
			}
			else
			{
				$files[] = "".$dir."/".$file;
			}
		}
	}
	
	// Fermeture du répertoire courant
	closedir($handle);
	return $files;
}

?>



Merci à vous de m'aider


PS : je précise que je ne peux pas utiliser "exec" qui permet d'executer ls ou autre ...
Modifié par Poich (03 Aug 2005 - 14:38)
Tu ne fais pas appel au chemin complet du dossier lorsque tu lances ta recurence.

$rep = getPath($file);
->
$rep = getPath($dir.'/'.$file);
A ceux qui se dirait tiens, c'est bien ça et voudrais l'utiliser chez free
is_dir($file)) ne marche pas

Pas bien ou pas du tout je ne sais pas, mais en tout cas on a une erreur, alors que cette fontion n'est pas dans les fonctions interdites par free...

Tant pis, c'est que je l'aime bien ma petite fonction pour afficher la date de dernière maj d'une fichier... Smiley cligne

Bizarrement, cela ne semble pas être dans les règles (où j'ai mal lu) : pourtant, cela doit être pertinant d'indiquer la mise à jour d'un site dès la première page, car si on n'a déjà vu le site, s'il n'a pas évolué depuis la dernière visite, ce n'est pas la peine de regarder (plus encore d'écouter) la suite...

Je me trompe ?
Administrateur
HS: tu es certain que ton programme s'arrête quand tu le veux, dans les cas que tu as prévu? Pas de risque qu'il continue sur des répertoires parents ou extérieurs, qu'il suive des liens? La récursivité mal contrôlée, c'est rapidement boucle infinie Smiley smile
Bob (MC Melun) a écrit :

Bizarrement, cela ne semble pas être dans les règles (où j'ai mal lu) : pourtant, cela doit être pertinant d'indiquer la mise à jour d'un site dès la première page, car si on n'a déjà vu le site, s'il n'a pas évolué depuis la dernière visite, ce n'est pas la peine de regarder (plus encore d'écouter) la suite...

Je me trompe ?


Bonnes Pratiques Opquast a écrit :
Les actualités sont datées.

Objectifs : Permettre aux utilisateurs de connaître la fraîcheur des informations qu'ils consultent.


Une discussion est en cours sur l'extension de cette bonne pratique à d'autres types de contenus (articles, liens)...

J'en suis pour ma part un ardent partisan. Reste à définir précisément les contenus en question (sachant qu'il n'est pas possible de retenir une bonne pratique générique pour tous les contenus a priori)
Modifié par Laurent Denis (03 Aug 2005 - 15:48)
Attention, je suis moins restrictif dans mon idée...

Par contre il faut que je reprenne celle en développement dans mes documents moi... Faut que j'arrête de lire ce forum, ma to-do liste en prend un coup à chaque fois Smiley cligne

En fait, je me contente d'indiquer que quelque part sur le site une page - ou une info dans la base pour les sites dynamique - a été créée ou modifiée (supprimée ne marche pas avec ma méthode mais est-ce utile ?)

Charge ensuite au visiteur à la chercher si elle n'est pas directement indiquée en première page ou dans la page des nouveautés... Il est là pour butiner aussi, hein ?