Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1563 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Trouver le fichier dernièrement modifié commençant par...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Trouver le fichier dernièrement modifié commençant par...

n°2080071
Cver1
...alors avance.
Posté le 02-06-2011 à 18:22:00  profilanswer
 

Bonjour  :hello:

 

Contexte : J'ai réalisé quelques tutoriels découpés pour quelques uns d'entre eux en plusieurs pages. Le nom des pages est rigoureux. Il est du type :

tuto-001-blablabla


Qui s'interprète comme : blablabla est le nom du tuto. C'est le tuto numéro 001.
Mon but est d'avoir en première page de mon tuto la date de MAJ. Cette date n'est autre que la date la plus récente de modification sur l'ensemble des pages du tutoriel désigné.

 

Mon algorithme, c'est là que je coince un peu. Il le faudrait le plus léger possible pour le serveur, reste que je connais mal les fonctions existantes en PHP. Dans l'idée :

 

1. Relever la première partie de l'URL


$url = basename($_SERVER['REQUEST_URI']);
$url_numero = substr($url,0,7);

 

2. Lister l'ensemble des fichiers commençant par $url_numero, et identifier celui qui a été le plus récemment modifié.

 

3. Relever la date de dernière modification de ce fichier.


$date = date("d/m/y", filemtime($fichier_en_question));

 

Le problème est pour moi cette partie 2. Je ne vois pas quels outils de PHP utiliser (et de manière intelligente, c'est  à dire sans utiliser 2 ou 3 boucles imbriquées :whistle: ).

 

Je suis preneur de toute piste. Merci d'avance.  :jap:  

Message cité 1 fois
Message édité par Cver1 le 02-06-2011 à 18:24:30
mood
Publicité
Posté le 02-06-2011 à 18:22:00  profilanswer
 

n°2080084
billgatesa​nonym
Posté le 02-06-2011 à 20:10:22  profilanswer
 

Cver1 a écrit :

Je ne vois pas quels outils de PHP utiliser (et de manière intelligente, c'est  à dire sans utiliser 2 ou 3 boucles imbriquées :whistle: ).

Les boucles constituent une solution intelligente, car c'est de la programmation simple à faire et à relire.
Et, au contraire, chercher des fonctions peu connues, peu portables, avec l'obligation de lire la doc pour les paramètres que l'on ne connait pas par coeur, chercher des sortes de regex complexes, etc, sont des solutions stupides.
C'est le vieux billgatesanonym avec 25 ans d'expérience qui vous le dit.


Message édité par billgatesanonym le 02-06-2011 à 20:11:32
n°2080088
Cver1
...alors avance.
Posté le 02-06-2011 à 20:51:01  profilanswer
 

Tu as sans doute raison. Mais je me dis que la tache que je cherche à faire est sans doute très simple pour un habitué. Et peut être qu'une fonction bien connu des programmeur existe. C'était le sens de ma phrase. Mais il est très probable que je me trompe. :d

n°2080259
Cver1
...alors avance.
Posté le 03-06-2011 à 16:48:22  profilanswer
 

Up du jour.  [:chupachupz]

n°2080325
Cver1
...alors avance.
Posté le 04-06-2011 à 03:28:13  profilanswer
 

J'ai réussi...  [:tyl]

 

Dans l'esprit voila ce que ça donne :

 


<?php
    $files = array();                       // le tableau qui contiendra l'ensemble des noms de fichier commençant par tuto-001 (pour l'exemple)
    $date = array();                        // le tableau de l'ensemble des dates de modification des fichiers du dit tuto
    $files = glob("tuto-001*" );            // on remplit le tableau $files avec les noms de fichier commençant par tuto-001
    for($i=0; $i<count($files);$i++)        // boucle sur le nombre d'entrée du tableau
    {
        $date[$i] = filemtime($files[$i]);  // on attribue les valeurs à $date
    }
    echo date("d/m/y", max($date));         // on cherche la valeur maximum de date que l'on passe ensuite dans un format lisible.
?>

 

Y'a plus qu'à remplacer "tuto-001" par une variable, transformer ça en fonction et basta...

 

C'était trivial si on connaissait l'instruction glob.

 

Merci pour vos lectures du sujet. :jap:


Message édité par Cver1 le 04-06-2011 à 03:32:48
n°2080705
Paulp
~, sweet ~
Posté le 06-06-2011 à 16:02:34  profilanswer
 

Petite optimisation :
puisque tu es dans une boucle, tu peux directement récupérer le max($date) sans faire appel à la fonction max. Car là, ça fait une boucle pour créer le tableau, et une deuxième boucle pour en chercher le max

Code :
  1. //$files = array(); Pas nécessaire vu que l'on initialise $files juste en dessous
  2. //$date = array(); Plus nécessaire
  3. $files = glob("tuto-001*" );
  4. $last_date = -1; // initialisation de last_date
  5. // foreach plus lisible que for
  6. foreach($files as $file){
  7.  $file_date = filemtime($file);
  8.  if($file_date > $last_date){
  9.    $last_date = $file_date;
  10.  }
  11. }


Message édité par Paulp le 06-06-2011 à 16:02:48
n°2081209
Cver1
...alors avance.
Posté le 08-06-2011 à 09:10:17  profilanswer
 

Merci. :)
 
Je vais donc faire ainsi, c'est mieux en effet. Merci pour ce conseil. :jap:


Message édité par Cver1 le 08-06-2011 à 09:26:15

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Trouver le fichier dernièrement modifié commençant par...

 

Sujets relatifs
[PHP] Infobulles personnalisées / DIV mobiles ?Problème de variable PHP
Problème d'échelle impressions PHP[svnkit] commiter un fichier
Comment creer un fichier de BDD ?Aide HTML/PHP/ SQL ( Urgent pour BAC:! )
Requête d'export de données Mysql vers fichier CSVlecteur fichier text en php
Plus de sujets relatifs à : [PHP] Trouver le fichier dernièrement modifié commençant par...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR