VIVEZ LE
FOOTBALL !

Posez votre question Signaler

Script php listant fichier d'un répertoire [Résolu]

Tux1 - Dernière réponse le 14 févr. 2010 à 19:49
Voila bonjour je cherche un script qui liste les fichiers d'un répertoire MAIS AVEC LE : http://monsite.com/dossier_en_question/

exemple: http://monsite.com/dossier_en_question/patatipatata.exe

merci et j'espere que quelqu'un ma compris
Lire la suite 

Script php listant fichier d'un répertoire »

18 réponses
Réponse
+15
moins plus
sinon on peut aussi utiliser ca:
function AffDir($rep)
{
  $dir = opendir($rep);
  while ($File = readdir($dir))
  {
    if($File != "." && $File != "..")
    {
      echo $File."<br>";
    }
  }
  closedir($dir);
}

AffDir(".");
Ajouter un commentaire
Réponse
+5
moins plus
Récupérer la liste des répertoires dans un tableau à partir d'une fonction récursive.

Les fonctions récursives, c'est bien joli, mais quand on veut récupérer des valeurs (il faut alors passer par un RETURN), ce n'est plus évident.
A partir du script de http://www.ac-creteil.fr/util/progra...epertoires.php
voici une adaptation qui permet de récupérer la liste des répertoires et sous-répertoires sous forme de tableau.
Le grand avantage est de pouvoir utiliser ce tableau dans des listes déroulantes ...
(une astuce INDISPENSABLE est d'utiliser des variables GLOBALES pour $liste_rep et pour $i )

<?php 
// ---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
// lecture des REPERTOIRES en PROFONDEUR (à partir de "$rep") et COMPTAGE du nombre de fichiers (avec fonction récursive) 
// ---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
// http://www.ac-creteil.fr/util/progra...epertoires.php 
/* script rep1.php 
* affichage récursif du contenu d'un répertoire, avec parcours en "profondeur d'abord" 
* pour cela dès que l'on a atteint et reconnu un sous-répertoire, on le parcours 
* prioritairement en appelant récursivement la fonction de parcours pour ce répertoire. 
*/ 

function parcours_rep($rep, $ssrep, $racine, $i) // fonction récursive ("racine" est là pour retrancher cette racine au chemin complet afin de remplir le tableau) 
{ 
if (is_dir($rep)) // Ouvre le dossier "racine" ("/photos_web/galeries/" par exemple) et lit tous les répertoires 
{ 
if( $dir = opendir($rep) ) // Ouvre le dossier "racine" et lit tous les répertoires 
{ 
while( ($fichier = readdir($dir)) !== false ) 
{ 
if ($fichier != "." && $fichier != ".." ) 
{ 
$chemin = $rep.$fichier; 
if (is_dir($chemin)) // Est-ce que $chemin est un répertoire ? 
{ 
global $liste_rep; 
global $i; 
$liste_rep[$i] = substr($chemin, strlen($racine)); // PLace les fichiers dans un tableau ($liste_rep[] = à la fin) 
echo 'i = '.$i.' - '; 
echo 'liste_rep = '.$liste_rep[$i].'<br/>'; 
// echo 'chemin = '.$chemin."<br>"; 
$i++; 
parcours_rep($chemin.'/', ($ssrep==''?$fichier:$ssrep.'/'.$fichier) , $racine , $i); // fonction récursive 
} 
/* else // si on veut afficher les fichiers du répertoire (ou sous répertoire) 
{ 
$liste_galeries[$i] = substr($chemin, strlen($racine)); // PLace les fichiers dans un tableau 
echo 'galerie '.$i. ' = ' . $liste_galeries[$i].'<br/>'; 
} 
*/ } 
} 
} 
} // -------------------------------------- fin de la lecture des répertoires ------------------------------------------------------------------- 
else 
{ 
echo "le répertoire \"$rep\" n'existe pas ..."; 
} 
closeDir($dir); 
return $liste_rep; 
} // ---------------------------------------------------------------- fin de la fonction ------------------------------------------------------------------- 

$liste_repertoires = array(); 
$liste_galeries = array(); 
$i=0; // $i = tous les répertoires 
$nb_rep=0; 
echo "Affichage d'un rép. avec parcours en PROFONDEUR d'abord <br/>"; 
//$repertoire= '../../photos_web/galeries/'; // "$repertoire" défini dans le programme d'appel 
$liste_repertoires = parcours_rep($racine, '', $racine, $i=0); 
$nb_galeries = (count($liste_galeries)); 
$nb_rep = (count($liste_repertoires)); 
echo 'nb_rep = '.$nb_rep.'<br/>'; 
// Classement des répertoires ( "sort" = tri croissant "rsort" = tri décroissant) 
sort($liste_galeries); // ou rsort($liste_galeries); 
sort($liste_repertoires); // ou rsort($liste_repertoires); 
for ($i=0; $i<$nb_rep; $i++) 
{ 
if ($liste_repertoires[$i] != '') 
{ 
echo 'liste_rep '.$i.' = '.$liste_repertoires[$i].'<br/>'; 
} 
} 

// ============================================================================================================================ 
?> 


Merci à tous les développeurs.
Ajouter un commentaire
Réponse
+0
moins plus
t super merci

mais je suis pas très doué et j'ai windows xp

alors si tu peux m'aider ca serai vraiment gentil

et encore merci
Ajouter un commentaire
Réponse
+0
moins plus
jai fais ca merci :

___________________________________________________________
<?

$dossier_en_cours = "http://monsite.com/dossier_en_question/";

if ($handle = opendir(".")) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") { // Evites les dossiers


echo $dossier_en_cours.$file."<br>";

}
Ajouter un commentaire
Réponse
+0
moins plus
Salut

