Problème avec boucle

aviateur39 Messages postés 7 Statut Membre -  
aviateur39 Messages postés 7 Statut Membre -
Bonjour,

J'ai ce script php qui permet de lire toutes les données dans un fichier de format txt... je souhaiterai aller lire les 10 dernières entrées du fichier, donc lire la dernière et remonter... je pense qu'il me faut insérer une formule du type for et while, j'ai fait plusieurs essais sans toutefois y arriver j'ai des erreurs du type Parse error: syntax error, unexpected '}', expecting T_WHILE in ...

voici le script qui lit mes données sans la boucle car cela ne marche pas...

*********************************************

<HTML>
<body>
<?php
$ouvre=fopen("../data/derniersmembres.txt","r"); // ouverture du fichier
while (!feof ($ouvre)) // tant que pas en fin de fichier
{

$lecture = fgets($ouvre, 4096); // stockage dans $lecture
$donnee=explode("*",$lecture); // parsing des données basé sur "*")

$combien=count($donnee)-1; // nbre d'éléments séparés par "*"
for ($i=0;$i<=$combien;$i++)
{
echo $donnee[$i],"<br>"; // affichage des données
}

}
fclose($ouvre); // fermeture
?>
</body>
</HTML>
***********************************************

Donc ce petit script de lecture fonctionne bien tel quel... Si quelqu'un sur le forum peut m'aider pour insérer une boucle qui irait lire les 5 ou 10 dernières lignes (qui représentent les 5 ou 10 derniers membres inscrit sur le portail de l'association, je suis à l'écoute ...

D'avance merci pour l'aide éventuelle qui pourrait venir de l'un de vous qui est féru en la matière...

Bonne fin de journée à tous...

2 réponses

Utilisateur anonyme
 
Salut,

Je ne sais pas trop comment est rédigé ton fichier derniersmembres.txt mais bon, j'ai une solution pour toi qui peut surement s'adapter à tes besoins.

<?php

$fichier = file('../data/derniersmembres.txt');

$nbr_lignes_fichier = count($fichier);

$i = '0';

foreach ( $fichier as $ligne ) {
	if ( $i >= $nbr_lignes_fichier - 10 ) {
		echo $ligne.'<br />';
	}
	$i++;
}

?>


Si tu as des questions, n'hésite pas !

1
aviateur39 Messages postés 7 Statut Membre
 
Merci beaucoup pour la réponse, ça fonctionne très bien...
Merci à tous sur le forum pour l'aide apportée
Bonne journée à tous!
0
Utilisateur anonyme
 
Tu peux aussi faire ça en "inversant" la boucle for() :
<?php
$ouvre=fopen("txt.txt","r"); 
while(!feof ($ouvre)) 
{

$lecture = fgets($ouvre, 4096); 
$donnee=explode("*",$lecture); 

$combien=count($donnee)-1;
for($i=$combien;$i>$combien-10;$i--)  //on lit de là fin et on remonte //jusqu'à la 10ème donnée en partant de la fin
{
echo $donnee[$i],"<br>"; 
}

}
fclose($ouvre); 
?> 
0