Bonjour,

Voici mon problème : j'ai un script PHP et un fichier texte. Le script est censé écrire dans le fichier des nombres représentant le nombre de connexions à un site depuis une date.

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$fichComptes = fopen("/var/www/NewDialup/fichComptes.txt", "r+");
	$firstline = fgets($fichComptes);
 
	$sql = "SELECT COUNT(DISTINCT username) FROM radcheck";
	$req = mysqli_query($connect, $sql) or die('Erreur SQL : '.mysqli_error());
	while ($row = mysqli_fetch_row($req))
	{
		rewind($fichComptes);
		$firstline = $row[0];
		fwrite($fichComptes, $firstline);
	}
 
	$fich = file('fichComptes.txt');
	$explode = explode("\n", $fich);
	$nbProvisoire = $firstline - $fich[1]; // nombre de comptes crees hier
	$fich[1] = $firstline; // apres avoir calcule ce nombre, on met le compteur a jour
	fwrite($fichComptes, "\n".$firstline);
	fseek($fichComptes, 0, SEEK_END);
	$ligne = fgets($fichComptes);
	$ligne = explode(" ", $fich[3]);
	$nbActuel = intval($ligne[1]);
	$nbActuel = $nbActuel + $nbProvisoire;
	unset($ligne);
	fwrite($fichComptes, date("Y")." ".$nbActuel); // pour la reecrire avec les valeurs actuelles
 
	fclose($fichComptes);

Je voudrais que le script agisse de la façon suivante :

Voici le fichier texte avant exécution du script (575 connexions recensées) :

Code :
1
2
3
4
575 // nombre de connexions au total
575 // nombre provisoire
2011 300 // connexions faites en 2011
2012 275 // en 2012
Après exécution, pour 5 nouvelles connexions recensées :

Code :
1
2
3
4
580 // nombre de connexions au total
580 // nombre provisoire
2011 300 // connexions faites en 2011
2012 280 // en 2012
Le nombre provisoire me permet de calculer le nombre de nouvelles connexions effectuées depuis les dernières heures : 580 - 575 = 5

J'ajoute ce nombre au nombre de connexions de la ligne correspondante (2012) donc 275 + 5 = 280

Sur le code que j'ai fourni, je n'arrive pas à placer mon pointeur sur la dernière ligne, à effacer cette ligne et à réécrire la ligne comme ceci : 2012 280.

Des idées svp ?