Résolu Système de News PHP: trier fichiers txt

Galaxxi

Expert
Bonjour à tous/toutes :D ,

Je suis en train de créer un système de news pour mon futur site, et je me pose quelques questions.

Chaque news est stockée dans un fichier texte, de cette manière:
/news/1.txt, 2.txt etc... (le plus grand nombre étant le fichier le plus récent). J'inclue donc ces fichiers dans ma page de news ainsi:
[cpp]
<?php

$fichier="./news/1.txt";

while(is_file($fichier))
{
if(!is_file($fichier))
{
exit();
}

else
{

for($i=1;is_file($fichier);$i++)
{
echo'<div id="news">';
include($fichier);
echo"</div>";
$fichier="./news/".$i.".txt";

}
}

}

?>[/cpp]

Cependant, je voudrais que les news soient classées dans l'ordre (c'est à dire, la plus récente en haut de la page, et la plus ancienne en bas de la page).

Vaut-il mieux que je les classe par ordre alphabétique décroissant (par exemple, de haut en bas: 7.txt; 6.txt, 5.txt etc...) ou par leur date de modification? Et comment faire?

En espérant que vous puissez m'aider, merci d'avance :)

PS: Je suis une noob en PHP, je débute, donc désolé si ma question semble évidente ou si je ne comprends pas du premier coup :(
 

zeb

Modérateur
Rholala, c'est pas en PHP que t'es un noob, c'est en programmation :o
Mais t'inquiète pô, on a tous commencé un jour ;)

Fais tout le contraire de ce que tu proposes !

Tiens, étudie ça de plus près :
Code:
for($i=1000;$i>0;$i++)
{
	$fichier="./news/".$i.".txt";
  if(is_file($fichier))
  {
  	// Faire ici un truc intéressant avec le fichier ! Par exemple, l'inclure ;)
  }	
}

(code non vérifié, c'est l'idée qu'il faut étudier.)
 

Galaxxi

Expert
Merci beaucoup pour ta réponse ;) Comme tu dis on a tous commencé un jour, et moi je commence :D

Sinon, le code que tu proposes, c'est ce que j'avais fait au début, mais la page mais au moins au 1min au charger, jusqu'à m'annoncer un
Fatal error: Maximum execution time of 60 seconds exceeded in ******/page_news.php on line 10
:/

Donc sinon, personne pour le tri des fichiers?
 

zeb

Modérateur
Meilleure réponse
Eh, c'est vrai que PHP peut être un peu lent.
Et si tu bouclais pour savoir combien tu as de fichiers, mais sans les afficher. A la fin, tu as le numéro du plus grand. Et zou tu redescends, mais en les affichant cette fois-ci :spamafote:

Code:
$nfile=0;
while(is_file("./news/".$nfile.".txt"))
	$nfile++;

for($i=1;i<$nfile;$i--)
{
	echo'<div id="news">';
  include("./news/".$i.".txt";);
  echo"</div>";
}

Alors, ça le fait péter, le compteur de 60 secondes ?
 

Galaxxi

Expert
Merci beaucoup zeb pour ta réponse :)

Ton code m'a aidé, mais n'a cependant par résolu mon problème, puisque au bout d'un (ou deux ) tours dans la boucle for, $i devenait négatif. ;)
J'ai donc modifié ton code, et ai finalement résolu mon problème ainsi:

[cpp]
<?php
$nfile=0;
while(is_file("./news/".$nfile.".txt" ))
{$nfile++;}

for($i=$nfile-1;$i>0;$i--)
{
echo'<div id="news">';
include("./news/".$i.".txt");
echo"</div>";
}
?>
[/cpp]

En tous cas merci encore de t'être intéressé et penché sur mon problème :) Bonne journée à tous!

Je passe en résolu ;)
 

zeb

Modérateur
:bounce:

J'ai bien fait d'être prudent :
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 829
Membres
1 586 367
Dernier membre
ramkin
Partager cette page
Haut