Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2006, 20h40   #1
Membre Expert
 
Avatar de stailer
 
Homme Jean-François CAMBOT
Développeur informatique
Inscription : mars 2003
Messages : 842
Détails du profil
Informations personnelles :
Nom : Homme Jean-François CAMBOT
Âge : 34
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2003
Messages : 842
Points : 1 110
Points : 1 110
Par défaut Générer un menu selon un répertoire

Bonjour,

j'ai fait par CSS/XHTML un menu qui s'écrit de cette façon :

Code html :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<ul>
<li>/agenda
 
	<ul>
	<li>./agenda/img
 
		<ul>
		<li>./agenda/img_upload
			<ul>
			<li>./agenda/img_upload/miniatures</li>
			<li>./agenda/img_upload/standard</li>
			</ul>
		</li>
	</ul>
 
</li>
</ul>

Je sais évidemment lister les répertoires (de façon récursive) et les récupérer mais je n'arrive pas à générer dynamquement mon code html ci dessus... C'est une question algorithmique en fait.

Merci d'avance pour votre aide,
__________________
.o0o__St@iLeR__oOo.

Chef de projet / Développeur

Silverlight / ASP.NET MVC - MCP ASP.NET 4
Zend Framework / Ajax (Jquery et ExtJS)
Adobe Flash Builder (Flex)

Ma librairie pour faire communiquer PHP et Silverlight "à la" WCF : http://code.google.com/p/phpservices-silverlight/
stailer est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2006, 21h34   #2
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Citation:
Envoyé par stailer
Je sais évidemment lister les répertoires (de façon récursive) et les récupérer
Je suis curieux de voir ça... Tu peux nous montrer comment tu fais ?
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2006, 23h51   #3
Membre Expert
 
Avatar de stailer
 
Homme Jean-François CAMBOT
Développeur informatique
Inscription : mars 2003
Messages : 842
Détails du profil
Informations personnelles :
Nom : Homme Jean-François CAMBOT
Âge : 34
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2003
Messages : 842
Points : 1 110
Points : 1 110
Ben euh par exemple comme ça, en php5 :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 private function ListDirectory($chemin)
    {
    	$dir = new directoryIterator($chemin);
    	foreach($dir as $value) 
    	{
			if( $value->isDir() && $value != '.' && $value != '..' )
			{
                               echo $value.'<br/>';
				$this->ListDirectory($chemin.'/'.$value);
			}
   		}
    }
Mais avec la construction de UL et LI telle que je l'ai fait, c'est assez complexe.. Il faut que je récupère le répertoire "après" celui en cours, etc... Donc voilà. Pourquoi tu as une idée ?
__________________
.o0o__St@iLeR__oOo.

Chef de projet / Développeur

Silverlight / ASP.NET MVC - MCP ASP.NET 4
Zend Framework / Ajax (Jquery et ExtJS)
Adobe Flash Builder (Flex)

Ma librairie pour faire communiquer PHP et Silverlight "à la" WCF : http://code.google.com/p/phpservices-silverlight/
stailer est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2006, 00h33   #4
Membre actif
 
Inscription : novembre 2006
Messages : 194
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 194
Points : 197
Points : 197
le plus dur était pourtant fait:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 private function ListDirectory($chemin)
    {
    	$dir = new directoryIterator($chemin);
        echo "<li>$chemin</li>";
        echo "<ul>";
    	foreach($dir as $value) 
    	{
			if( $value->isDir() && $value != '.' && $value != '..' )
			{
				$this->ListDirectory($chemin.'/'.$value);
			}
                        elseif ($value != '.' && $value != '..')
                           echo "<li>$value</li>";
   		}
         echo "</ul>";
    }
coca25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2006, 01h34   #5
Membre Expert
 
Avatar de stailer
 
Homme Jean-François CAMBOT
Développeur informatique
Inscription : mars 2003
Messages : 842
Détails du profil
Informations personnelles :
Nom : Homme Jean-François CAMBOT
Âge : 34
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2003
Messages : 842
Points : 1 110
Points : 1 110
Merci pour le coup de main mais malheureusement non, ça donne pas le bon résultat. La tous tes LI sont fermés directement, et c'est vrai que lorsqu'on regarde sur la page le résultat est bon.

Mais mon CSS/Javascript ne fonctionne pas comme ça, et affiche la liste sous forme d'un menu qui se déroule au passage de la souris.

Donc regarde le HTML au début du post : les LI ne sont fermés que lorsque il n'y a plus de sous répertoire. Ca oblige à connaitre le sous-répertoire suivant et je ne parviens pas à faire mon algorithme pour trouver la solution.
__________________
.o0o__St@iLeR__oOo.

Chef de projet / Développeur

Silverlight / ASP.NET MVC - MCP ASP.NET 4
Zend Framework / Ajax (Jquery et ExtJS)
Adobe Flash Builder (Flex)

Ma librairie pour faire communiquer PHP et Silverlight "à la" WCF : http://code.google.com/p/phpservices-silverlight/
stailer est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2006, 03h24   #6
Membre chevronné
 
Inscription : mai 2005
Messages : 657
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 657
Points : 722
Points : 722
Bah, il te suffit de fermer le LI a la fin de la boucle :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 private function ListDirectory($chemin)
    {
    	$dir = new directoryIterator($chemin);
        echo "<li>$chemin";
        echo "<ul>";
    	foreach($dir as $value) 
    	{
			if( $value->isDir() && $value != '.' && $value != '..' )
			{
				$this->ListDirectory($chemin.'/'.$value);
			}
                        elseif ($value != '.' && $value != '..')
                           echo "<li>$value</li>";
   		}
         echo "</ul></li>";
    }

En passant, ton HTML a un petit problème (tout les UL ne sont pas fermés), je suppose que tu voulais dire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<ul>
<li>/agenda
 
	<ul>
	<li>./agenda/img
 
		<ul>
		<li>./agenda/img_upload
			<ul>
			<li>./agenda/img_upload/miniatures</li>
			<li>./agenda/img_upload/standard</li>
			</ul>
		</li>
                </ul>
        </li>
	</ul>
 
</li>
</ul>

Si c'est pas ce que tu voulais dire, essaye de donner un peu plus de détails sur "les LI ne sont fermés que lorsque il n'y a plus de sous répertoire" (ou alors c'est moi qui ait du mal vu l'heure )
Taum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2006, 09h09   #7
Membre actif
 
Inscription : novembre 2006
Messages : 194
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 194
Points : 197
Points : 197
+1
je devais avoir sommeil
effectivement il suffit de les fermer a la fin
coca25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2006, 10h04   #8
Membre Expert
 
Avatar de stailer
 
Homme Jean-François CAMBOT
Développeur informatique
Inscription : mars 2003
Messages : 842
Détails du profil
Informations personnelles :
Nom : Homme Jean-François CAMBOT
Âge : 34
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2003
Messages : 842
Points : 1 110
Points : 1 110
Yes, merci les gars ça fonctionne
__________________
.o0o__St@iLeR__oOo.

Chef de projet / Développeur

Silverlight / ASP.NET MVC - MCP ASP.NET 4
Zend Framework / Ajax (Jquery et ExtJS)
Adobe Flash Builder (Flex)

Ma librairie pour faire communiquer PHP et Silverlight "à la" WCF : http://code.google.com/p/phpservices-silverlight/
stailer est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h19.


 
 
 
 
Partenaires

Hébergement Web