Afficher le contenu d'un repertoire en PHP [Résolu]

Afficher le contenu d'un repertoire en PHP Afficher le contenu d'un répertoire (Résolu) » Forum - Java Afficher le contenu d'un répertoire en ordre alphabétique (Résolu) » Forum - PHP PHP : affichage données après clic dans liste (Résolu) » Forum - PHP Affiche le contenu d'un repertoire du disque » Forum - Linux / Unix Afficher le contenu d'un repertoire » Forum - Programmation

je veux afficher une liste des fichiers d'un repertoires en utilisant PHP, par exemple, sur mon site , j'ai un repertoire mp3 qui contient des mp3, je veux qu'une page "list.php" affiche le contenu de ce repertoire, merçi

si vous avez un autre astuce plus simple ça serait mieux, merçi

Forum

Afficher le contenu d'un repertoire en PHP Afficher le contenu d'un répertoire (Résolu) » Forum - Java Afficher le contenu d'un répertoire en ordre alphabétique (Résolu) » Forum - PHP PHP : affichage données après clic dans liste (Résolu) » Forum - PHP Affiche le contenu d'un repertoire du disque » Forum - Linux / Unix Afficher le contenu d'un repertoire » Forum - Programmation

Web: www.shapebootstrap.net

58 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

tiens, regarde si ca te conviens, j'ai fait ca y'a quelques semaines sur ccm, je retrouve plus la version in line... mais tu auras pas de difficultés à le tester et a le mettre à ta guise :

<?php  $dir_nom = '.'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  --> ('point')  $dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant  $fichier= array(); // on déclare le tableau contenant le nom des fichiers  $dossier= array(); // on déclare le tableau contenant le nom des dossiers    while($element = readdir($dir)) {  	if($element != '.' && $element != '..') {  		if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;}  		else {$dossier[] = $element;}  	}  }    closedir($dir);    if(!empty($dossier)) {  	sort($dossier); // pour le tri croissant, rsort() pour le tri décroissant  	echo "Liste des dossiers accessibles dans '$dir_nom' : \n\n";  	echo "\t\t<ul>\n";  		foreach($dossier as $lien){  			echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";  		}  	echo "\t\t</ul>";  }    if(!empty($fichier)){  	sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant  	echo "Liste des fichiers/documents accessibles dans '$dir_nom' : \n\n";  	echo "\t\t<ul>\n";  		foreach($fichier as $lien) {  			echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";  		}  	echo "\t\t</ul>";   }  ?>

Merci gryzzly 136

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 22745 internautes ce mois-ci

