Page 1 sur 2

Un script qui affiche une liste de liens pointant vers les

Posté : 19 nov. 2005, 20:41
par phpdog
Bonjour à tous :wink:

Je voudrai créer un petit script qui affiche les noms des dossiers du répertoire courant avec les liens pointant vers ses dossier, quelqu’un pourrait-il m’orienter vers un tutorial adapter ?

Posté : 19 nov. 2005, 20:47
par rami
J'ai pas de tutoriels sous la main (cherche sur google), mais je peux te conseiller d'utiliser la fonction glob().

Elle te permet de lister les fichiers selon un motif (*.txt par exemple, ou *.*).
Elle te retourne un tableau contenant les noms des fichiers. Donc tu parcours ce tableau en faisant des liens vers les fichiers.

Posté : 19 nov. 2005, 20:51
par phpdog
Bonjour rami et merci :wink:

Donc vous voulez dire qu'il faut que je fasse les liens manuelement aprés le listage ?

Posté : 19 nov. 2005, 20:53
par phpdog
Je par avec ceci:

Code : Tout sélectionner

<?php $files = glob("*.txt"); foreach ($files as $filename) { echo "$filename occupe " . filesize($filename) . " octets\n"; } ?>
Sauriez vous se que je dois faire pou qu'il n'y est que les répertoires qui soit afficher je ne trouve rien ?

Posté : 20 nov. 2005, 13:06
par eSp
Salut,

Je pense que ce bout de code t'aidera beaucoup aussi, à toi de le modifier selon tes envies !
<?php 
function direcho($path) { 
	
global $filetotal, $fullsize, $totaldirs; 
if ($dir = opendir($path)) { 
  while (false !== ($file = readdir($dir))) { 
   if (is_dir($path."/".$file)) {                    //Si c'est un répertoire, on vérifie son contenu 
   if ($file != '.' && $file != '..') {            // mais on exclut les fichiers '.' ou '..' 
     echo '<li><b>' . $file . '</b></li><ul>'; 
     direcho($path."/".$file); 
     echo '</ul>'; 
     $totaldirs++; 
   } 
   } 
  else {                      //Si ce n'est pas un répertoire, on afficher simplement les fichiers avec la taille 
   $tab = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"; 
   $filesize = $tab . '(' . filesize ($path.'/'.$file) . ' kb)'; 
   echo '<li>' . $file . $filesize . '</li>'; 
   $fullsize = $fullsize + filesize ($path.'/'.$file); 
   $filetotal++; 
  } 
} 
closedir($dir); 
} 
} 

direcho('.'); 

$fullsize = round($fullsize / 1024 / 1024, 2); 

echo"<br><br> 
<b>Nombre total de fichiers</b> - $filetotal fichier(s)<br> 
<b>Nombre total de répertoires</b> - $totaldirs répertoire(s)<br> 
<b>Taille Totale</b> - $fullsize MB<br> 
"; 

?> 
;);)

Posté : 20 nov. 2005, 13:11
par phpdog
Bonjour eSp et merci beaucoup :wink:

Mias se script ne mets pas de liens.

Posté : 20 nov. 2005, 13:12
par eSp
Non mais je crois pas que cela soit difficile de rajouter le petit bout de code pour le faire ! Doc je te laisse le plaisir de le faire ! :P Il faut bien que tu travailles un peu, non ?

Posté : 20 nov. 2005, 13:18
par phpdog
OK merci :wink:

Posté : 20 nov. 2005, 20:30
par rami
J'insiste avec ma fonction glo(), mais je la trouve vraiment plus simple, et y'a moins de lignes de codes avec:

phpdog, dans le lien donné tout à l'heure, si tu avais lu la page, tu serais tombé sur la liste des valeurs du 2ème argument de cette fonction, qui permet de changer le comportement par défaut:
<?php
$directories = glob("*",GLOB_ONLYDIR);
foreach ($directoriesas $dir) {
   echo "$dir<br>";
}
?> 
La syntaxe d'un lien HTML est la suivante:

Code : Tout sélectionner

<a href="chemin" > Lien </a>

Posté : 20 nov. 2005, 20:38
par phpdog
Merci beaucoup rami :wink:

Le liens affiche une page introuvable chez moi.

Quand a se script:
<?php 
$directories = glob("*",GLOB_ONLYDIR); 
foreach ($directoriesas $dir) { 
   echo "$dir<br>"; 
} 
?> 
Il affiche l'erreur suivante:

Code : Tout sélectionner

Parse error: parse error in C:\easyPHP\www\de.php on line 3

Posté : 20 nov. 2005, 20:39
par jeff
salut tu pourrais quand meme chercher un peu :evil:
<?php
$directories = glob("*",GLOB_ONLYDIR);
foreach ($directories as $dir) {
   echo "$dir<br>";
}
?>
:wink:

Posté : 20 nov. 2005, 20:48
par phpdog
OK, merci :wink:

Pour les liens j'ai esayer ceci:
<?php 
$directories = glob("*",GLOB_ONLYDIR); 
foreach ($directories as $dir) { 
   echo "<a href="$dir" > Lien </a><br>"; 
} 
?> 
Mais sa renvoi une erreur.

Posté : 20 nov. 2005, 20:49
par rami
Quelle erreur?

edit: ah ouais,c 'est normal tu utilises des guillemets pas comme il faut ligne 4:
<?php
$directories = glob("*",GLOB_ONLYDIR);
foreach ($directories as $dir) 
{
   echo '<a href="$dir" > Lien </a><br>';
}
?>

Posté : 20 nov. 2005, 20:54
par phpdog
Merci encore :wink:

Le script n'affiche plus les noms des fichier mes que le mots Liens, et quand on clique sur un lien page introuvable.

Posté : 20 nov. 2005, 21:12
par rami
Au temps pour moi:
<?php
$directories = glob("*",GLOB_ONLYDIR);
foreach ($directories as $dir)
{
   echo '<a href="'.$dir.'" > Lien </a><br>';
}
?>
Il y avait la variable $dir comprise entre des simple quotes. Elee n'était donc pas interpétée. Pour le reste, je te laisse chercher car j'ai l'impression que tu ne cherches pas à faire des choses. Tu demandes tout ;)