pierrelouis94
Messages postés1Date d'inscriptionlundi 15 février 2010StatutMembreDernière intervention26 septembre 2010 26 sept. 2010 à 16:49
Une petite erreur à la ligne 22 :
Il faut mettre $tableauDeFichier= ParcourirDossier($LienRepertoir.$nomFichier."/",$extentionRecherchee,$tableauDeFichier); sinon les sous dossiers manqueront de / dans leur lien.
t1amat
Messages postés5Date d'inscriptionmardi 15 septembre 2009StatutMembreDernière intervention 3 mai 2011 28 avril 2010 à 16:03
Donc j'ai trouver la solution a mon problème.
Chez moi l'appel récursif ne fonctionnais pas j'ai donc fait une mofification de la fonctione (au niveau du rappel de la fonctio) j'ai aussi bouger l'ordre des conditions.
array_push($tableauDeFichier,$LienRepertoir.$nomFichier);
}
else
{
//si vous enlevez se commentaire vous aurez le nom des dossiers en plus
//array_push($tableauDeFichier,$LienRepertoir."/".$nomFichier);
if(!strstr($LienRepertoir.$nomFichier[0],'.'))/** inclue pas les dossier cacher*/
{$tableauDeFichier= ParcourirDossier($LienRepertoir.$nomFichier.'/',$extentionRecherchee,$tableauDeFichier);}
}
t1amat
Messages postés5Date d'inscriptionmardi 15 septembre 2009StatutMembreDernière intervention 3 mai 2011 27 avril 2010 à 16:02
Bonjour,
pour ma part le script scan le répértoire source mais pas ces sous répetoire.
tpkennes
Messages postés4Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention19 septembre 2009 19 sept. 2009 à 10:38
Merci pour ta réponse et désolé de n'avoir pas mis à jour mon commentaire.
J'avais trouvé la solution, en fait ce code marche parfaitement. Le problème venait du fait que sur PC1, je lance xampplite (donc avec mon user) alors que sur PC2, le service Apache était lancé en tant que service Windows et que par défaut, l'utilisateur qui lance ce service est "Système Local".
Il suffisait donc de changer cet utilisateur car "Système Local" n'a pas accès à des ressources réseaux.
Encore merci.
cs_micmonay
Messages postés6Date d'inscriptionvendredi 17 décembre 2004StatutMembreDernière intervention25 mai 2007 19 sept. 2009 à 10:33
Hello,
Si c'est le même site essaye de partir toujours depuis la racine de ton site.
A+
tpkennes
Messages postés4Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention19 septembre 2009 10 août 2009 à 17:31
Bonjour,
J'ai besoin d'aide :). Mon problème est bizarre et je comprends vraiment pas ce qui se passe.
cette fonction fonctionne parfaitement lorsque je la teste sur mon PC (PC1), voici le nom du dossier que j'utilise :
$Path = '\\\\servername\\c$\\dossier\\sousdossier;
Je viens de le mettre sur un autre ordi (PC2) et ca ne marche plus au moment du test if(is_dir()), il n'arrive pas à vérifier s'il s'agit d'un dossier ou pas.
Le truc étrange c'est que si je le lance via un fichier .bat contenant :
et bien cela fonctionne parfaitement,
en résumé, le script fonctionne lorsque je lance en .bat sur PC2, également via PHP sur PC1 mais ne fonctionne pas en PHP sur PC2.
Savez-vous d'où peut venir ce probleme ?
merci
mtrzen
Messages postés18Date d'inscriptionlundi 16 mai 2005StatutMembreDernière intervention13 mars 2007 13 mars 2007 à 19:20
Tres pratique, cela me sauve la vie, je venais de faire une fonction listant les dossiers et sous dossiers comme la tienne, mais l avantage de la tienne est la possibilité de faire un tri avant affichage
rsort($tableFichier);
avant
foreach($tableFichier as $lienFichier)
tgk
Messages postés1Date d'inscriptionmercredi 30 novembre 2005StatutMembreDernière intervention10 mars 2007 10 mars 2007 à 18:46
Bonjour,
Je cherche un script comme celui-ci mais j'ai pas vraiment compris comment on l'utilise. un petit exemple serait la bienvenu.
Merci
trpp111
Messages postés5Date d'inscriptionmercredi 29 juin 2005StatutMembreDernière intervention22 janvier 2007 22 janv. 2007 à 17:14
Je ne met pas de note pour cette qource, ne l'ayant pas testée, et pour cause : je n'arrive pas à accéder à un répertoire distant.
Mon problème est de lister et traiter les fichiers contenus dans un répertoire situé sur une machine du réseau.
Quelle est la syntaxe du chemin pour y accéder?
Si quequ'un a une idée, merci de vos réponses!!
(je testerai cette source ensuite )
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 20 janv. 2007 à 15:32
d'ailleur concernant la recherche des extensions mieux vaut passer un tableau directement en argument plutot que passer par une chaine que tu traite ensuite... tu met en premier dans ta boucle...
if($nomFichier '.' || $nomFichier '..')
continue;
et ensuite...
if(is_dir($LienRepertoir."/".$nomFichier))
{
// traitement d'un répertoire
}
elseif(empty($extentionRecherchee) ||
in_array(substr($nomFichier,strrpos('.',$nomFichier)),$extentionRecherchee))
{
// traitement d'un fichier
}
26 sept. 2010 à 16:49
Il faut mettre $tableauDeFichier= ParcourirDossier($LienRepertoir.$nomFichier."/",$extentionRecherchee,$tableauDeFichier); sinon les sous dossiers manqueront de / dans leur lien.
28 avril 2010 à 16:03
Chez moi l'appel récursif ne fonctionnais pas j'ai donc fait une mofification de la fonctione (au niveau du rappel de la fonctio) j'ai aussi bouger l'ordre des conditions.
function ParcourirDossier($LienRepertoir,$extentionRecherchee="",$tableauDeFichier=false)
{
if(!$tableauDeFichier)
{
$tableauDeFichier=array();
}
if(is_dir($LienRepertoir))
{
$ClassDir= dir($LienRepertoir);
while(($nomFichier=$ClassDir->read())!=false)
{
if($nomFichier=='.'||$nomFichier=='..')
{
continue;
}
elseif(strstr($nomFichier,$extentionRecherchee))
{
array_push($tableauDeFichier,$LienRepertoir.$nomFichier);
}
else
{
//si vous enlevez se commentaire vous aurez le nom des dossiers en plus
//array_push($tableauDeFichier,$LienRepertoir."/".$nomFichier);
if(!strstr($LienRepertoir.$nomFichier[0],'.'))/** inclue pas les dossier cacher*/
{$tableauDeFichier= ParcourirDossier($LienRepertoir.$nomFichier.'/',$extentionRecherchee,$tableauDeFichier);}
}
}
return $tableauDeFichier;
}
else
{
return false;
}
}
27 avril 2010 à 16:02
pour ma part le script scan le répértoire source mais pas ces sous répetoire.
19 sept. 2009 à 10:38
J'avais trouvé la solution, en fait ce code marche parfaitement. Le problème venait du fait que sur PC1, je lance xampplite (donc avec mon user) alors que sur PC2, le service Apache était lancé en tant que service Windows et que par défaut, l'utilisateur qui lance ce service est "Système Local".
Il suffisait donc de changer cet utilisateur car "Système Local" n'a pas accès à des ressources réseaux.
Encore merci.
19 sept. 2009 à 10:33
Si c'est le même site essaye de partir toujours depuis la racine de ton site.
A+
10 août 2009 à 17:31
J'ai besoin d'aide :). Mon problème est bizarre et je comprends vraiment pas ce qui se passe.
cette fonction fonctionne parfaitement lorsque je la teste sur mon PC (PC1), voici le nom du dossier que j'utilise :
$Path = '\\\\servername\\c$\\dossier\\sousdossier;
Je viens de le mettre sur un autre ordi (PC2) et ca ne marche plus au moment du test if(is_dir()), il n'arrive pas à vérifier s'il s'agit d'un dossier ou pas.
Le truc étrange c'est que si je le lance via un fichier .bat contenant :
C:\xampplite\php\php.exe -c C:\xampplite\apache\bin\php.ini C:\web\SCRIPTMOTEUR\main.php
et bien cela fonctionne parfaitement,
en résumé, le script fonctionne lorsque je lance en .bat sur PC2, également via PHP sur PC1 mais ne fonctionne pas en PHP sur PC2.
Savez-vous d'où peut venir ce probleme ?
merci
13 mars 2007 à 19:20
rsort($tableFichier);
avant
foreach($tableFichier as $lienFichier)
10 mars 2007 à 18:46
Je cherche un script comme celui-ci mais j'ai pas vraiment compris comment on l'utilise. un petit exemple serait la bienvenu.
Merci
22 janv. 2007 à 17:14
Mon problème est de lister et traiter les fichiers contenus dans un répertoire situé sur une machine du réseau.
Quelle est la syntaxe du chemin pour y accéder?
Si quequ'un a une idée, merci de vos réponses!!
(je testerai cette source ensuite )
20 janv. 2007 à 15:32
$extention=eregi_replace("\.","\\.",$extentionRecherchee);
utilise str_replace() plutot que eregi_replace() pour un remplacement sans expression rationnelle... tu gagnera en perf... de meme pour...
eregi(".*$",$nomFichier)
mieux vaut faire...
in_array(substr($nomFichier,strrpos('.',$nomFichier)),$extensions)
d'ailleur concernant la recherche des extensions mieux vaut passer un tableau directement en argument plutot que passer par une chaine que tu traite ensuite... tu met en premier dans ta boucle...
if($nomFichier '.' || $nomFichier '..')
continue;
et ensuite...
if(is_dir($LienRepertoir."/".$nomFichier))
{
// traitement d'un répertoire
}
elseif(empty($extentionRecherchee) ||
in_array(substr($nomFichier,strrpos('.',$nomFichier)),$extentionRecherchee))
{
// traitement d'un fichier
}
Utilise plutot la constante...
DIRECTORY_SEPARATOR
plutot que
"/"
tu gagnera en portabilité
$grandeurTableau = count($tableauDeFichier);
If($tableauDeFichier[0]=='')
{
$tableauDeFichier[0]=$LienRepertoir."/".$nomFichier;
}
else
{
$tableauDeFichier[$grandeurTableau]=$LienRepertoir."/".$nomFichier;
}
le count est inutile...
if(empty($tableauDeFichier[0]))
$tableauDeFichier[0]= $LienRepertoir.DIRECTORY_SEPARATOR.$nomFichier;
else
$tableauDeFichier[]= $LienRepertoir.DIRECTORY_SEPARATOR.$nomFichier;
un truc con mais ta boucle s'arrêtera si php tombe sur un fichier appelé 0 donc fais plutot
while(false !($nomFichier $ClassDir->read()))
@ tchaOo°