Reply
réponses:
  • auteur

  • auteur

    bonjour,

    merci pour ce bout de script, il correspond bien à ce que je recherchais!

    parcontre je n'arrive pas à voir comment je pourrait ensuite faire pour supprimer un où plusieurs des fichiers parmis la liste..

    avec une case à cocher qui renseigne une fonction ulink mais bon... j'ai pas trop d'idée là...

    si qqun à un tuyau c cool.

    Merci encore pour la réponse.

    bye

  • auteur

    ton code ma bcp servis mais j'ai eu du mal a rajoute une optien pour filré les fichier : commme php ou autre en premier j'utilise ce code :

     <?php             function listing($repertoire){            $fichier = array();             if (is_dir($repertoire)){             $dir = opendir($repertoire); //ouvre le repertoire courant désigné par la variable       while(false!==($file = readdir($dir))){ //on lit tout et on récupere tout les fichiers dans $file            if(!in_array($file, array('.','..'))){ //on eleve le parent et le courant '. et ..'             $page = $file; //sort l'extension du fichier       $page = explode('.', $page);       $nb = count($page);       $nom_fichier = $page[0];       for ($i = 1; $i < $nb-1; $i++){       $nom_fichier .= '.'.$page[$i];       }       if(isset($page[1])){      $ext_fichier = $page[$nb-1];      if(!is_file($file)) { $file = ''.$file; }        	 }       else   	 {      if(!is_file($file)) { $file = ''.$file; } //on rajoute un "/" devant les dossier pour qu'ils soient triés au début  	  	  	       $ext_fichier = '';  	       }             if($ext_fichier != 'php3' and $ext_fichier != 'db' ) { //utile pour exclure certains types de fichiers à ne pas lister       array_push($fichier, $file);       }      }       }       }          	       natcasesort($fichier); //la fonction natcasesort( ) est la fonction de tri standard sauf qu'elle ignore la casse       // et la date du téléchargement                foreach($fichier as $value) {    	       echo '    <a href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace ('/', '', $value)).'"  target=\"_blank\">'.$value.'</a> <br />';  	             }             }             //exemple d'utilisation :            listing('admin/UPLOAD/emploi/upload'); //chemin du dossier       ?> 

    exp
    il marché tres bien localement mais une fois que j'ai mis le site sur le serveur j'ai eu des probleme de lien voici donc ce qu'il me donne exp : The requested URL /admin/UPLOAD/emploi/upload/emploi du temsp.pdf was not found on this server.

    puis j'ai adopter le tien et les liens marche trés bien apart que cette fois ci il affiche aussi le liens des page web.

  • auteur

    Bonjour,
    As tu trouvez comment mettre le filtre pour les fichiers php?
    Merci

  • auteur

    En fait j'ai fini par trouver
    il faut utiliser la fonction

    strrchr
    .
    l'excellent code de notre ami marche à merveille
    <?php  $dir_nom = '.'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  -->     ('point')  $dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on     ouvre le contenu du dossier courant  $fichier= array(); // on déclare le tableau contenant le nom des fichiers  $dossier= array(); // on déclare le tableau contenant le nom des dossiers    while($element = readdir($dir)) {  	if($element != '.' && $element != '..' && strrchr($element,'.') != '.php') {  		if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;}  		else {$dossier[] = $element;}  	}  }    closedir($dir);    if(!empty($dossier)) {  	sort($dossier); // pour le tri croissant, rsort() pour le tri décroissant  	echo "Liste des dossiers accessibles dans '$dir_nom' : \n\n";  	echo "\t\t<ul>\n";  		foreach($dossier as $lien){  			echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";  		}  	echo "\t\t</ul>";  }    if(!empty($fichier)){  	sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant  	  	echo "\t\t<ul>\n";  		foreach($fichier as $lien) {  			echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";  		}  	echo "\t\t</ul>";   }  ?>  

  • auteur

    Bonjour,
    Ca marche nickel, merci.
    Mon répertoire à ouvrir ((dans : "listing" est rempli de répertoires.... une vrai arborescence. Comment gérer cette arborescence via le script et dans la même fenêtre. Comme l'explorateur windows, mais j'insiste, dans la même fenêtre de mon navigateur

    Par exemple :
    Je clic sur Dossier 2 cela m'ouvre l'arborescence du dossier 2
    Je clic sur sous dossier 2 cela m'ouvre l'arborescence du sous dossier 2

    Chaque arborescence s'ouvrant seule à l'écran avec la ligne : "Remonter d'un niveau" en haut pour se balader dans l'arborescence général du dossier de baser.

    C'est compliqué ça !!!!

    dossier racine
    --------------sous dossier 1
    --------------sous dossier 2
    ----------------------- sous sous dossier 2
    --------------sous dossier 3
    --------------sous dossier 4
    .

    Merci

  • auteur

    bonjour a tous,

    voilà je sais que ce topic est vieux de 9 mois, mais voilà je ne comprend pas entièrement la script de gryzzly pour lister
    le contenu d'un repertoire.

    Pourquoi a t on besoin de tester si $exemple = '.' et '..'

    voilà

    merci d'avance pour vos reponses

  • gryzzly

    parce que fais le test, sans tester ces deux éléments. Tu verras que c'est très moche ! Tu n'a pas besoin d'afficher dans le listing le dossier ou tu es (.) ni le dossier supérieur (..) (a moins que dans ton cas tu ne cherches justement à les afficher mais je ne vois pas l'intéret d'afficher à l'écran un . et deux ..)

    Suis je clair ? Fais le test, ce sera bcp plus parlant !

  • gryzzly

    slt, désolé de répondre tardivement

    En faite j'avais mal posé mal question et j'avais testé l'affichage sans enlever le . et le ..
    Je voulais savoir à quoi ils servaient, en tout cas maintenant je sais grâce à toi que cela sert à se balader dans l'arborescence.

    Merci pour tout

    Tchao

  • auteur

    il ne fonctionne po b1 ce code

  • auteur

    Si tu code aussi bien que t'écris ça risque pas de fonctionner ^^

  • auteur

    Si tu codes*

  • auteur

    hahhahhahahahahahahaaaaaaaaaaaaaaa sinon je prend quand même.

  • auteur

    J'avoue :D => Que des fautes dans le messages, aucune fautes dans les commentaires de code xD

  • fredjm31

    Alors là, bravo ! Ca marche nickel !

  • auteur

    aucune faute sans s à la fin vu qu'il y a 0 faute !

  • auteur

    Super scripte. A copier/coller tel quel !

  • auteur

    Merci pour le script

  • auteur

    genial. merci. C'est rare un code propre sans fautes wow

  • auteur

    Punaise, ça marche super bien bien même sans modifier quoi que ce soit, bravo !

  • auteur

    merci bien, pas besoin de ce casser la tête à trouver les fonctions ;)

  • auteur

    Oui, mais la fonction sort() ne trie pas par date de modification (Elle est équivalente à ls -l en Linux)
    Pour moi les résultats sont:
    Sauvegardes BDD
    * Version du 01-01-2015 à 11:00
    * Version du 01-01-2015 à 09:00
    * Version du 02-01-2015 à 11:00
    * Version du 03-01-2015 à 11:00
    * Version du 23-12-2014 à 11:00
    * Version du 24-12-2014 à 11:00
    * Version du 25-12-2014 à 11:00
    * Version du 26-12-2014 à 11:00
    * Version du 27-12-2014 à 11:00
    Ce que je veux est un tri équivalent à la commande ls -lRt sous Linux, qui peut donner ça:
    Sauvegardes BDD
    * Version du 03-01-2015 à 11:00
    * Version du 02-01-2015 à 11:00
    * Version du 01-01-2015 à 11:00
    * Version du 01-01-2015 à 09:00
    * Version du 27-12-2014 à 11:00
    * Version du 26-12-2014 à 11:00
    * Version du 25-12-2014 à 11:00
    * Version du 24-12-2014 à 11:00
    * Version du 23-12-2014 à 11:00
    Merci

  • auteur

    Pour un tri par date de modification du fichier tu peux éventuellement créer un array avec en clé la date de modification au format mysql (aaaa.mm.jj) :
    $maliste = array('madatemysql' => 'monfichier');

    Une autre solution plus simple consiste à sauvegarder tes fichiers directement avec le nom correctement formaté : aaaa.mm.jj_sauvegarde.sql

  • auteur

    Très bien jouer,
    Je n'ai pas penser de nommer avec cette manière.
    Comme je trie sera par nom.
    Merci

  • auteur

    Génial merci !

  • auteur

    Merci

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

teste ce bout de code

<?php
$dir = opendir("le_chemin_vers_ton_repertoire");
while($file = readdir($dir)) {
echo "$file\n";
}
closedir($dir);
?>
------------------------------------------------
(HMS) la réussite ne s'improvise pas!!!

Reply
réponses:
  • auteur

    bonjour, je viens d'utiliser ce bout de code sur un des mes sites et çà fonctionne bien mais je rencontre un pb pour l'affichage du résultats:

    je voudrais savoir comment faire pour que les noms de fichiers apparaissent en colonne plutôt que les un à la suite des autres à l'horizontale.

    avez vous une idée ?

    merci d'avance

  • auteur

    (pour ceux qui cherche : )
    faut ajouter un <br /> de sorte à faire :

    <?php
    $dir = opendir("le_chemin_vers_ton_repertoire");
    while($file = readdir($dir)) {
    echo "$file <br />\n"; /* le <br /> donne un retour à ligne pour le html; et le \n donne une retour à la ligne dans le code source */
    }
    closedir($dir);
    ?>
    une autre option est possible :
    <?php
    $dir = opendir("le_chemin_vers_ton_repertoire");
    echo "<pre>";
    while($file = readdir($dir)) {
    echo "$file\n";
    }
    echo "</pre>"; /* les balises <pre></pre> utilise la mise en forme du code source, le \n sert donc de <br /> sur la page html */
    closedir($dir);
    ?>

  • auteur

    C'est le plus efficace !!! =)

  • auteur

    Si vous voulez le tout avec le code qui affiche les images :

    <?php
    $dir = opendir("uploads/");
    while($file = readdir($dir)) {
    echo "$file <br />\n"; /* le <br /> donne un retour à ligne pour le html; et le \n donne une retour à la ligne dans le code source */
    ?>
    <img src="uploads/<?php echo $file; ?>"/>
    <?php
    }
    closedir($dir);
    ?>

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour
je desirerais ouvrir un repertoire crée, dans une fenetre prevu a cette effet. Le probleme etant ke c tout le site qui s'affiche dans le fenetre sur internet explorer en revanche cela fonctionne tres bien sur mozilla.Pkoi et que puis je faire?


// Le répertoire a été choisi
if ( isset($_POST['gal']) )
{
if ( strtoupper($_POST['gal']) == "new" )
{
if ( isset($_POST['repertoire']) )
{
if(is_dir($relative_files_path . $_POST['repertoire']))
{
echo "<form name=\"repertoire\" method=\"post\" action=\"upload.php?gal=new\">";
echo "Ce répertoire existe déjà.<br>Merci de choisir un nouveau nom de répertoire : <br>";
echo "<input type=\"text\" name=\"repertoire\">   <input type=\"submit\" name=\"submit\" value=\"Valider\">";
echo "<input type=\"hidden\" name=\"reponse_OK\">";
echo "</form>";

echo "<form name=\"repertoire\" method=\"post\" action=\"upload.php\">";
echo "<input type=\"hidden\" name=\"reponse_OK\">";
list_dir_to_upload($relative_files_path, "répertoires");
echo "<input type=\"submit\" name=\"submit\" value=\"Valider\">";
echo "</form>";
}
else
{
mkdir($relative_files_path . supprimer_accents($_POST['repertoire']));
afficher_upload($_POST['repertoire']);
}
}
}
else
{
afficher_upload($_POST['gal']);
}
}
// Choix du répertoire
else
{
echo "Choisissez le répertoire dans lequel vous voulez déposer vos photos, ou créez un nouveau répertoire à votre nom :<br><br>";
echo "<form name=\"repertoire\" method=\"post\" action=\"upload.php\">";
echo "<input type=\"hidden\" name=\"reponse_OK\">";
echo "<input type='hidden' name='gal' value='new'>";
echo "Nouveau répertoire : <input type=\"hidden\" name=\"reponse_OK\">";
echo "<input type=\"text\" name=\"repertoire\"> <input type=\"submit\" name=\"submit\" value=\"Créer un nouveau répertoire\">";
echo "</form>";

echo "<form name=\"repertoire\" method=\"post\" action=\"upload.php\">";
echo "<input type=\"hidden\" name=\"reponse_OK\">";
list_dir_to_upload($relative_files_path, "répertoires");
echo "<input type=\"submit\" name=\"submit\" value=\"Valider\">";
echo "</form>";
}
}

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Salut,
J'ai récuperer le script de gryzzly qui marche à merveille.
Mais voila, je voudrais ajouter une petite modif. Je voudrais qu'au lieu d'ouvrir le fichier en cliquant dessus, je voudrais que ça le supprime.
Pour cela j'ai modifier une ligne :

echo "\t\t\t<li><a href=\"<? unlink($dir_nom/$lien); ?> \">$lien</a></li>\n";

Mais, il me repond : You don't have permission to access /monsite/Admin/< on this server.

Ou est mon erreur ?
y'a t'il une autre solution ?

Merci

Reply
réponses:
  • auteur

    CHMOD ... tu n'as pas les autorisations sur le serveur

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Salut a tous,
Alors ma question est la suivante que doit-on mettre pour afficher un listing d'un dossier mais comprenant qu'un type de fichier dans mon cas des fichiers .HTML
En faite je voudrais afficher un listing mais que de fichiers html et non pas des autres fichiers présent sur ce même dossier.
Merci de votre réponse
Cordialement

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

bah...il faudrait peut-être que tu l'upload sur un serveur ou que tu utilise un serveur local ! windows (ou tout autre système d'exploitation je pense) ne lit pas le PHP !
si tu n'as pas de compte ftp, je te conseil de télécharger WAMP manager ( je l'utilise et il fonctionne parfaitement).
il permet de lire les PHP en étant hors-ligne. sinon, inscrit-toi sur un site qui propose un hébergement(ifrance et lycos multimania sont gratuit).

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

