Index of...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 juin 2005, 17:45

c'est laquelle la ligne 14...

dans ce echo
echo "<a href=\"http://www.monsite.com/index.php?chemin=\""'.$path.''.$fichier.'"\" title=\"Ouvrir ce dossier...\">".$fichier."</a>"; 
tu mélanges simple et doubles quotes, il y en a en trop
tu ouvres avec des doubles, donc tu échappes les doubles ok
alors que viennent faire les simples ici ?

Quentin
Invité n'ayant pas de compte PHPfrance

28 juin 2005, 17:55

Je rectifie...
Le script qui fonctionne mais pas tout a fait:
<?php

$path = $_GET['chemin'];   

if (empty($path))
      $path = "./";

if ($dossier = opendir ($path)) { //Vérification de l'existence du rep

while (false !== ($fichier = readdir ($dossier))) { //Vérification de la lecture des fichiers du rep

  if ($fichier != "." && $fichier != ".." && $fichier != "index.php") {
   //ancienne ligne :  echo '<a href="'.$path.''.$fichier.'" >'.$fichier.'</a><br>';
	echo '<a href="http://www.monsite.com/index.php?chemin='.$path.''.$fichier.' title="Ouvrir ce dossier...">'.$fichier.'</a><br>';
   }
  }
closedir ($dossier);
}
?>
Lorsque je clic sur un sous repertoire , ERREUR :
Warning: opendir(./truc title=): failed to open dir: No such file or directory in /export/web/Customers/..../index.php on line 8

Quentin
Invité n'ayant pas de compte PHPfrance

28 juin 2005, 17:57

LOL tu reponds trop vite :D
Ensuite la ligne 14 etait noté en remarque ;)

Mais j'ai arrngé le script ki me génère une autre erreur.... :(

Quentin
Invité n'ayant pas de compte PHPfrance

28 juin 2005, 18:02

SCRIPT FINAL :
<?php

$path = $_GET['chemin'];   

if (empty($path))
      $path = "./";

if ($dossier = opendir ($path)) { //Vérification de l'existence du rep

while (false !== ($fichier = readdir ($dossier))) { //Vérification de la lecture des fichiers du rep

  if ($fichier != "." && $fichier != ".." && $fichier != "index.php") {
   //ancienne ligne :  echo '<a href="'.$path.''.$fichier.'" >'.$fichier.'</a><br>';
	echo '<a href="http://www.monsite.com/index.php?chemin='.$path.''.$fichier.'">'.$fichier.'</a><br>';
   }
  }
closedir ($dossier);
}
?>
Fonctionne pour le premier affichage.
Ensuite si je clic sur le premier dossier, pas de prob il m'affiche les fichiers de ce dossier.
Ensuite si je clic encore sur un autre sous repertoire, boom ERREUR :(

Warning: opendir(./trucBidule Brol): failed to open dir: No such file or directory in /export/web/Customers/..../index.php on line 8

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 juin 2005, 18:02

lis les erreurs générées...

tu verras, dans 95% des cas ça permet de résoudre le problème, au moins de le cibler

c'est le cas ici
opendir(./truc title=): failed to open dir:

Quentin
Invité n'ayant pas de compte PHPfrance

28 juin 2005, 18:07

oui tout a fait c'est ce ke j'ai remarqué.
C'est pour cela ke j'ai supprimer title.
MAintenant je viens de voir kil mank un SLASH entre "truc" et "Bidule Brol"
qui sont mes deux dossiers.
J'essaye de remédier au probleme mais bon.....trouve pas

Quentin
Invité n'ayant pas de compte PHPfrance

28 juin 2005, 18:16

LOOOOLLL :lol: je suis bete.
C'est bon j'ai trouvé toutes mes erreurs.
LE scripts fonctionne tres tres bien.
C'est juste ke je dois encore différencier DOSSIER et FICHIER.
MAis cela m'etait complétement sorti de la tete :lol:
SORRY

Bref un admin ou modo peut mettre RESOLU
Et voici le script final pour ceux ke cela interresse :
<?php

$path = $_GET['chemin'];   

if (empty($path))
      $path = "./";

if ($dossier = opendir ($path)) { //Vérification de l'existence du rep

while (false !== ($fichier = readdir ($dossier))) { //Vérification de la lecture des fichiers du rep

  if ($fichier != "." && $fichier != ".." && $fichier != "index.php") {
   //ancienne ligne :  echo '<a href="'.$path.''.$fichier.'" >'.$fichier.'</a><br>';
	echo '<a href="http://www.monsite.com/index.php?chemin='.$path.''.$fichier.'/">'.$fichier.'</a><br>';
   }
  }
closedir ($dossier);
}
?>
Donc attention cela fonctionne actuellement pour les dossiers et sous dossiers mais pas encore pour les fichiers vu kil fo différencier les deux.
Voila
A+
Et merci a vous tous de votre aide

PS : si qqun a deja un truc tout fait pour différencier fichier et dossier je crache pas dessus, et non, car fo toujours deux tete plutot qu'une.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 juin 2005, 18:52

ben y'a PHP qui a un truc tout fait : http://fr.php.net/manual/fr/function.is-dir.php

penche toi un peu plus sur tes erreurs et lis la doc, tu régleras presque tous tes problèmes tout seul, et tu viendras nous voir avec un vrai problème ;)

