ARBORESCENCE EXPLORATEUR DE FICHIERS AVEC PHP ET XML

sddsi Messages postés 2 Date d'inscription mercredi 3 août 2005 Statut Membre Derniè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.

https://codes-sources.commentcamarche.net/source/38029-arborescence-explorateur-de-fichiers-avec-php-et-xml

Bonjour, je veux savoir si c'est possible de changer les dimensions de l'application fash, je voudrait réduire la hauter !

Merci d'avance ;)
Utilisateur anonyme
21 mai 2010 à 11:07
Salut les gens!

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>
endorenna Messages postés 7 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 29 octobre 2009
29 oct. 2009 à 13:24
j'ai trouvé! c'était bien les lignes ç rajouter en commentaire! super script ;)
endorenna Messages postés 7 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 29 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és 3 Date d'inscription jeudi 4 août 2005 Statut Membre Dernière intervention 28 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és 1 Date d'inscription jeudi 10 juillet 2008 Statut Membre Dernière intervention 28 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és 9 Date d'inscription mardi 21 décembre 2004 Statut Membre Derniè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és 3 Date d'inscription jeudi 4 août 2005 Statut Membre Dernière intervention 28 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és 9 Date d'inscription mardi 21 décembre 2004 Statut Membre Derniè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 . "*"); )

J'ai mis un exemple ici : http://tetsuoo.free.fr/flashkod_ARBORESCENCE/
Tetsuoo2005 Messages postés 9 Date d'inscription mardi 21 décembre 2004 Statut Membre Derniè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és 1 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 27 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és 40 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 31 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és 1 Date d'inscription mardi 6 mars 2007 Statut Membre Dernière intervention 19 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és 1 Date d'inscription lundi 2 juillet 2007 Statut Membre Derniè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 :


<?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.
stadja Messages postés 16 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 1 juillet 2007
1 juil. 2007 à 14:18
Excellent cet explorateur,
excellent vraiment.
sansamis Messages postés 2 Date d'inscription dimanche 6 mai 2007 Statut Membre Dernière intervention 11 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és 6 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 26 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és 6 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 26 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és 2 Date d'inscription dimanche 6 mai 2007 Statut Membre Dernière intervention 11 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és 180 Date d'inscription vendredi 4 juillet 2003 Statut Membre Dernière intervention 8 août 2011 1
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és 2 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 28 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));

$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>
57ben Messages postés 3 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 7 juillet 2006
7 juil. 2006 à 19:34
comment tu fait pour editer le fla car moi je ne cherche pas à ouvrir le fichier mais simplement afficher le lien dans un champ text php
cs_kiricoucou Messages postés 1 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 30 juin 2006
30 juin 2006 à 13:35
bonjour,

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
sddsi Messages postés 2 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 9 juin 2006
9 juin 2006 à 14:11
J'oubliais... l'avantage de ce Tree, c'est qu'on ouvre les fichiers en cliquant dessus ! (c'était le but du jeu)
Rejoignez-nous