Afficher des fichiers textes et archivage

Eléphanteau du PHP | 48 Messages

22 janv. 2010, 12:02

Bonjour,

Je sollicite votre aide pour un problème surement très simple.

Nous recevons quotidiennement des fichiers txt nommés de la façon suivante :
mailexploit_AAAAMMJJ_HHMM.txt
AAAA : année
MM : mois
JJ : jour
HH : heure
MM : minute

Premièrement,
Je souhaiterais dans une page php afficher le fichier du jour (je n'ai pas besoin de l'heure), par exemple si aujourd'hui j'ai le fichier mailexploit_2010122_0803.txt, je souhaiterais l'afficher. Je ne veux pas tenir compte des heures et minutes, puisque de toute facon, les fichiers sont uniques par jour.

J'avais un début de code écrit de la facon suivante:
<?php
$dir = "//c23-dc200/ROOT/Canam/Transferts/mailexploit/r/";
$nom_fichier = "mailexploit_".date("Ymd")."*.txt";
if (is_dir($dir)) {
     if ($dh = opendir($dir)) {
          while (($file = readdir($dh)) !== false) {
               $pos = strpos($file,$nom_fichier);
	      if ($pos !== false) {
	           echo "<a href='file://c23-dc200/ROOT/Canam/Transferts/mailexploit/r/$file' target='_blank'>Messagerie du ".date("d/m/Y")."</a>";
	      }
               }
          closedir($dh);
     }
} ?>
En pensant que le * remplacerait la suite de mon fichier mais cela ne marche pas.

Deuxièmement, les fichiers existent depuis 2005. Je souhaiterais créer des archives pour chaque année. En gros, quelqu'un souhaite voir les fichiers de l'année 2005, il clique sur un lien "Archives 2005", etc.


Si quelqu'un a une petite idée pour m'aider, je le remercie d'avance !

Cordialement,

ViPHP
AB
ViPHP | 5818 Messages

22 janv. 2010, 13:13

Mon idée se serait d'utiliser une table de bdd pour gérer tout ça.

S'il est encore temps de le faire ce serait bien d'étudier la question. Ce serait beaucoup plus souple, beaucoup plus rapide et avec potentiel évolutif incomparable comparé à cette méthode.

Mais si tu souhaites continuer avec ta méthode, il faut s'intéresser à la fonction glob() de php

Eléphanteau du PHP | 48 Messages

22 janv. 2010, 13:54

Je pense aussi que l'utilisation de base de données serait plus aisée, sauf que... cela voudrait surement dire répertorier les fichiers txt dans une base et là il y a quand meme plus de 1000 fichiers txt...

Donc je vais rester sur du php simple. Je ne cherche pas à faire un truc compliqué, c'est juste histoire de simplifier l'utilisation des fichiers txt et de leur archivage sur une page php.

Je pars me renseigner sur cette fonction glob et voir ce que je peux faire.

ViPHP
AB
ViPHP | 5818 Messages

22 janv. 2010, 14:03

Oui je comprend bien que ça ferait pas mal de travail, c'est pour cela que je disais 's'il est encore temps de le faire...' :wink:

Cela dit avec un seul fichier par jour, ta solution est encore gérable.

Avec glob() tu devrais pouvoir t'en sortir assez facilement.


EDIT : Quoiqu'en y réfléchissant deux secondes de plus, ce pourrait être intéressant d'enregistrer en bdd non pas seulement les noms des fichiers, mais également leur contenu. En plus de ne plus avoir potentiellement des milliers de fichiers dans ton répertoire cela permettrait éventuellement de pouvoir faire des recherches sur des mots contenus dans les articles.
Et finalement la manip peut être automatisée : pour chaque fichier listé dans le répertoire tu fait une insertion dans la base. Enfin bon, une idée en passant que tu pourras toujours réaliser plus tard si le besoin s'en fait sentir.
Modifié en dernier par AB le 22 janv. 2010, 14:18, modifié 1 fois.

Eléphanteau du PHP | 48 Messages

22 janv. 2010, 14:16

Bon alors je dois pas etre doué...

J'écris ce code pour qu'il ne m'affiche que les fichiers de 2005 (mailexploit_2005*.txt)
 <td><?php 
$mailexploit2005 = glob("//c23-dc200/ROOT/Canam/Transferts/mailexploit/r/mailexploit_2005*.txt");
foreach ($mailexploit2005 as $filename) {
echo "$filename";?>
<br>
<?php 
 }?>
Mais des que je le lance, il ne m'affiche rien ? :shock:

ViPHP
AB
ViPHP | 5818 Messages

22 janv. 2010, 15:36

J'ai édité mon précédent message.
Pour le reste cela devrait fonctionner. Ce doit être le chemin que tu indiques par rapport au script qui n'est pas bon.

Eléphanteau du PHP | 48 Messages

22 janv. 2010, 15:51

Sauf que sur ce serveur, nous n'avons pas de droit de modifs/écriture, etc.

Juste de la lecture...

Du coup je reste sur le php sans utilisation de bases... Mais bon, cela ne fonctionne toujours pas.

ViPHP
AB
ViPHP | 5818 Messages

22 janv. 2010, 16:55

Vérifie sur un autre dossier pour voir, ou fait des essais en local.

Sinon peut-être que la fonction glob ne fonctionne pas sur ton serveur. Je me souviens avoir lu des topic qui disaient que cette fonction ne fonctionnait pas chez free par exemple...

Eléphanteau du PHP | 48 Messages

26 janv. 2010, 09:41

Bonjour,

Bon finalement ca marche. Effectivement, n'ayant pas les droits d'affichage/lecture sur le dossier d'origine, je ne pouvais afficher les fichiers txt. Du coup, j'ai créé un fichier .bat qui me copie en local les fichiers et la ca marche impec.

Merci de ton aide en tout cas.