Scan de dossiers, sous dossier, et récupération du chemin [php] - PHP - Programmation
Marsh Posté le 25-10-2008 à 19:56:54
le plus propre serait de faire une fonction recursive,quelque chose du genre
Code :
|
edit : nettoyage du code
Marsh Posté le 25-10-2008 à 21:15:24
Je crois que je comprend ton code, et c'est effectivement exactement ce que je recherche Un énorme merci
Je vais tester cela demain
Marsh Posté le 26-10-2008 à 08:55:05
de rien
c'est tellement plus agréable de répondreà une question bien posée par qqun de poli
Marsh Posté le 26-10-2008 à 18:12:52
Salut
C'est grandiose! C'est formidable! Ca marche :-) J'ai réussi a faire exactement ce que je voulais, et maintenant, il ne me faut qu'un clic de souris pour mettre a jour tout mon site!!
Un énorme merci
Toutefois, tu avais oublié un dollars à la ligne 11 devant chemin, ainsi qu'a la ligne 13 devant cheminEntree (je précise pour celui qui serait intéressé aussi par ce bout de code)
Marsh Posté le 26-10-2008 à 18:51:20
Salut
J'ai en fait remarqué un petit bug. Pas trop dérangeant en soit, mais quand même. Quand je fais un listing des fichiers, voici ce que j'obtiens:
../../universite//2BAC/analyse/cours/Cours_du_07 octobre_2008/seul/repet071008.pdf
../../universite//2BAC/analyse/cours/Cours_du_16 septembre_2008/seul/cours160908.pdf
../../universite//2BAC/analyse/cours/Cours_du_23 septembre_2008/seul/repet230908.pdf
../../universite//2BAC/analyse/cours/Cours_du_30 septembre_2008/seul/repet300908.pdf
../../universite//2BAC/analyse/cours/Répétitions/seul/repetitions.zip
../../universite//2BAC/analyse/cours/Résolution_des_répétitions/associe/resolution15.pdf../../universite//2BAC/analyse/cours/Résolution_des_répétitions/associe/resolution610.pdf
../../universite//2BAC/analyse/cours/Résolution_des_répétitions/seul/resolutions.zip
../../universite//2BAC/analyse/cours/Transparents_officiels/associe/transparents0.pdf../../universite//2BAC/analyse/cours/Transparents_officiels/associe/transparents1.pdf../../universite//2BAC/analyse/cours/Transparents_officiels/associe/transparents2.pdf../../universite//2BAC/analyse/cours/Transparents_officiels/associe/transparents3.pdf
../../universite//2BAC/analyse/cours/Transparents_officiels/seul/transparents.zip
../../universite//2BAC/analyse/divers/Errata_du_livre/seul/erreurs.pdf
../../universite//2BAC/analyse/divers/Suppléments_au_cours/seul/supplements.zip
../../universite//2BAC/analyse/examens/Examens_des_années_précédentes/seul/examens.zip
../../universite//2BAC/analyse/résumés/Chapitre 0/seul/resume0.pdf
../../universite//2BAC/analyse/résumés/Chapitre 1/seul/resume1.pdf
../../universite//2BAC/analyse/résumés/Formulaire/seul/formulaire.pdf
Et quand je vais dans la base de donnée, j'ai ces informations la:
id id_parent nom type type_element section annee dossier fichier date jour mois description
148 n i / . u/n/i 18:41:05 26 10/08
Comme tu le constante, rien a voir avec ce que je devrais avoir. CE n'est pas trop dérangeant, car ils ne sont pas affichés, mais au fur et à mesure, ma base de donnée va être un véritable foutoir...
Une idée?
Marsh Posté le 26-10-2008 à 19:05:25
il va falloir détailler ce qui ne te vas pas dans les résultats , paerceque là, j'ai pas assez d'éléments
tu peux , par exemple , filtrer certains fichiers sur l'extension
Marsh Posté le 26-10-2008 à 20:51:59
le problème en fait, c'est ce résultat ci
148 n i / . u/n/i 18:41:05 26 10/08
Bnn, 148, c'est l'id, ok. La date et l'heure, ok aussi. Par contre
n i / . u/n/i
est censé correspondre au données tirées du chemin d'accès du fichier, et ça c'est pas bon du tout.
Il y a par ailleurs quelque chose de bizarre. Je fais un test pour compter si un élément est déjà dans la base de donnée. Si oui, il n'écrit rien. Donc, si le bug apparait une fois dans la base de donnée, il ne devrait plus apparaitre, puisque la condition n'est plus remplie. Or ce n'est pas le cas!
Ma condition marche pour tout sauf pour ce bug: quand j'exécute deux fois de suite le script, les données ne s'inscrivent pas deux fois...
Je vais mettre le script au complet
Code :
|
Marsh Posté le 26-10-2008 à 21:14:20
erreur 1: pour avoir le nom du fichier, pas besoin de jouer avec les explode, tu l'as deja dans $entree
erreur 2 : pour avoir l'extension d'un fichier , on cherche un point , en partant de la fin ( imagine un nom.de.fichier.qui.contient.plusieurs.points.pdf ), avec
Code : |
erreur 3 : un fichier n'a pas forcement d'extension, dans ce cas , vérifier si $pos ==0 , et deceider d'une action ( on ignore ? on continue ? )
erreur 4 : on ne se connecte qu'une fois à la base de données, au début du script, pas à chaque fois
erreur 5 : qu'est ce qu'il se passe si un fichier contient un apostrophe . Tu dois toujours faire un nettoyage avant d'utiliser une variable dnas une requete
Code : |
sinon, utilise des requetes préparées
erreur 6 : on utilise pas des noms de variables avec des numeros, ca ne veut rien dire . Si c'est une requete, tu l'appelle $requete, si c'est un resultaSet, tu l'appelle ***** , tu peux le réutiliser par la suite
erreur 7 : mysql_fetch_row($affichage_5); retourne un tableau, pas un entier ou un comptage ( pareil pour affiche6 )
erreur 8 : tu fais la requete pour obtenir l'id , meme si le chemin n'existe pas , c'est mal . Au passage , le mysql_fetch_row retourne un tableau , pourquoi tu l'appelle id ?
tu peux , pour te simplifier la vie faire list($id) = mysql_fetch_riw($resultSet) ; et paf, id contient ton id
erreur 9 : je pense que tu fais un gros caca avec cheminEntree[5] 6 et 7 , je suis pas sur que ça marche bien
Marsh Posté le 26-10-2008 à 21:16:39
Tant que j'y suis, une autre question. Il est vraiment temps, avant de sortir la version finale du site, que je soit sur qu'il soit bien sécurisé.
Que dois-je faire?
J'ai lu qu'il fallait mettre sur les requetes sql un truc du genre (j'ai oublié la commande exacte) mysql_real_string_escape. Or, cela faisait planté mes scripts sur le serveur (pas en local), j'en ai déduit que c'était implémenté.
Merci d'avance
EDIT: j'avais pas vu que tu avais répondu ^^ Je vais tester dès que j'aurai le temps tes idées (peut-être pas avant la semaine prochaine hélas). Toutefois, je doute que ça solve le soucis parce que c'est moi qui donne les noms de fichiers, et ils n'ont pas de soucis. Mais je vais intégrer tes idées, je ne savais pas que ça existait, et ça me semble très pratique
Pour l'erreur 7, je suis d'accord, mais je ne prend qu'un seul élément du tableau, et ça marche? C'est pas bon?
Pour l'erreur 9, effectivement ça à l'air le souc comme ça, mais en réalité, ça marche au poil
Erreur8: A ça explique pourquoi parfois il ne m'affichait rien... C'est surement de la que vient le soucis donc. Par contre, je ne comprend pas très bien comment adapter le script pour qu'il ne cherche les id que dans le cas de fichiers, et pas de dossiers.
Je suis désolé de toutes mes questions, mais j'ai encore bcp de chemin a faire pour apprendre le php, et étant à l'univ, j'ai vmt pas bcp de temps à consacrer dessus :s
Marsh Posté le 25-10-2008 à 19:18:32
Bonjour a tous.
Je suis en train de créer un site, dont une des fonction consiste à offrir aux utilisateurs des résumés pour différents cours. J'ai actuellement un script qui marche bien, mais qui est lent à mettre a jour: je dois rentrer moi même les infos sur un fichier.
Ces infos sont:
- Année
- Section
- Dossier sur le serveur
- Nom du fichier sur le serveur (sans l'extension)
- Extension du fichier
- Date de mise à jour
- Description
- Id (pour trier dans la base de donnée)
- Id du parent dont il dépend (car un fichier dépend toujours d'un autre)
- Type (indique l'importance du fichier)
2 mots sur la fonction type, qui peut prendre comme valeurs:
- Section: ce n'est pas un fichier a télécharger, mais bien un titre (genre cours du 20 octobre 2008)
- Seul : C'est le fichier de base (genre les notes du cours)
- Associé: un fichier qui dépend d'un fichier de base (genre les transparents pour ce cours la...)
Voici ce que ça donne (j'ai utilisé une image car il faut s'enregistrer pour accéder à ces infos):
Enfin bref, ça marche très bien, mais c'est lent a mettre a jour.
Ce que j'aurais besoin, c'est d'une fonction qui scanne TOUT les dossiers et fichiers (y compris les sous dossier), et qui renvoi dans une variable le chemin complet de chaque fichier. Vu que chaque dossier est séparé par un slash, je n'aurai cas récupérer les dossiers (en ayant trier mes fichiers de façon judicieuse), les stocker dans des variables appropriées, et remplir ma base de donnée. Je mettrai donc a jour mon site d'un coup, et tout ce que j'ai a faire, c'est rentrer une description. Je pourrais également voir quels fichiers ont été modifiés depuis la dernière fois pour faire une liste des mises à jour....
Je précise que je débute en php, et ne m'y connais pas des masses. Je ne m'attend pas a ce que vous me fassier le script tout cru, mais je vous serai reconnaissant de ne pas juste balancer le nom de 2-3 fonction, mais bien d'expliquer un peu.
Je vous remercie énormément d'avance.