PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Monats-Counter (http://www.selfphp.de/forum/showthread.php?t=24648)

phmax 25.04.2012 16:34:17

Monats-Counter
 
Hi,
ich habe einen kleinen Counter, der mir Monatsweise die Besucher in eine txt schreiben soll. Soweit klappt das schon, allerdings möchte ich, wenn der Monat übereinstimmt, nur hochgezählt werden soll. Fängt ein neuer Monat an, dann soll eine neue Zeile angehangen werden. Also es soll am Ende nur pro Monat jeweils eine Zeile in der txt stehen.

So sieht es jetzt aus:
April 2012: 0033
April 2012: 0033
April 2012: 0033
April 2012: 0034
April 2012: 0034

So soll es aussehen:
April 2012: 0033
Mai 2012: 0088
Juni 2012: 0045

PHP-Code:

// Monate auflisten
$string = (date('F Y').": ".$zahl); // $zahl = Zähler
$date = (date('F Y'));
$datei = ($_SERVER['DOCUMENT_ROOT']."/counter/db/zahl.txt"); // Name der Datei
$userdatei fopen($datei,"a+");
while(!
feof($userdatei))
   {
   
$zeile fgets($userdatei); // Zeilenweise lesen
   
$zeile explode(": "$string);
   if (
$date == $zeile[0]) { // wenn akt. Datum = Datum aus der txt

   
$zahl fread($userdatei1024);
   
// 1 hinzurechnen
   
$zahl $zeile[1] + 1;

   
fwrite($userdatei$string."\n");
   return 
false;
   }
   }
fclose($userdatei); 


vt1816 25.04.2012 17:29:27

AW: Monats-Counter
 
Es gibt sicherlich die verschiedensten Ansätze um zu einer für Dich befriedigenden Lösung zu kommen.

Ausgehend von Deinem Code, kann es ja nur zur Änderung(en) in der letzten Zeile Deiner Datei "zahl.txt" kommen. Alles andere macht ja keinen Sinn, zum Beispiel Änderungen in Vormonaten vorzunehmen.

Ergänze Deine Code wie folgt:
  • merke Dir alle Zeilen vor der eigentlich zu ändernden
  • ändere die entsprechende Zeile (wenn akt. Datum = Datum aus der txt)
  • füge sie zu den anderen vohergehenden dazu oder füge eine Zeile für einen neuen Monat hinzu
  • schreibe alles komplett wieder in die Datei zurück


Wenn ich Deinen Code richtig verstehe/lese, solltes Du $string erst nach
PHP-Code:

$zahl $zeile[1] + 1

zusammensetzten.

Was machst Du wenn ein erhöhter (gleichzeitger) Zugriff erfolgt? Tipp: Dateisperrung.

phmax 26.04.2012 10:21:12

AW: Monats-Counter
 
Danke für deine Infos, ich werd mal versuchen das umzusetzen.

Gruß
phmax


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:38:23 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.