2009-12-29 4 views
0

Je veux créer une page de nouvelles qui comprend un extrait du dernier 3 filea créé dans la structure de répertoire suivant:PHP Comment inclure les fichiers en fonction de la date de création?

Disons donc que je les fichiers suivants:

/news.php /2010/le-dernier-article.php /2009/some-long-article-name.php /2009/another-long-article-name.php /2009/too-old-article-name.php /2009/other-old-article-name.php

Je veux seulement inclure les 3 premiers fichiers dans la sortie news.php.

Répondre

1

De php.net:

foreach (glob("../downloads/*") as $path) { //configure path 
    $docs[filectime($path)] = $path; 
} ksort($docs); // sort by key (timestamp) 

foreach ($docs as $timestamp => $path) { 
    print date("d. M. Y: ", $timestamp); 
    print '<a href="'. $path .'">'. basename($path) .'</a><br />'; 
} 

En outre, filemtime peut donner de meilleurs résultats si vous êtes sur windoze.

3

Vous devrez:

  • liste tous les fichiers PHP existants en parcourant la structure de votre répertoire
  • accès leur temps de création avec filectime
  • choisir les trois plus récentes dans cette liste

Cela peut devenir lent si vous avez beaucoup de fichiers à rechercher. Une base de données serait plus rapide.

3

Si vous pouvez préfixer vos noms de fichiers avec la date et l'heure (AAAA-MM-JJ HH: mm: ss), vous pouvez simplement les trier par ordre alphabétique et prendre les trois derniers. Sinon, Victor a une excellente réponse.

1

Vous pouvez obtenir ouvrir un répertoire de fichiers en utilisant opendir http://php.net/manual/en/function.opendir.php et readdir http://www.php.net/manual/en/function.readdir.php

Vous pouvez alors utiliser la fonction php filemtime http://php.net/manual/en/function.filemtime.php qui retourne la dernière date de modification du nom de fichier passé en elle. Donc, à peu près ce que vous allez faire est de regarder tous les fichiers dans le répertoire et de les ordonner par le retour de filemtime (il retourne un horodatage UNIX). Une fois que vous les avez commandés (en utilisant n'importe quel genre d'algoritme que vous aimez) il suffit de retourner les 3 premiers résultats.

Questions connexes