jette un oeil ici : http://www.jbc-explorer.com

@+

Geo
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour à tous !
Tux1 a écrit ceci :

<?

$dossier_en_cours = "http://monsite.com/dossier_en_question/";

if ($handle = opendir(".")) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") { // Evites les dossiers


echo $dossier_en_cours.$file."<br>";

}

Je voudrais savoir si, au lieu d'afficher le nom du dossier et du fichier ce serait possible de générer un lien direct vers chaque fichier qui est dans le dossier. Je ne sais pas comment faire !
Merci d'avance pour votre aide et bonne journée !
Ajouter un commentaire
Réponse
+0
moins plus
Avec le lien vers le fichier :

$dossier_en_cours = "http://monsite.com/dossier_en_question/";

if ($handle = opendir(".")) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") { // Evites les dossiers
echo "<a href='".$file."'>".$dossier_en_cours.$file."</a><br>";
}
}
}

Dryzd
http://www.citewarhammer.com
Ajouter un commentaire
Réponse
-1
moins plus
oui mais le lien en question ne marque que si les noms de fichiers ne comportent pas de caractères spéciaux, à savoir les espaces (à remplacer par %20 ) des ' ou " (à remplacer par \' et \" ) etc etc, il faudrait adapter le script pour qu'il modifie les noms à caractères spéciaux et les remplace automatiquement ^^
moi je suis pas encore assez expérimenté pour le faire désolé ^^'
Ajouter un commentaire
Réponse
-1
moins plus
Bonjour,

j'aurai besoin dans un repoire contenant plusieur fichier de trouver le fichier comportant un nom, je m'explique

j'ai des image nomé apr exemple 23698-569-548963325.jpg un autre 23698-569-6942368.jpg etc.....

j'aimerai pouvoir utiliser un fichier en ne recherchant qu'a partir d'un N° contenu dans le nom du ficher ex : 6942368 me selectionerai le fichier 23698-569-6942368.jpg que je pourai ensuite travaillé et changer de place sur mon serveur.

mon probleme est la recherche du fichier avec un frangmment de son nom.

quelqu'un peut m'aider ?

d'avance merci
Ajouter un commentaire
Réponse
-1
moins plus
tres bien cette fonction, mais comment je fait pour en deduire un nom de fichier plus long

ex si je recherche dans un nom de fichier 8749_4 j'aimerai que le script me retourne automatiquement le fichier gjzisn_66383068_8749_4.jpg

la je ne voi toujours pas comment faire :(
Ajouter un commentaire
Réponse
-1
moins plus
bonjour !! aidez moi à avoir le code pour filtrage à partir d'1 liste menu en php

exemple : en selectionnant une direction la liste de ses sous directions apparait et en selectionnant une sous direction la liste de ses services apparait !!




MERCI D'AVANCE!!!!!
Greg-J - 2 janv. 2010 à 01:02
tu devrais utiliser du javascript avec du CSS pour réaliser ton menu.
Ajouter un commentaire
Réponse
-1
moins plus
Villa Flore>petit erreur dans ton code
tu a marqué :
"
...
if ($fichier != "." && $fichier != ".." )
{
$chemin = $rep.$fichier;
if (is_dir($chemin)) // Est-ce que $chemin est un répertoire ?
{
...
"
alors que la syntaxe propre serait plutôt :
"$chemin = $rep.'\\'.$fichier;"
=>avec l'antislash pour associer les 2 variables et véritablement faire un lien absolut...
Sans ça la condition :
"if (is_dir($chemin)) // Est-ce que $chemin est un répertoire ?
{ " -> ne serait jamais vérifier et aucun répertoire ne serait trouver dans l'arborescence !

Cependant très beau code qui m'a bien arrangé
merci à toi Villa Flore
Ajouter un commentaire
Réponse
-2
moins plus
salut
en php, tu as la fonction exec( ) qui te permet d'executer des commandes DOS par exemple...

ou alors passthru( ) ou system( )
Tux1 - 3 nov. 2005 à 12:44
merci de ta réponse

mais peut tu précisé sil te plait merci
jisisv- 4 nov. 2005 à 12:37
Vraiment pas une bonne idée d'utiliser exec , system et Cie.
Ce sont des fonctions à bannir et que tout administrateur PHP devrait interdire.
(pas sécure, non portable). Sauf si l'on doit faire appel à un programme externe propriétaire, sans API PHP évidemment.
On utilise les (nombreuses) fontion PHP permettant de manipuler fichiers et répertoires etc...
ou alors on a la flemme de chercher dans la documentation.
Ajouter un commentaire
Réponse
-2
moins plus
Ajouter un commentaire
Réponse
-3
moins plus
dans ton script, tu peux utiliser ces fonctions.

http://www.nexen.net/docs/php/annotee/function.system.php

ensuite selon ton OS, tu utilises la commande adéquate (ls ou dir)
Ajouter un commentaire
Ce document intitulé « Script php listant fichier d'un répertoire » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?