Page 1 sur 1

problème lister un répertoire

Posté : 30 juil. 2007, 18:41
par yuuzhantar
bonjour

j'ai un petit problème pour lister un répertoire
je me suis inspiré de cette page :
http://www.asp-php.net/tutorial/asp-php/directory.php

mais celà ne fonctionne pas

voici mon code
<?php
$logs=$_GET['logs'];
if($logs=="requetes"){ $repertoire="logs/requetes/";}
elseif($logs=="campagnes"){ $repertoire="logs/campagne/";}
elseif($logs=="ips"){ $repertoire="logs/ips/";}
?>
<br /><div class="titre">résultat pour logs de <?php echo"$logs"; ?></div><br /><br />
<?php
if($logs=="fichier")
	{
	$fichier=$_GET['fichier'];
       //ouverture du fichier
	}
else
	{
// listage du répertoire
	$dir=opendir($repertoire); 
	while($f=readdir($dir)) 
		{
		if(is_file($repertoire.$f)) 
			{
			echo "<b><u> Nom : </b></u>".$f;
			echo "<b><u> Consulter : </b></u> <a href=\"\">consulter</a>";
			echo "<b><u> Taille : </b></u>".filesize($rep.$f)." octets";
			echo "<b><u> Création : </b></u>".dd(filectime($rep.$f));
			echo "<b><u> Modification : </b></u>".dd(filemtime($rep.$f));
			echo "<b><u> Dernier accès : </b></u>".dd(fileatime($rep.$f));
			echo "<br><br>";
			}
		}
	closedir($dir);
	}
pourriez vous m'aider svp ?

merci

Posté : 30 juil. 2007, 19:08
par Truc
une erreur à nous fournir ?

Posté : 30 juil. 2007, 19:08
par yuuzhantar
oui : rien ne s'affiche alors qu'il y a environ 800 fichiers dans le répertoire des requètes

edit : aussi je ne peux plus vous fournir d'erreur car suite a un problème de php.ini quand il y a une erreur celà ne l'affiche plus

Posté : 30 juil. 2007, 20:37
par Ryle
Pour les messages d'erreur il suffit de le paramétrer dans le .ini ou de spécifier le niveau d'erreur que tu veux gérer avec la fonction error_reporting() :
error_reporting(E_ALL);
As-tu vérifié que le dossier que tu essayes d'ouvrir est bien présent ? Pour rappel, le chemin doit être relatif au script, il faut donc d'après ton code que le dossier "logs" soit présent dans le dossier ou s'exécute le script...

Posté : 31 juil. 2007, 22:09
par yuuzhantar
bonjour

j'essaye maintenant avec une autre méthode
mais j'ai une erreur

voici le code
$d=$_GET['d'];
$type=$_GET['type'];
$parent=$_GET['parent'];

if(empty($d)||empty($type))
{
$d="./logs/";
$type="rep";
}

if($type=="file")
{

}
else
	{
	$d=dir("./logs/");
	echo "Pointeur: ".$d->handle."<br>\n";
	echo "Chemin: ".$d->path."<br>\n";
	echo"Parent : <a href=\"/index.php?page=adminpaneltools&sous=listerlogs&d=$parent&type=rep\" class=menuling>explorer</a><br>\n";
	while($entry=$d->read()) 
		{
		$pt=strpos($entry,'.');
		echo $entry." $pt ";
		if($pt>=1)//fichier
			{
			$nd=$d.$entry;
			echo"<a href=\"/index.php?page=adminpaneltools&sous=listerlogs&d=$nd&type=file&parent=$d\" class=menuling>consulter</a>";
			}
		else //répertoire
			{
			$nd=$d.$entry;
			echo" <a href=\"/index.php?page=adminpaneltools&sous=listerlogs&d=$nd&type=rep&parent=$d\" class=\"menulink\">explorer</a>";
			}
		}
	$d->close();

}
il y a un blocage aux affichages :
Catchable fatal error: Object of class Directory could not be converted to string in D:\FTP\www\clients\yuuzhantar\admin\listerlogs.php on line 38
pourriez vous m'aider svp ?

merci

Posté : 31 juil. 2007, 22:18
par Truc
ligne 38 ?

Posté : 31 juil. 2007, 23:29
par Ryle
Tu as nommé ta variable contenant le chemin $d, et tu écrases ensuite cette variable en ayant également nommé le pointeur du dossier $d... donc forcément quand tu l'utilises pour concaténer chemin et fichier, php rale en te disant qu'à la ligne 38, tu utilises un objet de type Directory que tu essayes sauvagement de transformer en chaine de caractères.

Je suppose que la ligne 38 doit être celle-ci (sachant que tu auras la même erreur quelques lignes plus bas) :
$nd=$d.$entry; 
En donnant des noms plus explicites à tes variables tu éviterais ce genre de désagréments :)

Posté : 01 août 2007, 19:43
par yuuzhantar
oui la ligne 38 est bien celle ci

mais je ne comprends pas votre remarque, comment dois-je mettre en forme le code ?

Posté : 01 août 2007, 20:12
par Truc
Tu as nommé ta variable contenant le chemin $d, et tu écrases ensuite cette variable en ayant également nommé le pointeur du dossier $d... donc forcément quand tu l'utilises pour concaténer chemin et fichier, php rale en te disant qu'à la ligne 38, tu utilises un objet de type Directory que tu essayes sauvagement de transformer en chaine de caractères.
On ne peut pas en dire plus que Ryle "change le nom de la variable"

ici tu as un objet
$d=dir("./logs/"); 
et la une chaine
$nd=$d.$entry;
:idea:

Posté : 01 août 2007, 22:10
par yuuzhantar
ah d'accord, je vois

merci bien