IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Écrire sur la dernière ligne d'un fichier texte


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Points : 10
    Points
    10
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 150
    Points : 186
    Points
    186
    Par défaut
    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...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    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.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 150
    Points : 186
    Points
    186
    Par défaut
    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...

  5. #5
    Membre habitué

    Homme Profil pro
    Developpeur web
    Inscrit en
    Septembre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 225
    Points : 180
    Points
    180
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    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 !

  7. #7
    Membre habitué

    Homme Profil pro
    Developpeur web
    Inscrit en
    Septembre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 225
    Points : 180
    Points
    180
    Par défaut
    super

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/10/2011, 09h56
  2. Ecrire sur le i ème caractère d'une ligne d'un fichier texte
    Par Krovax dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 01/12/2009, 23h00
  3. Réponses: 6
    Dernier message: 18/10/2009, 08h28
  4. Compteur, écrire à la ligne dans un fichier texte
    Par pierrot10 dans le forum Langage
    Réponses: 5
    Dernier message: 24/11/2007, 15h21
  5. Réponses: 2
    Dernier message: 19/09/2006, 21h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo