Accueil > Forum > > > > Sous-répertoire non reconnu comme étant des répertoires
Sous-répertoire non reconnu comme étant des répertoires
dimanche 26 février 2006 à 17:58:31 |
Sous-répertoire non reconnu comme étant des répertoires

darkduck
|
Bonjour,
J'ulise la fonction suivante :
function recup_repertoires(&$liste_repertoires, $dir='./', $recursif=true, $inc=0)
{
$rep = opendir($dir);
while ($file = readdir($rep))
{
if($file != '..' && $file !='.' && $file !='')
{
if (is_dir($file))
{
$liste_inc = '';
for($i=0; $i<$inc;
$i++)
$liste_inc .=
'---';
echo
$liste_inc.substr($dir.$file,2).'<br />'; //Cette commande est
juste un test pour avoir la liste des répertoires
array_push($liste_repertoires,$liste_inc.$file);
if ($recursif)
recup_repertoires($liste_repertoires, true, $dir.$file.'/', $inc+1);
}
}
}
closedir($rep);
clearstatcache();
}
Que j'appelle de la manière suivante :
$liste = array(); //Initialisation
recup_repertoires($liste);
Le problème c'est que mes sous-repertoire ne sont pas considérés comme des répertoires
Ex : " ./documents/" sera affiché dans la liste mais " ./documents/repertoire/" n'est pas affiché
Savez-vous pourquoi ?
Merci d'avance
|
|
dimanche 26 février 2006 à 19:08:48 |
Re : Sous-répertoire non reconnu comme étant des répertoires

WhiteDwarf
|
Premièrement je nepense pas que l'on puisse directement dans l'intitulé de la fontcion enter une variable et directement donner sa valeur, ca ne marche pas comme ca...
tu devrai plutôt l'écrire comme ca :
<?php function recup_repertoires($dir,$recursif) { $rep = opendir($dir); while ($file = readdir($rep)) { if($file != '..' && $file !='.' && $file !='') {
if (is_dir($file)) {
echo "<br>$recursif $file" ; $recursif .= "---"; recup_repertoires($dir ."/". $file,$recursif); $recursif = ""; }} }
closedir($rep); clearstatcache(); }
recup_repertoires(".","");
?>
---------------------- La lumière étant plus rapide que le son, un homme peu paraître brillant avant qu'il se mette a parler -----------------
|
|
lundi 27 février 2006 à 01:19:23 |
Re : Sous-répertoire non reconnu comme étant des répertoires

darkduck
|
Premièrement je nepense pas que l'on puisse directement dans l'intitulé
de la fontcion enter une variable et directement donner sa valeur, ca
ne marche pas comme ca...
Si ça marche comme ça, qd on met une
valeur dans l'intitulé de la fonction, ça permet de donner une valeur
par défaut à la variable passée en paramettre ce qui fait que si on ne
lui donne pas de valeur dans l'appel, elle prend la valeur "par défaut"
Ex :
Si j'appelle recup_repertoires(&$liste_repertoires)
$dir sera égal à './'
$récursif sera égal à true
$inc sera égal à 0
Alors que si j'appelle recup_repertoires(&$liste_repertoires, 'mon_repertoire/', false)
$dir sera égal à 'mon_repertoire/'
$récursif sera égal à false
$inc sera égal à 0
Espérant en avoir aidé plus d'un.....
...je n'ai cependant toujours pas la réponse à ma question (pourquoi is_dir($file) retourne false quand $file est un sous-repertoire alors que is_dir($file) retourne true, quand $file est un répertoire "simple" ?)
|
|
lundi 27 février 2006 à 11:24:27 |
Re : Sous-répertoire non reconnu comme étant des répertoires

malalam
|
Réponse acceptée !
Hello,
<?php function recup_repertoires(&$liste_repertoires, $dir='.', $recursif=true) { $rep = opendir($dir); while (false !== ($file = readdir($rep))) { if(!in_array ($file, array ('.', '..'))) { if (is_dir($dir.'/'.$file)) { array_push($liste_repertoires,$dir.'/'.$file);
if ($recursif === true) recup_repertoires($liste_repertoires, $dir.'/'.$file, true); } } }
closedir($rep); clearstatcache(); }
$liste = array(); //Initialisation recup_repertoires($liste); print_r ($liste); ?>
|
|
lundi 27 février 2006 à 11:45:46 |
Re : Sous-répertoire non reconnu comme étant des répertoires

darkduck
|
Cool, merci ça marche très bien !!!! Chapeau !
J'ai juste optimiser un peu la fonction :
function recup_repertoires(&$liste_repertoires, $dir='.', $recursif=true)
{
$rep = opendir($dir);
while ($file = readdir($rep))
{
if(!in_array ($file, array ('.', '..')))
{
if (is_dir($dir.'/'.$file))
{
array_push($liste_repertoires,$dir.'/'.$file);
if ($recursif)
recup_repertoires($liste_repertoires, $dir.'/'.$file, true);
}
}
}
closedir($rep);
clearstatcache();
}
$liste = array(); //Initialisation
recup_repertoires($liste);
print_r ($liste);
J'ai remplacé :
while (false !== ($file = readdir($rep)))
Par :
while ($file = readdir($rep))
Et :
if ($recursif === true)
Par :
if ($recursif)
Raison : Etant donné que les tests sont fait sur des variables
(ou méthodes) qui sont (ou retournent) des bouléens, ce n'est pas la
peine de vérifier == $true (ou == $false) et != $true (ou != $false)
Merci encore !
|
|
lundi 27 février 2006 à 12:08:11 |
Re : Sous-répertoire non reconnu comme étant des répertoires