Quentin
Invité n'ayant pas de compte PHPfrance

28 juin 2005, 19:53

oui merci a toi mais jsuis tres vite impatient c pour cela ke j'arrive pas a me maitriser :lol:
Mais bon Voici le script final ki integre tout (Ya plus ka travailler la mise en page ) :
Index Of...<br>
**************************************<br><br>
<?php

$script_path = $_SERVER['PHP_SELF'];  //chemin de mon script

$path = $_GET['chemin'];   //boucle pour pouvoir appeler le script dans la meme page

if (empty($path))            //si c vide on remplace par le dossier en cours
      $path = "./";

if ($dossier = opendir ($path)) { //Vérification de l'existence du repertoire

while (false !== ($fichier = readdir ($dossier))) { //Vérification de la lecture des fichiers du repertoire

  if ($fichier != "." && $fichier != ".." && $fichier != "index.php") {
  
		if(is_dir($path.$fichier))    // si c un repertoire et non pas un fichier - différenciation
           {
               $nPath=$path.$fichier."/";
               echo "-> -> -> <a href='$script_path?chemin=$nPath'>$fichier</a><br>";
           }
           else
           {
			$nFichier=$path.$fichier."";
            echo "<a href='$nFichier'>$fichier</a><br>";
           }
   }
  }
closedir ($dossier);
}
?>
Jsuis content : RESOLU

merci a vous
a plouche :lol:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 juin 2005, 20:06

remplace juste ta ligne 7 par ça
$path = (isset($_GET['chemin']))?$_GET['chemin']:null;
ça t'évitera ce genre d'erreur quand $_GET['chemin'] n'existe pas
Notice: Undefined index: chemin in c:\program files\easyphp1-8\www\tests\listing.php on line 7

Quentin
Invité n'ayant pas de compte PHPfrance

28 juin 2005, 20:39

J'ai decouvert un truc etrange :O
Le script fonctionne sans aucun probleme avec FireFox.
MAis par contre avec IE ya quelque souci...
Par exemple je n'arrive pas a télécgharger ou du moins cliquer sur des fichiers types DOC.
Etrange.
pour visualiser ce que je dis : http://www.traiteurconcordia.be/test/
Dans le dossier "Test avec espace" ya un doc.
Firefox le prend mais pas IE, pourquoi ? :O
Encore une erreur dans mon script ? ? ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 juin 2005, 20:51

je pencherai plus pour une différence dans le traitement des urls avec espaces/accents

Firefox comprend mieux certaines choses qu'IE

essaye de virer l'accent et les espaces pour voir