Création de listes + script PHP

Fermé
Arkalord - 4 juil. 2011 à 19:01
 Arkalord - 5 juil. 2011 à 16:14
Bonjour tout le monde,

Donc voila, j'ai un petit (gros souci...) avec un script php récalcitrant. En fait, j'ai 1 dossier contenant plusieurs sous-dossiers. Mon script permet de lister les noms des sous dossiers et le nom des fichiers qu'ils contiennent. Le résultat donne un truc comme ça (jusque là, ça marche !) :

Dossier : client1

Reports/amou/client1/client1_10.05.2010.html
Reports/amou/client1/client1_15.05.2011.html
Reports/amou/client1/client1_17.01.2010.html
Reports/amou/client1/client1_21.02.2011.html
Reports/amou/client1/client1_25.01.2011.html
Reports/amou/client1/client1_30.07.2010.html

Dossier : client2

Reports/amou/client2/client2_10.05.2010.html
Reports/amou/client2/client2_15.05.2011.html
Reports/amou/client2/client2_17.01.2010.html
Reports/amou/client2/client2_21.02.2011.html
Reports/amou/client2/client2_25.01.2011.html
Reports/amou/client2/client2_30.07.2010.html


Il y a donc pour le moment 2 sous-dossiers nommés "client1" et "client2" et tous les fichiers qui lui sont attribués. C'est déjà un début. Sauf qu'il me faut maintenant mettre en place 2/3 choses, et c'est là que je sèche... :

- Une mise en page "+ jolie" grâce à des listes :
* la création d'une liste contenant le nom de chaque sous-dossier ("client1", "client2" ...)
* la création d'une liste contenant le nom de chaque fichier correspondant au dossier (donc quand je sélectionne "client1" dans la 1ère liste, tous les fichiers de ce client doivent apparaitre dans le 2nde)
* une fois les données "validées", aller vers la page correspondante (donc création d'un lien...)





Pour le moment j'ai ce script (dont le résultat est affiché + haut)(je ne sais pas pourquoi, mais d'un coup j'ai peur qu'il soit inutile et qu'il me faille tout refaire...) :

<?php

/* Connexion à la BD */ 
	 $db = mysql_connect('localhost', 'root', '') or die ("erreur connect");
	 mysql_select_db('Actis',$db) or die ("erreur db");
	 
$client = $_SESSION['login']; // Récupération du nom du client

$requete= mysql_query("SELECT dossier FROM personne WHERE nom = '$client'"); // 1 seul dossier par client
$result = mysql_fetch_array($requete);
$nomdossier = $result['dossier'];


/* Affichage du contenu des dossiers et sous-dossiers */
function parcours_dossier($chemin_dossier)
{
// On ouvre le dossier à lire
$dossier = opendir($chemin_dossier);
// On parcours l'ensemble des éléments présent dans le dossier
while($element = readdir($dossier))
{
// On ne s'occupe ni du répertoire courant ni du répertoire parent
if(($element != ".") && ($element != ".."))
{
// Si le fichier est un dossier
if(file_exists($chemin_dossier."/".$element) && is_dir($chemin_dossier."/".$element))
{echo "<br />Dossier : ".$element."<br /><br />";
// On parcours les sous dossiers
parcours_dossier($chemin_dossier."/".$element);
}
else
{
$concatenation= $chemin_dossier."/".$element ;
echo $concatenation; 

// c'est ce qui affiche "Reports/amou/client1/client1_10.05.2010.html" par exemple, "amou" étant le dossier, "client1" le sous-dossier et "client1_10.05.2010.html" le fichier

echo '<br>';
} 
}
}
closedir($dossier);
}
// On appelle la fonction de parcours des dossiers
parcours_dossier("Reports/$nomdossier");
?>


J'espère avoir été clair et précis dans mon problème (**croise les doigts**). Disons que je sais faire des listes "classiques", mais qu'en mettre en place sur ce cas là, c'est beaucoup plus complexe pour moi... Merci d'avance si quelqu'un peut m'aider :/
A voir également:

2 réponses

coeus Messages postés 3019 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 119
Modifié par coeus le 4/07/2011 à 20:27
Salut !

Ce que tu pourrais faire, au lieu de faire une variable $concatenation en string et d'en faire l'echo à chaque fois, serait de conserver le tout dans une variable de style array(), que tu pourrais utiliser plus tard.

Par exemple, au lieu de

$concatenation= $chemin_dossier."/".$element ;

Fais un

$liste_clients[] = $chemin_dossier."/".$element;

(tu peux arriver au même résultat avec la fonction PHP array_push())

(En n'oubliant pas d'initialiser : $liste_clients = array() en début de fonction)

Tu pourras ensuite la parcourir à volonté avec un foreach().
Tu peux créer un autre array qui contiendra tous les noms de tes dossiers (client1, client2, etc.)

Est-ce que ça t'aide ?
Je suis un paranoïaque à l'inverse : je crois que l'univers conspire à me rendre heureux.
0
Re,

L'idée est très bonne, je vais essayer de mettre ça en place demain matin. La création d'une liste défilante devrait en être largement simplifié avec le foreach(). Je te tiens au jus, mais merci beaucoup, ça m'ouvre pas mal de nouvelles possibilités.
0
coeus Messages postés 3019 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 119
4 juil. 2011 à 20:49
Parfait, tiens-moi au courant ! ;-)
0
Merci, ça m'a permis de bien avancer. J'ai pas mal de nouveaux problèmes, mais avec un peu de persévérance et 2/3 conseils de temps en temps, je pense que je m'en sortirai ^^
0
coeus Messages postés 3019 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 119
5 juil. 2011 à 15:03
N'hésite pas ! Soit sur le forum, soit en MP, y aura toujours quelqu'un ravi de t'aider ! ^^
0
Merci beaucoup, c'est sympa :)
0