Page 1 sur 2
Afficher seulement les répertoires et sous répertoires d'une arborescence en PHP
Posté : 15 janv. 2016, 11:53
par lucieemtl
Bonjour à tous et à toutes,
Tout mon problème est cité dans l'objet de mon sujet et je ne trouve pas de solutions sur comment afficher seulement les répertoires et sous-répertoires d'une arborescence en PHP.
Le code suivant qui le miens, affiche bien le nom des fichiers, mais je n'aimerai afficher que le nom des répertoires et sous répertoires :
Code : Tout sélectionner
<style>
<?php
include 'css/style.css';
include 'css/jqueryFileTree.css';
?>
</style>
<div id="explorateur">
<header id="header">
<input type="checkbox" name="toutCocher"/>
<input type="button" name="valider" id="boutonValider" value="Mettre à jour"/>
</header>
<div id="container_id">
<?php
if ($dossier = opendir('.'))
{
echo "<ul>";
while(false !== ($fichier = readdir($dossier)))
{
if($fichier==".." || $fichier=="." || $fichier=="index.php")
{
continue;
}
else
{
if(is_dir("$dossier/$fichier"))
{
echo "<li>$fichier</li>";
listeDossier("$dossier/$fichier");
}
else
{
echo "<li><a href='edit.php?fichier=$dossier/$fichier'>$fichier</a></li>";
}
}
}
echo "</ul>";
}
else
{
echo "Erreur, le paramètre précisé dans la fonction n'est pas un dossier!";
}
closedir($dossier);
?>
</div>
</div>
Quelqu'un pourrait-il m'aider s'il vous plaît ?
Re: Afficher seulement les répertoires et sous répertoires d'une arborescence en PHP
Posté : 15 janv. 2016, 11:59
par Spols
is_dir est ton ami, il te dit que tu es en présence d'un dossier ou non
Code : Tout sélectionner
<style>
<?php
include 'css/style.css';
include 'css/jqueryFileTree.css';
?>
</style>
<div id="explorateur">
<header id="header">
<input type="checkbox" name="toutCocher"/>
<input type="button" name="valider" id="boutonValider" value="Mettre à jour"/>
</header>
<div id="container_id">
<?php
if ($dossier = opendir('.'))
{
echo "<ul>";
while(false !== ($fichier = readdir($dossier)))
{
if($fichier==".." || $fichier=="." || $fichier=="index.php")
{
continue;
}
else
{
if(is_dir("$dossier/$fichier"))
{
echo "<li>$fichier</li>";
listeDossier("$dossier/$fichier");
}
}
}
echo "</ul>";
}
else
{
echo "Erreur, le paramètre précisé dans la fonction n'est pas un dossier!";
}
closedir($dossier);
?>
</div>
</div>
Re: Afficher seulement les répertoires et sous répertoires d'une arborescence en PHP
Posté : 15 janv. 2016, 12:02
par lucieemtl
ça ne m'aide pas vraiment :/
J'ai lu les références sur id_dir, si je me penche vers PHP France c'est bien parce que je ne comprends pas mon résultat ^^'
Re: Afficher seulement les répertoires et sous répertoires d'une arborescence en PHP
Posté : 15 janv. 2016, 12:04
par Spols
Il te faut parcourir de façon réccurente ton arborescence, si c'est un fichier tu n'a aucun traitement à faire si c'est un dossier tu affiche les données du dossier que tu désire et tu explore ce dosier et ainsi de suite jusqu'à ce que tu ai exploré toute ton arborescence.
Montre nous le contenu de ta fonction listeDossier()
Re: Afficher seulement les répertoires et sous répertoires d'une arborescence en PHP
Posté : 15 janv. 2016, 12:05
par lucieemtl
J'ai remplacé listeDossier par scandir() car d'ailleurs ça n'avait rien à voir.
Re: Afficher seulement les répertoires et sous répertoires d'une arborescence en PHP
Posté : 15 janv. 2016, 12:08
par ynx
Salut,
Dans ton code :
if(is_dir("$dossier/$fichier")) // si il s'agit d'un dossier
{
// on affiche le dossier
echo "<li>$fichier</li>";
listeDossier("$dossier/$fichier");
}
else // sinon il s'agit d'un fichier
{
// on affiche le fichier
echo "<li><a href='edit.php?fichier=$dossier/$fichier'>$fichier</a></li>";
}
Il suffit donc que tu supprimes le bloc else de cette condition.
Une autre solution pour parcourir un dossier et ne récupérer que les sous-dossiers serait d'utiliser la fonction glob() avec en 2ème paramètre le flag GLOB_ONLYDIR :
http://php.net/manual/fr/function.glob.php
Bonne journée
Re: Afficher seulement les répertoires et sous répertoires d'une arborescence en PHP
Posté : 15 janv. 2016, 12:09
par Spols
Que veux tu ?
la liste complète des dossiers et sous dossiers ?
Jusqu'à quelle profondeur ? veux tu connaitre la hiérarchie des sous-dossiers ?
Qu'obtiens tu pour l'instant.
Sais tu faire une fonction reccursive ?
Pourquoi ne récupère tu pas le résultat de ta fonction listeDossier (ou scandir)
Re: Afficher seulement les répertoires et sous répertoires d'une arborescence en PHP
Posté : 15 janv. 2016, 12:14
par lucieemtl
Mon code après quelques rectifications :
Code : Tout sélectionner
<style>
<?php
include 'css/style.css';
include 'css/jqueryFileTree.css';
?>
</style>
<div id="explorateur">
<header id="header">
<input type="checkbox" name="toutCocher"/>
<input type="button" name="valider" id="boutonValider" value="Mettre à jour"/>
</header>
<div id="container_id">
<?php
if ($dossier = opendir('.'))
{
echo "<ul>";
while(false !== ($fichier = readdir($dossier)))
{
if($fichier==".." || $fichier=="." || $fichier=="index.php")
{
continue;
}
else
{
if(is_dir(".."))
{
echo "<li>$dossier</li>";
}
}
}
echo "</ul>";
}
else
{
echo "Erreur, le paramètre précisé dans la fonction n'est pas un dossier!";
}
closedir($dossier);
?>
</div>
</div>
Et le résultat :
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Resource id #122
Alors Spols je voudrais afficher une arborescence, seulement les dossiers et sous-dossiers (non les fichiers), la profondeur dépendrait du nombre de dossiers, et oui j'aimerai connaître la hiérarchie des sous-dossiers.
Re: Afficher seulement les répertoires et sous répertoires d'une arborescence en PHP
Posté : 15 janv. 2016, 12:17
par Spols
Alors il te faut une fonction récursive, c'est a dire qu'elle doit s'appeler elle-même pour analyser une profondeur de plus à chaque fois.
il y a aussi pas mal de script dispo sur la toile
Re: Afficher seulement les répertoires et sous répertoires d'une arborescence en PHP
Posté : 15 janv. 2016, 12:28
par lucieemtl
Il me semble avoir commencé à trouver encore plus simple :
Code : Tout sélectionner
<style>
<?php
include 'css/style.css';
include 'css/jqueryFileTree.css';
?>
</style>
<div id="explorateur">
<header id="header">
<input type="checkbox" name="toutCocher"/>
<input type="button" name="valider" id="boutonValider" value="Mettre à jour"/>
</header>
<div id="container_id">
<?php
//Nom du dossier à scanner
$dossier = '.';
//scandir — Liste les fichiers et dossiers dans un dossier
$tableau = scandir($dossier);
//On boucle
foreach($tableau as $valeur)
{
echo '<a href="'.$valeur.'">'.$valeur.'</a><br/>';
}
?>
</div>
</div>
Voici le résultat :
.
..
about.php
admin-ajax.php
admin-footer.php
admin-functions.php
admin-header.php
admin-post.php
admin.php
async-upload.php
comment.php
credits.php
css
custom-background.php
custom-header.php
customize.php
edit-comments.php
edit-form-advanced.php
edit-form-comment.php
edit-link-form.php
edit-tag-form.php
edit-tags.php
edit.php
export.php
freedoms.php
images
import.php
includes
index.php
install-helper.php
install.php
js
link-add.php
link-manager.php
link-parse-opml.php
link.php
load-scripts.php
load-styles.php
maint
media-new.php
media-upload.php
media.php
menu-header.php
menu.php
moderation.php
ms-admin.php
ms-delete-site.php
ms-edit.php
ms-options.php
ms-sites.php
ms-themes.php
ms-upgrade-network.php
ms-users.php
my-sites.php
nav-menus.php
network
network.php
options-discussion.php
options-general.php
options-head.php
options-media.php
options-permalink.php
options-reading.php
options-writing.php
options.php
plugin-editor.php
plugin-install.php
plugins.php
post-new.php
post.php
press-this.php
profile.php
revision.php
setup-config.php
theme-editor.php
theme-install.php
themes.php
tools.php
update-core.php
update.php
upgrade-functions.php
upgrade.php
upload.php
user
user-edit.php
user-new.php
users.php
widgets.php
C'est déjà mieux
Ma foi comment cacher tous les fichiers maintenant ^^ ?
Re: Afficher seulement les répertoires et sous répertoires d'une arborescence en PHP
Posté : 15 janv. 2016, 12:32
par Spols
Avec ce script, tu n'ira pas en profondeur.
mais si tu veux effacer les fichiers, il suffit d'utiliser la fonction is_dir qui te dit si c'est un dossier ou non.
foreach($tableau as $valeur)
{
if (is_dir($valeur)) echo '<a href="'.$valeur.'">'.$valeur.'</a><br/>';
}
Re: Afficher seulement les répertoires et sous répertoires d'une arborescence en PHP
Posté : 15 janv. 2016, 12:43
par KriSpiX
Re: Afficher seulement les répertoires et sous répertoires d'une arborescence en PHP
Posté : 15 janv. 2016, 12:50
par lucieemtl
En effet, ça n'affiche bien que les fichiers, par contre oui il reste le soucis de parcourir l'arborescence de fichiers en fichiers

Re: Afficher seulement les répertoires et sous répertoires d'une arborescence en PHP
Posté : 15 janv. 2016, 12:52
par Spols
Alors il te faut une fonction récursive, c'est a dire qu'elle doit s'appeler elle-même pour analyser une profondeur de plus à chaque fois.
Re: Afficher seulement les répertoires et sous répertoires d'une arborescence en PHP
Posté : 15 janv. 2016, 15:31
par lucieemtl
Spols, sur un click sur le lien, ça m'affiche bien les sous-dossiers, mais en localhost, c'est-à-dire que je suis redirigé vers une page qui n'est pas très esthétique mais on voit le contenu des dossiers. Peut-être qu'il s'agit juste de le faire apparaître dans mon code ?