Lister un folder et adapter un lien sur les fichiers de ce folder.

Résolu
ecolom Messages postés 68 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 1 décembre 2012 - 15 févr. 2011 à 12:44
ecolom Messages postés 68 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 1 décembre 2012 - 15 févr. 2011 à 21:31
BOnjour les Z'amis ( amies) ,

J'ai plusieurs document, doc, pdf, txt,msg qui se trouve sur un serveur.
J'ai trouvé un code sur le net qui me permet d'afficher les différents dossiers et fichiers du dossiers master. Cela fonctionne très bien car l'affichage des dossiers est d'une certaine couleur et les fichiers d'une autre couleur et surtout, c'est trié. Cependant, j'aimerais adapter un lien automatiquement sur ces fichiers et là....Problème. Je sais éditer le premier document de chaque dossier et pas les autres documents d'une même liste. J'ai beau retourner le code dans tous les sens mais je ne vois pas d'où vient l'erreur.
Avez-vous une idée, indication pour faire avancer le schmilblic.
Toute aide est la bienvenue. Merci

<html>
<head>
<meta http-equiv= "Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
</head>

<?php
function ListFolder($Folder, $SkipFileExts, $SkipObjects) // Fonction pour lister les dossiers
{
$url = $Folder; // On initialise le début de l'url dynamique

$dir = opendir($Folder);
while (false !($Current readdir($dir))) // Boucle sur tout ce qu'il y a dans le répertoire
{
if ($Current !='.' && $Current != '..' && in_array($Current, $SkipObjects)===false)
{
if(is_dir($Folder.'/'.$Current)) // Si c'est un dossier
{
$url .= "/".$Current; // On ajoute le dossier sur lequel on se trouve pour former dynamiquement l'url

echo ' '.$Current.'
';
ListFolder($Folder.'/'.$Current, $SkipFileExts, $SkipObjects); // On liste les dossiers contenue dans le dossier (récursivité)
}
else
{
$url . = "/".$Current; // On ajoute le nom du fichier pour former dynamiquement l'url

$FileExt = strtolower(substr(strrchr($Current ,'.'),1));
if (in_array($FileExt, $SkipFileExts)===false) // On regarde si on doit afficher cette extension

echo "$Current
"; // On affiche l'url d'accès au fichier
echo '
';
}
}
}
closedir($dir);
}
$Folder = '//W3ASE01/autocom/documents/communication';
$SkipExts = array('php', 'db');
$SkipObjects = array('UnDossier', 'UnFichier');
ListFolder($Folder, $SkipExts, $SkipObjects);
?>

</html>

2 réponses

ecolom Messages postés 68 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 1 décembre 2012
15 févr. 2011 à 21:31
Merci Ludwig59, cela fonctionne maintenant.
Ce forum est une merveille et les utilisateurs comme vous méritent une ovation.
Précis et rapide. J'espère pouvoir en faire autant quand je maitriserai mieux le php.

Merci
3
cs_ludwig59 Messages postés 128 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 6 mai 2011 2
15 févr. 2011 à 15:50
Bonjour
Le problème vient de la variable $url, car à chaque fois vous concaténé avec le $current.
Essayer ceci :

<html>
<head>
<meta http-equiv= "Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
</head>

<?php
function ListFolder($Folder, $SkipFileExts, $SkipObjects) // Fonction pour lister les dossiers
{
$dir = opendir($Folder);
while (false !($Current readdir($dir))) // Boucle sur tout ce qu'il y a dans le répertoire
{
if ($Current !='.' && $Current != '..' && in_array($Current, $SkipObjects)===false)
{
if(is_dir($Folder.'/'.$Current)) // Si c'est un dossier
{

echo ' '.$Current.' 
';
ListFolder($Folder.'/'.$Current, $SkipFileExts, $SkipObjects); // On liste les dossiers contenue dans le dossier (récursivité)
}
else
{
$FileExt  = strtolower(substr(strrchr($Current ,'.'),1));
if (in_array($FileExt, $SkipFileExts)===false) // On regarde si on doit afficher cette extension

echo "$Current
"; // On affiche l'url d'accès au fichier
echo '
';
}
}
}
closedir($dir);
}
$Folder = '//W3ASE01/autocom/documents/communication';
$SkipExts = array('php', 'db');
$SkipObjects = array('UnDossier', 'UnFichier');
ListFolder($Folder, $SkipExts, $SkipObjects);
?>

</html>
0
Rejoignez-nous