malalam
|
Réponse acceptée !
C'est de l'optimisation, ça ? Lol, en l'occurence, ma version est plus rapide. Et j'explique :
"J'ai remplacé : while (false !== ($file = readdir($rep))) Par : while ($file = readdir($rep)) " => tu as grand tort ;-) Partce que si tu as un répertoire ou un fichier s'appellant '0', ta fonction, avec ta version, va s'aarrêter...'0' == false en php. Donc la condition de ton while ne sera plus remplie. Mais, en php, '0' !== false (on teste sur le type).
Idem pour la 2ème réflexion : "Et : if ($recursif === true) Par : if ($recursif)" "Raison : Etant donné que les tests sont fait sur des variables (ou méthodes) qui sont (ou retournent) des bouléens, ce n'est pas la peine de vérifier == $true (ou == $false) et != $true (ou != $false)"
Certes, sauf que lorsqu'on code, on essaye d'être strict : tu attends un booleen, true, ou false. Donc, tu testes que c'en est bien un. Et encore une fois, avec ton code, je peux passer 'bla' au lieu de true, ton code prendra ça comme un true. Ce qui est incorrect. D'ailleurs, si tu avais testé le type correctement, tu te serais rendu compte, dans ta 1ère version, que ta fonction ne rentrait pas dans l'appel rtécursif : tu avais inversé, dans l'appel récursif, le true et le chemin du sous-répertoire. Or, ta fonction a pris ce chemin comme équivalent à true puisque tu ne précisais pas ce que tu attendais. Or, si $recursif = 'dir/sous-dir', if ($recursif) renvoie true.
|
|
lundi 27 février 2006 à 13:16:05 |
Re : Sous-répertoire non reconnu comme étant des répertoires

darkduck
|
Ok.
Je n'aime pas trop le ton que tu prends mais merci pour les explications.
Je ne connaissais pas !== et === je croyais que tu avais saisi trop vite.
|
|
lundi 27 février 2006 à 13:36:38 |
Re : Sous-répertoire non reconnu comme étant des répertoires

WhiteDwarf
|
Waaa, on apprends des trucs tous les jours en tout cas très instructif, bon code bravo et merci, je vais faire quelques modifs sur mon "Web FTP" ... :p @++
---------------------- La lumière étant plus rapide que le son, un homme peu paraître brillant avant qu'il se mette a parler -----------------
|
|
lundi 27 février 2006 à 13:39:14 |
Re : Sous-répertoire non reconnu comme étant des répertoires

malalam
|
Désolé pour le ton : le but n'était pas d'être blessant, du tout. Mais si tu l'as ressenti ainsi, je suppose que je l'ai été. Désolé, donc.
|
|
lundi 27 février 2006 à 13:52:50 |
Re : Sous-répertoire non reconnu comme étant des répertoires

darkduck
|
Excuses acceptées...
...sans rancune
@+ et encore merci pour ton aide
|
|
Cette discussion est classée dans : repertoires, file, liste, dir, inc
Répondre à ce message
Sujets en rapport avec ce message
lister serveur + stocker BD [ par gabule ]
Salut tout le monde, je voudrai lister mon serveur ( rep + fichiers), rentrer ds le fichiers et les lister (bref tout quoi)et stocker cette arborescen
explorer un repertoire [ par thejoker31 ]
Bonjour je souhaite afficher un repertoire et ses sous (sous) repertoires à la facon d'un arbre et pouvoir afficher les elements contenus dans les sou
script php ne passe pas [ par jyrvrp35 ]
Bonjour,Novice en la matière je désire savoir pourquoi je n'arrive pas à mettre un script sur le serveur one & one pour mon site.script fait en php 5
Trier données PHP [ par cd59 ]
Bonjour, j'ai recherché sur le forum et sur le Net comment trier des données PHP (qui sont ensuite envoyées à Flash), et j'ai pas trouvé mon bonheur (
Problème récursivité pour arborescence de fichier [ par codbooster ]
Bonjour à tous, et merci de à vous de prendre du temps pour lire mon post ... Je post aujourd'hui car j'ai un problème concernant une arbores
Créer une arborescence de repertoire en xml [ par sachie ]
Salut à tous , bon je précise mon truc c'est pas le php, je viens de m'y mettre par nécessité, en effet j'ai besoin de créer une arborescence xml qui
lister les fichier/afficher pdf, d'un repertoire situer sur un autre serveur. [ par livinho38 ]
Bonjour,Je cherche d'une part à lister (code1) et d'autre par a afficher (code 2) des fichiers pdf.ces deux codes fonctionnent bien si je cible un rep
etat d'un checkbox [ par elmvaries ]
salut à tous, je veux savoir comment je peux récupérer le contenu d'un checkbox coché,car je fait une formulaire mais je n'ai rien de tous...mon code
probleme d'ouverture de pages [ par remir ]
bonjour, j'ai creer une page perso (ftp,album photos) sur le serveur d'alice. lorsque je l'utilise mes liens ne s'ouvre pas toujours systematiquement
Parcourir des repertoires (fonction recursive) [ par ov3rdoze ]
SalutJe souhaite réaliser une fonction qui parcours une repertoire ainsi que ses sous-repertoires afin de recuperer les photos qu'ils contiennentJ'ai
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Forum
SELECTSELECT par hab2oo
Cliquez pour lire la suite par hab2oo
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|