Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/08/2007, 14h03   #1
Invité régulier
 
Inscription : août 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 14
Points : 6
Points : 6
Par défaut Écrire sur la dernière ligne d'un fichier texte

Bonjour,

J'ai créer un petit compteur de visite pour pouvoir ensuite faire des statistique journalière avec un graphique.
Je voudrai savoir comment faire en sorte que ma fonction incrémente la dernière ligne de mon fichier texte tant que la date et identique
et que le jour d'après il ajoute la nouvelle ligne et qu'il prenne automatiquement la dernière ligne ensuite pour l'incrémenter?

pour l'instant j'utilise Fseek et je calcule la position avec sa, mais sa marche pas super bien..

Fonction compteur():
Code :
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<? // Compteur PHP de hits
 
function compteur(){
$mois = date("j F Y");    
 
//verifier si la date et toujours la même 
//et regarde a qu'elle ligne elle est la meme
$fichier = "compteur.txt";
$fp = fopen ($fichier,"r+");
$nb_ligne=0;
while($row=@fgets($fp)){
 
$jourfichier = explode("|", $row);
$fseekcpt = strlen($jourfichier[0]);
$fseekdate = strlen($jourfichier[1]);
$fseeklg = strlen($jourfichier[2]);
$fseek = (($fseekcpt + $fseekdate + $fseeklg)+2)+@$fseek;
 
if ($jourfichier[1] == $mois)
{
 
$lg = $jourfichier[2];
$fseek = ((($fseek - $fseekcpt) -$fseekdate) -$fseeklg)+$lg;
$cpt=++$jourfichier[0];
fseek($fp,$fseek);
fputs($fp,$cpt."|");  
fputs($fp,$mois."|");  
fputs($fp,$lg."|");     
fclose($fp);   
$ok=1;
}
 
$nb_ligne++;
}
 
if (@$ok != "1"){
$lg = ++$jourfichier[2];
$lg = ++$jourfichier[2];
$fp = fopen ($fichier,"a+");
$cpt=$jourfichier[0]; 
fputs($fp,$cpt."|");  
fputs($fp,$mois."|");  
fputs($fp,$lg."|");         
fclose($fp); 
}
}
 
?>
résultat:
81832|13 August 2007|10|
83776|14 August 2007|12|
84054|15 August 2007|14|

et quand sa bugue sa donne sa:
83776|14 August 2007|12|
84054|15 August 2007|14|84054|15 August 2007|14|84054|15 August 2007|14|84054|15 August 2007|14|84054|15 August 2007|14|84054|15 August 2007|14|84054|15 August 2007|14|84054|15 August 2007|14|84054|15 August etc...
sir_squall est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2007, 19h51   #2
Membre actif
 
Inscription : janvier 2006
Messages : 149
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : janvier 2006
Messages : 149
Points : 186
Points : 186
N'y aurait-il pas un problème d'accès concurrents sur le fichier ?

Pour gérer les visites les fichiers textes sont pas trop adaptés...
Vell est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 10h05   #3
Invité régulier
 
Inscription : août 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 14
Points : 6
Points : 6
non il n'y a pas d'accès concurrents sur le fichiers.
mais sinon tu sais pas si il existe une commande juste pour écrire sur la dernière ligne d'un fichier texte ?


P.S.c'est vrai que j'aurai meilleur temps de le faire avec une base de donnée.
sir_squall est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 19h06   #4
Membre actif
 
Inscription : janvier 2006
Messages : 149
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : janvier 2006
Messages : 149
Points : 186
Points : 186
Bah en fait, pour ce genre d'utilisation tu dois te poser la question avant même de le mettre en place :

"Qu'est-ce qui est le plus adapté, le plus aisé à mettre en place puis à maintenir ?"

Ceci dit à part fopen() avec récupération de la position je vois pas...
Vell est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 23h26   #5
Membre régulier
 
Homme Mallory
Étudiant
Inscription : septembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Mallory
Âge : 22
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : septembre 2006
Messages : 213
Points : 75
Points : 75
Envoyer un message via MSN à Oprichnik Envoyer un message via Skype™ à Oprichnik
Salut, je fais un peu ma promotion mais c'est pour aidé :

J'ai fais une classe pour les fichiers : http://oprichnik.monespace.be/simplefiles

Tu l'utilise de cette facon (si c'est bien pour calculer le nombre de visites par jour) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<?php
 
// tu inclus la classe
 
$sf = new simplefiles;
 
if(file_exists("cnt.dtb")) {
$compteur = $sf->uRead("cnt.dtb");
if(isset($compteur[date("d-m-Y")])
$cnt = $compteur[date("d-m-Y")]+1;
else
$cnt = 0;
}
 
$a[date("d-m-Y")] = $cnt;
 
$sf->uMod("cnt.dtb",$a);
 
?>
Avec uRead, tu récupere un tableau multi-dim avec comme indice le jour (jour-mois-annee) et comme valeur le nombre de visites du jour.
Oprichnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 10h52   #6
Invité régulier
 
Inscription : août 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 14
Points : 6
Points : 6
comme t'assure gars! c'est exactement sa !

il te manquai juste une parenthèse juste là:
if(isset($compteur[date("d-m-Y")]) )

merci beaucoup!

si tu veut voir le résultat:
http://hotnight.dyndns.org/new/images/graph2.php
d'ici quelque jour sa seras nickel! je vais essayer d'ajouter les jours au graph,
là c'est juste le nombre de visite qu'il y a eu par jour !
sir_squall est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 15h18   #7
Membre régulier
 
Homme Mallory
Étudiant
Inscription : septembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Mallory
Âge : 22
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : septembre 2006
Messages : 213
Points : 75
Points : 75
Envoyer un message via MSN à Oprichnik Envoyer un message via Skype™ à Oprichnik
super
Oprichnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h47.


 
 
 
 
Partenaires

Hébergement Web