Gesammt + Monats counter

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gesammt + Monats counter

    HI @ll

    ich suche einen counter der die gesammtbesucher zählt und die monatlichen besucher!!

    der monatscounter soll nach jedem monat auf 0 gesetzt werden!!

    evtl. die einzelnen monate noch in einer einfachen statistik speichern!!

    SOFARJOAT
    the end comes faster than you think - you've already reached it!

  • #2
    Ich habe eben mal einen grafikschen Zähler gebastelt, der Gesamtbesucher und Monatsbesucher in einer Grafik ausgibt.
    Der Monatswert wird jeden neuen Monat auf Null gesetzt.

    Das PHP-Script (z.B. counter.php) muss in einer HTML Datei dann als Grafik aufgerufen werden:
    <img src="counter.php">
    (ggf. Pfad anpassen)


    [COLOR=darkred]counter.php[/COLOR]
    PHP-Code:
    <?

    // Datei öffnen
    // mit @ Fehler unterdrücken, falls Datei noch nicht vorhanden ist
    // Wenn Datei nicht vorhanden ist, wird beim ersten Aufruf erzeugt
    @$counter = file("counter.txt");

    // 1. Zeile = Gesamtzähler
    $gesamtzaehler = chop($counter[0]);

    // 2. Zeile = Monat, in dem zuletzt gezählt wurde und Monatszähler (mit ; getrennt)
    $counter[1] = chop($counter[1]);

    // 2. Zeile zerlegen (in Monat und Monatszähler)
    list($monat,$monatszaehler) = split(";",$counter[1]);

    // Wenn der Wert des Monatszählers noch Wert von letzten Monat ist, dann auf Null setzten
    if ($monat != date("n")) $monatszaehler = 0;

    // Jeden Zähler um eins erhöhen
    ++$gesamtzaehler;
    ++$monatszaehler;

    // Zählerwerte mit aktuellem Monat (beim Monatszähler) speichern
    $rfile = fopen("counter.txt", "w");
    fwrite($rfile, $gesamtzaehler."\r\n".date("n").";".$monatszaehler);
    fclose($rfile);

    // Grafik generieren
    header ("Content-type: image/png");
    $x = strlen(intval($gesamtzaehler))*7; // Breite der Grafik abhängig vom Zählerwert
    $im = @ImageCreate (54+$x, 28);
    $background_color = ImageColorAllocate ($im, 0, 0, 0);
    $text_color1 = ImageColorAllocate ($im, 255, 255, 255);
    $text_color2 = ImageColorAllocate ($im, 255, 220, 80);

    ImageString ($im, 2, 4, 1, "Gesamt:", $text_color1);
    ImageString ($im, 3, 50, 1, $gesamtzaehler, $text_color2);

    ImageString ($im, 2, 4, 12, " Monat:", $text_color1);
    ImageString ($im, 3, 50, 12, $monatszaehler, $text_color2);
    ImagePNG ($im);

    ?>
    Immer erst mal gucken, ob Benzin im Tank ist ...

    Kommentar


    • #3
      Ähm ... hatte ich erst überlesen, die Speicherung der einzelnen Monate (Statistik).

      Hier die Ergänzung:
      PHP-Code:
      ...
      // Wenn der Wert des Monatszählers noch Wert von letzten Monat ist, dann auf Null setzten
      if ($monat != date("n")) // <-- Diese Zeile im Script oben durch den neuen Teil hier ersetzen
       
      {
        
      $monatsnamen = Array (=> "Jan","Feb","März","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez");
        
      $rfile fopen("counter_stats.txt""a+");
        
      fwrite($rfile"$monatsnamen[$monat];$monatszaehler\r\n");
        
      fclose($rfile);  
        
      $monatszaehler 0;
       }
      ... 
      Immer erst mal gucken, ob Benzin im Tank ist ...

      Kommentar


      • #4
        mit Datenbank?

        leg dir eine Tabelle LOGS an mit
        create table LOGS (
        MONAT timestamp(6),
        URL varchar(255),
        COUNT bigint unsigned (20),
        unique STAT(MONAT, VAR),
        index (URL)
        );


        MONAT als timestamp(6) -> yyyymm

        eintragen/erhöhen mit
        if (!mysql_query("update LOGS set COUNT=COUNT+1 where URL='$url' and MONAT=now()"))
        mysql_query("insert into LOGS (MONAT,URL,COUNT) values(now(), '$url', 1);

        Wenn das Erhöhen nicht klappt, ist der Eintrag noch nicht da und wird angelegt.

        Gesamte Hits auslesen:
        select sum(COUNT) from LOGS where URL='$url'

        monatliche Hits:
        select date_format('m/Y', MONAT), COUNT from LOGS where URL='$url' order by MONAT
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          @ mkJack

          das ganze funzt!! nur wird die grafik nicht angezeigt!!

          und was ich noch vergessen habe:

          Das ganze sollte mit IP logging / cookies funzen!!

          @ Titus

          ne das passt schon!! denn das ganze ist nicht für mich!! da ist es mit txt dateien besser!

          SOFARJOAT
          the end comes faster than you think - you've already reached it!

          Kommentar


          • #6
            Ist bei dir auch der GD Support aktiv?
            Ich musste den bei mir lokal nämlich erst aktivieren, war kein Standard.
            Immer erst mal gucken, ob Benzin im Tank ist ...

            Kommentar


            • #7
              k.a.

              ich habs sowohl lokal als auch online getestet!! unde beidemale gings nicht!!

              SOFARJOAT
              the end comes faster than you think - you've already reached it!

              Kommentar


              • #8
                Wie gesagt, GD Support muß aktiv sein.
                Bei mir zuhause mußte ich es aktivieren, bei meinem Provider (Puretec) ist es aktiv.
                Ich habe das Script, daß ich gepostet hatte, sowohl lokal als auch online getestet. Das Script funktioniert in beiden Fällen.

                Um zu kontrollieren, ob GD aktiv ist, eine PHP-Datei mit diesem Inhalt aufrufen:
                <?
                phpinfo();
                ?>


                In der Ausgabe dieser Info gibt es einen Abschnitt GD, wenn GD aktiv ist. Check das so mal bei deinem Provider bzw. lokal.
                Immer erst mal gucken, ob Benzin im Tank ist ...

                Kommentar


                • #9
                  nope!

                  bei mir gibts kein GD!!

                  ich habs jetzt lokal / membersindex.info / tripod getestet!!

                  nirgendwo gehts!!

                  SOFARJOAT
                  the end comes faster than you think - you've already reached it!

                  Kommentar


                  • #10
                    Also wenn dein Provider es nicht aktiv hat, hast du schlechte Karten.

                    Bei dir lokal kannst du das wie folgt machen (sofern du Windows benutzt):
                    1. PHP.INI öffnen (im Ordner WINDOWS bzw. WINNT zu finden)
                    2. in der Zeile ;extension=php_gd.dll das Semikolon löschen
                    3. Falls in deinem PHP-Ordner nicht php_gd.dll vorhanden ist, kannst du dir das Ding als ZIP hier runterladen. Das Teil entzippen und in den PHP-Ordner kopieren.
                    4. Ggf. Webserver beenden und neu starten
                    5. Mit phpinfo() checken, ob GD aktiv ist
                    Immer erst mal gucken, ob Benzin im Tank ist ...

                    Kommentar

                    Lädt...
                    X