ok merci de ta reponce!

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

bonjour,
je vous conseille absolument jbcexplorer (http://www.jbc-explorer.info/)
qui liste n'importe qu'elle fichier contenu dans les repertoires et cela trés simplement
a+

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

j'aimerais savoir comment on peut afficher le contenu d'un repertoire perso d'un membres

je m'explique un membre veut uploader un fichier à partir de son profil, une fois uploader cela créer un repertoire perso ok ca marche mais ce que je voudrais faire c'est que lorsque le membres veut creer un posts ou répondre à un post et celui-ci veut introduire un de ces fichiers uploader ceux-ci apparaisse automatiquement en bas de chaque nouveaux posts qu'il veut créer avec à côté du fichier une case à cocher qui enverrait du bbcode dans la zone de texte quand le fichier est séléctionner et donc quand le memebres fait envoyer le message le fichier s'introduit avec le message.
mais les fichiers faudrait qu'ils apparaissent seulement aux membres concerné par son repertoire et seulement si celui ci est connecté avec son identifiant
je ne sais pas si je me suis fait comprendre excusez moi c'est un peu long mais merci d'avance

A+

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Merci pour ce script Gryzzly .
J'aimerai savoir comment ajouter à la fin des lignes du listing, la taille des fichiers .
Et si possible, en debut des lignes, une icone par extension .

Mon but etant de refaire un peu ce que l'on voit sur une page ftp que je ne peux utiliser car il y a parfois plusieurs dossiers à ouvrir pour un seul client (membre) .

Merci par avance

Reply
réponses:
  • auteur

    <?php
    $dir = opendir("uploads/");
    while($file = readdir($dir)) {
    echo "$file <br />\n"; /* le <br /> donne un retour à ligne pour le html; et le \n donne une retour à la ligne dans le code source */
    ?>
    <img src="uploads/<?php echo $file; ?>"/>
    <?php
    }
    closedir($dir);
    ?>

    Dans user et tu connecte ta DB ou ton fichier

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

derien :p

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

super merci gryzzly je cherche depuis quelque jour quelques chose pour faire sa et c'est exactement ce qu'il me falais trop bon ^^

Reply
réponses:

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

comment afficher l'arborescence d'un site web.

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Comment faire pour empecher de lister (par exemple) le fichier index.php ...

Eneffet, c'est bien joli de l'afficher et de le rendre clickable mais dans moncas,je suisdéjàsur l'index, je ne vais donc pas y retourner ;)

Merci de vos avis

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Tu fais une simple condition dans la boucle while qui parcoure le dossier :

if ( $file != 'index.php' )
{
...
}

Reply
réponses:
  • auteur

    Tien j'ai fais ça finalement :p

    // NE PAS AFFICHER DE INDEX.PHP = exclusion de fichiers.

    if($lien == "index.php"){} else {

    echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";


    } //fin du test exclusion

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

j'ai repris à mon compte le script de Grizzly ci-dessus, mais je n'obtiens pas le fonctionnement souhaité.

Je désire scruter un répertoire partagé sur un poste de mon réseau ($dir_nom = chemin UNC de mon répertoire) , afficher le résultat dans une page web (jusque là le script fonctionne parfaitement) et télécharger les fichiers. Mais là, cela ne fonctionne pas.

En fait, il cherche à ouvrir http://chemin UNC de mon partage. Y a t'il une autre façon de faire.

Mon but est de construire un portail d'entreprise de partage de document.

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

je vous remercie par avance

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Le plus simple c'est d'utiliser la fonction glob() :

  <?php  $liste = glob('/mon/dossier/*.mp3');  foreach ($liste as $nom_fichier) {      echo $nom_fichier."\n";  }  ?>  

Sinon il faut utiliser une fonction récursive, tout est expliqué dans ce tutoriel :
http://www.finalclap.com/faq/197-php-liste-fichier-dossier-recursif

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

salut, ton code marche nikel pour afficher les dossier. J'aurai juste une petite question.

J'arrive a afficher comme ci-dessous mes dossiers :

Liste des dossiers accessibles dans 'images' :
annee_2004
annee_2005
annee_2006
annee_2007
annee_2008
annee_2011
annee_2012
annee_2013

Retour

Maintenant je cherche juste a pouvoir rentrer dans un dossier et supprimer un fichier sélectionné.

ex : annee_2004 -> image1.jpg (supprimer l'image1)

Merci par avance de votre aide.

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

voilà la solution

http://fr.php.net/manual/fr/function.readdir.php

Reply

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed