Se connecter / S'enregistrer
Votre question

Création d'une liste + script PHP

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
4 Juillet 2011 18:54:02

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 !) :

Citation :

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...) :

  1. <?php
  2.  
  3. /* Connexion à la BD */
  4. $db = mysql_connect('localhost', 'root', '') or die ("erreur connect");
  5. mysql_select_db('Actis',$db) or die ("erreur db");
  6.  
  7. $client = $_SESSION['login']; // Récupération du nom du client
  8.  
  9. $requete= mysql_query("SELECT dossier FROM personne WHERE nom = '$client'"); // 1 seul dossier par client
  10. $result = mysql_fetch_array($requete);
  11. $nomdossier = $result['dossier'];
  12.  
  13.  
  14. /* Affichage du contenu des dossiers et sous-dossiers */
  15. function parcours_dossier($chemin_dossier)
  16. {
  17. // On ouvre le dossier à lire
  18. $dossier = opendir($chemin_dossier);
  19. // On parcours l'ensemble des éléments présent dans le dossier
  20. while($element = readdir($dossier))
  21. {
  22. // On ne s'occupe ni du répertoire courant ni du répertoire parent
  23. if(($element != ".") && ($element != ".."))
  24. {
  25. // Si le fichier est un dossier
  26. if(file_exists($chemin_dossier."/".$element) && is_dir($chemin_dossier."/".$element))
  27. {echo "<br />Dossier : ".$element."<br /><br />";
  28. // On parcours les sous dossiers
  29. parcours_dossier($chemin_dossier."/".$element);
  30. }
  31. else
  32. {
  33. $concatenation= $chemin_dossier."/".$element ;
  34. echo $concatenation;
  35.  
  36. // 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
  37.  
  38. echo '<br>';
  39. }
  40. }
  41. }
  42. closedir($dossier);
  43. }
  44. // On appelle la fonction de parcours des dossiers
  45. parcours_dossier("Reports/$nomdossier");
  46. ?>


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 :/ 

Autres pages sur : creation liste script php

a c 145 L Programmation
4 Juillet 2011 21:38:38

Je vais poser une question bête, mais qu'appelles-tu "liste" ? Un select (voir la balise htmml du même nom) ou juste une mise en forme (dans ce cas, aller jeter un oeil vers ul/ol et li, ou dl/dt/dd) ?
m
0
l
5 Juillet 2011 02:24:08

Il s'agit bien d'un "select" (liste déroulante). Le problème ne vient pas de la balise, mais plutôt dans la récupération des données. Il existe un autre nom mais je ne me souviens plus lequel. On m'a donné une solution qui n'est pas bête du tout, qui est même ultra logique en théorie (beh oui, pour créer une liste, autant faire une liste...) du type :

Citation :
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().



A partir de là, je pense que la création des "select" en sera grandement simplifiée. A voir demain matin si j'arrive à le mettre en place.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS