ARBORESCENCE EXPLORATEUR DE FICHIERS AVEC PHP ET XML
sddsi
Messages postés2Date d'inscriptionmercredi 3 août 2005StatutMembreDernière intervention 9 juin 2006
-
9 juin 2006 à 14:11
zaord -
3 sept. 2015 à 23:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
endorenna
Messages postés7Date d'inscriptionvendredi 19 septembre 2008StatutMembreDernière intervention29 octobre 2009 29 oct. 2009 à 13:24
j'ai trouvé! c'était bien les lignes ç rajouter en commentaire! super script ;)
endorenna
Messages postés7Date d'inscriptionvendredi 19 septembre 2008StatutMembreDernière intervention29 octobre 2009 29 oct. 2009 à 12:52
Super le script! je cherchais ça depuis plusieurs jours!
Juste un ptit soucis pour le scan de mes dossiers, le fichier XML généré ne reprend pas les fichiers contenu dedans et si j'analyse mon fichier XML, il ne contient que la balise <node label=''></node>. Serait-ce dû à un problème de longueur de mes fichiers? il s'agit de fichiers pdf et word.
Je précise que j'ai bien mis en commentaire les lignes nécessaires dans le fichier "tree.php" comme indiqué.
sddsilyon
Messages postés3Date d'inscriptionjeudi 4 août 2005StatutMembreDernière intervention28 mai 2009 28 mai 2009 à 07:59
Bonjour, le problème que tu vas rencontrer c'est que tu vas effectuer un renommage des fichiers en scanant avec le PHP (utf8_encode ou addslashes...) et le XML que tu vas générer ne contiendra que des liens morts (les noms générés ne sont pas les vrais noms des fichiers).
Et pour info, le script flash ne lit que des valeurs UTF8 ou valeurs communes avec un codage ISO-8859-1(flash oblige).
Je travaille dessus et je reviens d'ici peu.
bbillyben
Messages postés1Date d'inscriptionjeudi 10 juillet 2008StatutMembreDernière intervention28 mai 2009 28 mai 2009 à 02:14
Bonjour, j'adore ta source, et c'est pile poil ce que je cherchais donc merci!!
Je suis plutot tourné AS et je ne connais de php que ce qui me sert à gerer mes bas MySQL... donc autant dire peu
Le problème que je rencontre, c'est que dès qu'il y a un caractère type ' & ou autre ça stoppe le recensencement de l'arborescence (et oui je recense des MP3...)... j'ai bien essayé de mettre quelque part un
addslashes
mais je n'ai pas trouvé ou...
Y a t'il une solution?? Merci
merci
Tetsuoo2005
Messages postés9Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention 7 avril 2009 6 nov. 2008 à 19:50
Merci je vais essayer (pour l'instant ça ne passe pas, je vais insister lol)
sddsilyon
Messages postés3Date d'inscriptionjeudi 4 août 2005StatutMembreDernière intervention28 mai 2009 6 nov. 2008 à 16:44
normalement avec un if(is_array($aDirContent)) ça devrait fonctionner. Faire un glob() sur un répertoire vide... ça peut poser problème.
Tetsuoo2005
Messages postés9Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention 7 avril 2009 6 nov. 2008 à 16:33
Erf, nouveau bug : Apparemment chez Free ça ne marche pas :(
Peut-être à cause de glob()... J'obtiens l'erreur:
"Warning: sort() expects parameter 1 to be array, boolean given" pour la ligne 18 ( $aDirContent = glob($sDirectory . "*"); )
Tetsuoo2005
Messages postés9Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention 7 avril 2009 6 nov. 2008 à 16:25
Excellent, c'est exactement ce que je cherchais !
Par contre je n'utilise pas l'afficheur Flash, seule la génération du XML à la volée m'intéresse - pour l'instant ;)
Du coup j'ai un souci : le contenu du XML s'affiche dans le code HTML de la page, c'est pas très transparent... Y aurait-il une autre méthode que ob_start()/ob_get_contents() pour récupérer les valeurs de la fonction ScanDirXML() ?
idweb
Messages postés1Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention27 novembre 2007 27 nov. 2007 à 11:14
Génial ce code pour l'affichage des repertoires et du contenu, mais comme toujours Mr Catbury il en veux toujours un peu plus ! lol.
Je souhaiterais trier les fichiers dans les repertoires par rapport à leur date de modification ou de création.
Merci
koda29
Messages postés40Date d'inscriptionvendredi 24 avril 2009StatutMembreDernière intervention31 août 2013 10 oct. 2007 à 09:51
Bonjour tout le monde,
c'est vraiment vraiment vraiment sur cool ce code, c'est merveilleux,
J'ai quand même une petite question, comment on fait quand un des répertoire et vide ????
ça me marque ces erreurs là :
Warning: sort() expects parameter 1 to be array, boolean given in c:\users\rhyn\documents\easyphp1-8\www\toto\tree.php on line 19
Warning: Invalid argument supplied for foreach() in c:\users\rhyn\documents\easyphp1-8\www\toto\tree.php on line 20
Merci bien pour votre aide !!!
@+
Elceb
Messages postés1Date d'inscriptionmardi 6 mars 2007StatutMembreDernière intervention19 juillet 2007 19 juil. 2007 à 21:31
bonjour je ne suis pas trés doué en flash et en php: comment on fait pour mettre a jour l'arboresence? ou plustôt comment fait-on pour lancer le script php qui met à jour d'arboressence?
Merci d'avence
enshorty
Messages postés1Date d'inscriptionlundi 2 juillet 2007StatutMembreDernière intervention 2 juillet 2007 2 juil. 2007 à 23:55
Bonjour,
je viens de tester cet( explorateur mais la zone censée contenir l'arborescence affiche ceci :
stadja
Messages postés16Date d'inscriptionmercredi 23 mars 2005StatutMembreDernière intervention 1 juillet 2007 1 juil. 2007 à 14:18
Excellent cet explorateur,
excellent vraiment.
sansamis
Messages postés2Date d'inscriptiondimanche 6 mai 2007StatutMembreDernière intervention11 juin 2007 11 juin 2007 à 14:19
As-tu bien mis les fichier en .php5 au lieu de .php ?
Sinon personne pour mon problème à moi ? :p
corresp
Messages postés6Date d'inscriptionvendredi 8 juin 2007StatutMembreDernière intervention26 décembre 2008 11 juin 2007 à 08:58
Heu un deuxième petit commentaire :
J'ai ajouté des sous-répertoires aux répertoires donnés dans l'exemple que l'on télécharge.
Dans le répertoire 1, j'ai mis 1.1 et dans le répertoire 2, j'ai mis deux sous-répertoires 2.1 et 2.2
Un message d'erreur apparait alors :
Warning: sort() expects parameter 1 to be array, boolean given in c:\program files\easyphp1-8\www\tree.php on line 19
Warning: Invalid argument supplied for foreach() in c:\program files\easyphp1-8\www\tree.php on line 20
Pour info, pour tree.php, j'utilise le script modifié de WINTEN (voir commentaire plus haut)
D'avance merci.
corresp
Messages postés6Date d'inscriptionvendredi 8 juin 2007StatutMembreDernière intervention26 décembre 2008 11 juin 2007 à 08:46
Hello
Bien sympa ce petit script :-)
Je voulais savoir un 'tit truc, j'ai remarqué que si je l'utilise sous Internet Explorer, les fichiers sur lesquels je clique s'ouvre sans problème.
Mais si je l'utilise sous Mozilla Firefox, le fichier s'ouvre dans un onglet mais son contenu ne s'affiche pas. Quelqu'un aurait une petite idée ? Je pense que c'est mon Mozilla qui est mal configuré mais je ne vois pas trop d'où cela vient.
Merci
sansamis
Messages postés2Date d'inscriptiondimanche 6 mai 2007StatutMembreDernière intervention11 juin 2007 5 juin 2007 à 09:21
Problème :
Warning: sort() expects parameter 1 to be array, boolean given in /mnt/122/free.fr/7/8/cjprod/tests/arbre/03/tree.php on line 19
Warning: Invalid argument supplied for foreach() in /mnt/122/free.fr/7/8/cjprod/tests/arbre/03/tree.php on line 20
Et les noms des fichiers sont tous "[type Function], [type Function], [type Function], [type Function], ...".
Quelqu'un a une idée?
cs_milo2009
Messages postés180Date d'inscriptionvendredi 4 juillet 2003StatutMembreDernière intervention 8 août 20111 31 mai 2007 à 23:28
Salut,
Je n'arrive pas a ouvrir le fla, tu l'a fait sous quelle version de flash
winten
Messages postés2Date d'inscriptiondimanche 9 mai 2004StatutMembreDernière intervention28 août 2006 28 août 2006 à 12:23
Bonjour ,
Je tiens à féliciter ton code il est terrible et m?aide beaucoup dans le développement de mon intranet.
En ce qui concerne l'erreur que Kirikoukou a, j'ai trouvé une solution. C'est un problème d'initialisation de variable. En fait il faut remplacer le code qui se trouve dans le fichier tree.php par ceci :
<?php
//#####################################################################################################
// il y a tres peu de choses a modifier :
// $sBaseDir est le répertoire racine à scanner
// il est possbile de scanner tout le contenu des répertoires
// ou de ne selectionner que certains types de fichiers
//
// chmod 777 -R sur le répertoire contenant le fichier XML - mieux pour ecrire dans le fichier XML ;-)
//
//#####################################################################################################
function ScanDirXML($sBaseDir, $sDirectory, $sOpenDirectory)
{
$i=0; // initialisation de la variable I //
if (is_dir($sDirectory) && is_readable($sDirectory))
{
$aDirContent = glob($sDirectory . "*");
sort($aDirContent);
foreach($aDirContent as $sDirItem)
{
if(is_dir($sDirItem))
{
$sDirItemTitle = array_pop(explode("/", $sDirItem));
if(eregi("(pdf)|(xls)|(txt)",$sExt)) // commenter ou effacer cette ligne pour scanner tout le contenu
{ // commenter ou effacer cette ligne pour scanner tout le contenu
$i+=1;
$sDirItemTitle = basename($sDirItem, "." . $sExt);
echo "<node label='$sDirItemTitle' data='$i' src='$sDirItem'/>";
$sDir_test = ''; // on met un ensemble vide solus un peu facile mais bon ...
} // commenter ou effacer cette ligne pour scanner tout le contenu
3 sept. 2015 à 23:23
Merci d'avance ;)
21 mai 2010 à 11:07
Voilà juste une version modifiée de tree.php qui vous permettra d'afficher tree.xml sous une forme visible ;)
<?php
function ScanDirXML($sBaseDir, $sDirectory, $sOpenDirectory, $tab)
{
$i=0;
if (is_dir($sDirectory) && is_readable($sDirectory))
{
$aDirContent = glob($sDirectory . "*");
sort($aDirContent);
foreach($aDirContent as $sDirItem)
{
$j = 0;
while ($j < $tab)
{
echo "\t";
$j++;
}
if(is_dir($sDirItem))
{
$sDirItemTitle = array_pop(explode("/", $sDirItem));
$sDirItemUrl = urlencode(substr(dirname($sDirItem), strlen($sBaseDir)));
echo "<directory label='$sDirItemTitle'>\n";
$sDir_test = 'ok';
$tab +=1;
ScanDirXML($sBaseDir, $sDirItem . "/", $sOpenDirectory, $tab);
$tab -=1;
}
else
{
$sDirItemPath = dirname($sDirItem);
$sExt = array_pop(explode(".", $sDirItem));
$sDirItemTitle = basename($sDirItem, "." . $sExt);
echo "<file label='$sDirItemTitle' data='$i' src='$sDirItem'/>\n";
$sDir_test = ''; // on met un ensemble vide solus un peu facile mais bon ...
}
if($sDir_test == 'ok')
{
$j = 0;
while ($j < $tab)
{
echo "\t";
$j++;
}
echo "</directory>\n";
unset($sDir_test);
}
}
}
}
$sBaseDir = "./repertoire";
$i = 0;
ob_start();
echo "<?xml version='1.0' encoding='UTF-8' ?>\n";
$tab = 0;
ScanDirXML($sBaseDir, $sBaseDir, $sBaseDir . "/", $tab);
$content = ob_get_contents();
$code_html = $content;
$fichier_html = "tree.xml";
$genere_html=fopen($fichier_html,"w+");
fputs($genere_html,$code_html);
fclose($genere_html);
?>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="450" height="350" id="tree" align="middle">
</object>
29 oct. 2009 à 13:24
29 oct. 2009 à 12:52
Juste un ptit soucis pour le scan de mes dossiers, le fichier XML généré ne reprend pas les fichiers contenu dedans et si j'analyse mon fichier XML, il ne contient que la balise <node label=''></node>. Serait-ce dû à un problème de longueur de mes fichiers? il s'agit de fichiers pdf et word.
Je précise que j'ai bien mis en commentaire les lignes nécessaires dans le fichier "tree.php" comme indiqué.
28 mai 2009 à 07:59
Et pour info, le script flash ne lit que des valeurs UTF8 ou valeurs communes avec un codage ISO-8859-1(flash oblige).
Je travaille dessus et je reviens d'ici peu.
28 mai 2009 à 02:14
Je suis plutot tourné AS et je ne connais de php que ce qui me sert à gerer mes bas MySQL... donc autant dire peu
Le problème que je rencontre, c'est que dès qu'il y a un caractère type ' & ou autre ça stoppe le recensencement de l'arborescence (et oui je recense des MP3...)... j'ai bien essayé de mettre quelque part un
addslashes
mais je n'ai pas trouvé ou...
Y a t'il une solution?? Merci
merci
6 nov. 2008 à 19:50
6 nov. 2008 à 16:44
6 nov. 2008 à 16:33
Peut-être à cause de glob()... J'obtiens l'erreur:
"Warning: sort() expects parameter 1 to be array, boolean given" pour la ligne 18 ( $aDirContent = glob($sDirectory . "*"); )
J'ai mis un exemple ici : http://tetsuoo.free.fr/flashkod_ARBORESCENCE/
6 nov. 2008 à 16:25
Par contre je n'utilise pas l'afficheur Flash, seule la génération du XML à la volée m'intéresse - pour l'instant ;)
Du coup j'ai un souci : le contenu du XML s'affiche dans le code HTML de la page, c'est pas très transparent... Y aurait-il une autre méthode que ob_start()/ob_get_contents() pour récupérer les valeurs de la fonction ScanDirXML() ?
27 nov. 2007 à 11:14
Je souhaiterais trier les fichiers dans les repertoires par rapport à leur date de modification ou de création.
Merci
10 oct. 2007 à 09:51
c'est vraiment vraiment vraiment sur cool ce code, c'est merveilleux,
J'ai quand même une petite question, comment on fait quand un des répertoire et vide ????
ça me marque ces erreurs là :
Warning: sort() expects parameter 1 to be array, boolean given in c:\users\rhyn\documents\easyphp1-8\www\toto\tree.php on line 19
Warning: Invalid argument supplied for foreach() in c:\users\rhyn\documents\easyphp1-8\www\toto\tree.php on line 20
Merci bien pour votre aide !!!
@+
19 juil. 2007 à 21:31
Merci d'avence
2 juil. 2007 à 23:55
je viens de tester cet( explorateur mais la zone censée contenir l'arborescence affiche ceci :
<?xml version="1.0" encoding="UTF-8" ?>
- <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="450" height="350" id="tree" align="middle">
</object>
Pouvez-vous me renseigner ?
Merci d'avance.
1 juil. 2007 à 14:18
excellent vraiment.
11 juin 2007 à 14:19
Sinon personne pour mon problème à moi ? :p
11 juin 2007 à 08:58
J'ai ajouté des sous-répertoires aux répertoires donnés dans l'exemple que l'on télécharge.
Dans le répertoire 1, j'ai mis 1.1 et dans le répertoire 2, j'ai mis deux sous-répertoires 2.1 et 2.2
Un message d'erreur apparait alors :
Warning: sort() expects parameter 1 to be array, boolean given in c:\program files\easyphp1-8\www\tree.php on line 19
Warning: Invalid argument supplied for foreach() in c:\program files\easyphp1-8\www\tree.php on line 20
Pour info, pour tree.php, j'utilise le script modifié de WINTEN (voir commentaire plus haut)
D'avance merci.
11 juin 2007 à 08:46
Bien sympa ce petit script :-)
Je voulais savoir un 'tit truc, j'ai remarqué que si je l'utilise sous Internet Explorer, les fichiers sur lesquels je clique s'ouvre sans problème.
Mais si je l'utilise sous Mozilla Firefox, le fichier s'ouvre dans un onglet mais son contenu ne s'affiche pas. Quelqu'un aurait une petite idée ? Je pense que c'est mon Mozilla qui est mal configuré mais je ne vois pas trop d'où cela vient.
Merci
5 juin 2007 à 09:21
Warning: sort() expects parameter 1 to be array, boolean given in /mnt/122/free.fr/7/8/cjprod/tests/arbre/03/tree.php on line 19
Warning: Invalid argument supplied for foreach() in /mnt/122/free.fr/7/8/cjprod/tests/arbre/03/tree.php on line 20
Et les noms des fichiers sont tous "[type Function], [type Function], [type Function], [type Function], ...".
Quelqu'un a une idée?
31 mai 2007 à 23:28
Je n'arrive pas a ouvrir le fla, tu l'a fait sous quelle version de flash
28 août 2006 à 12:23
Je tiens à féliciter ton code il est terrible et m?aide beaucoup dans le développement de mon intranet.
En ce qui concerne l'erreur que Kirikoukou a, j'ai trouvé une solution. C'est un problème d'initialisation de variable. En fait il faut remplacer le code qui se trouve dans le fichier tree.php par ceci :
<?php
//#####################################################################################################
// il y a tres peu de choses a modifier :
// $sBaseDir est le répertoire racine à scanner
// il est possbile de scanner tout le contenu des répertoires
// ou de ne selectionner que certains types de fichiers
//
// chmod 777 -R sur le répertoire contenant le fichier XML - mieux pour ecrire dans le fichier XML ;-)
//
//#####################################################################################################
function ScanDirXML($sBaseDir, $sDirectory, $sOpenDirectory)
{
$i=0; // initialisation de la variable I //
if (is_dir($sDirectory) && is_readable($sDirectory))
{
$aDirContent = glob($sDirectory . "*");
sort($aDirContent);
foreach($aDirContent as $sDirItem)
{
if(is_dir($sDirItem))
{
$sDirItemTitle = array_pop(explode("/", $sDirItem));
$sDirItemUrl = urlencode(substr(dirname($sDirItem), strlen($sBaseDir)));
echo "<node label='$sDirItemTitle'>";
$sDir_test = 'ok';
ScanDirXML($sBaseDir, $sDirItem . "/", $sOpenDirectory);
} else {
$sDirItemPath = dirname($sDirItem);
$sExt = array_pop(explode(".", $sDirItem));
if(eregi("(pdf)|(xls)|(txt)",$sExt)) // commenter ou effacer cette ligne pour scanner tout le contenu
{ // commenter ou effacer cette ligne pour scanner tout le contenu
$i+=1;
$sDirItemTitle = basename($sDirItem, "." . $sExt);
echo "<node label='$sDirItemTitle' data='$i' src='$sDirItem'/>";
$sDir_test = ''; // on met un ensemble vide solus un peu facile mais bon ...
} // commenter ou effacer cette ligne pour scanner tout le contenu
}
if($sDir_test == 'ok')
{
echo "</node>";
unset($sDir_test);
}
}
}
}
$sBaseDir = "./repertoire/";
$i = 0;
ob_start();
echo "<?xml version='1.0' encoding='UTF-8' ?>";
ScanDirXML($sBaseDir, $sBaseDir, $sBaseDir . "/");
$content = ob_get_contents();
$code_html = $content;
$fichier_html = "tree.xml";
$genere_html=fopen($fichier_html,"w+");
fputs($genere_html,$code_html);
fclose($genere_html);
?>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="450" height="350" id="tree" align="middle">
</object>
7 juil. 2006 à 19:34
30 juin 2006 à 13:35
Le swf fonctionne très bien.
J'ai juste un Pb pour tree.php. Les erreurs sont :
Notice: Undefined variable: i in tree.php on line 38
Notice: Undefined variable: sDir_test in tree.php on line 45
Merci d'avance.
Jef
9 juin 2006 à 14:11