Zaehler für dynamische Seiten

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

Hallo kuchi,

hier ist das Modul, wie es bei mir funktioniert. Es zeigt die Benutzer online, die Anzahl der Seitenaufrufe im aktuellen+letzten Monat+seit Maerz 2004 (da ging die neue Version online):

Code: Alles auswählen

<? 
# Zeit in Sekunden bis neu gezählt wird
$online = "120";

# Die Datei in der die IP und zeit gespeichert werden
$datei = "useronline.dat";

$zeit = time();
$fp = fopen($datei, "r");
  $daten = "";
  $count = "1";
  $online = $zeit - $online;

while($zeilen = fgets($fp, 1000)){
    $zeilen = chop($zeilen);
    $inhalt = explode("|", $zeilen);
            if($inhalt[0] == $REMOTE_ADDR || $inhalt[1] < $online || $inhalt[0] == "")
            continue;
            $daten = "$inhalt[0]|$inhalt[1]\n";
            $count++;
            }
fclose($fp);

$daten .= "$REMOTE_ADDR|$zeit\n";
$fp = fopen($datei, "w");
flock($fp,1);
fwrite($fp, $daten);
flock($fp,3);
fclose($fp);
if ($count=="1") { 
   echo "<span class=\"small\">&nbsp;&nbsp;$count Besucher ist online</span><br>"; 
} else { 
   echo "<span class=\"small\">&nbsp;&nbsp;$count Besucher sind online</span><br>"; 
}

//aktueller Monat
$sql2 = 'SELECT 
            visited 
        FROM 
            '.$cfg['tab']['cat_art'].' AS A, 
            '.$cfg['tab']['stat'].' AS B 
        WHERE 
            A.idcatart = B.idcatart AND 
            A.idcatart = '.$idcatart.' AND 
            B.idlang = '.$lang; 
$db->query($sql2); 

if ($db->next_record()) { 
    echo '<span class="small">&nbsp;&nbsp;'.$db->f('visited').' Seitenaufrufe in diesem Monat</span><br>'; 
} 

//Letzter Monat
    $year = date("Y"); 
    $month = date("m"); 

    if ($month == 1) 
    { 
       $month = 12; 
       $year = $year -1; 
    } else { 
       $month = $month -1; 
    } 

    $yearmonth = sprintf("%04d%02d",$year,$month); 
    
    $sql3='SELECT 
            C.visited AS archived 
        FROM 
            '.$cfg['tab']['cat_art'].' AS A, 
            '.$cfg['tab']['stat_archive'].' AS C 
        WHERE 
            A.idcatart = C.idcatart AND 
            C.idcatart = '.$idcatart.' AND 
            C.idlang = '.$lang.' AND 
            C.archived = '.$yearmonth; 
            
    $db->query($sql3); 

    if ($db->next_record()) { 
         echo '<span class="small">&nbsp;&nbsp;'.$db->f('archived').' Seitenaufrufe im letzten Monat</span><br>'; 

    } 
//Gesamtaufrufe aktuelle Seite
$sql = 'SELECT 
            visited 
        FROM 
            '.$cfg['tab']['cat_art'].' AS A, 
            '.$cfg['tab']['stat'].' AS B 
        WHERE 
            A.idcatart = B.idcatart AND 
            A.idcatart = '.$idcatart.' AND 
            B.idlang = '.$lang; 
$db->query($sql); 

if ($db->next_record()) { 
   $hits = $db->f('visited'); 
} 

$sql4 = 'SELECT 
            sum(C.visited) AS archived 
        FROM 
            '.$cfg['tab']['cat_art'].' AS A, 
            '.$cfg['tab']['stat_archive'].' AS C 
        WHERE 
            A.idcatart = C.idcatart AND 
            C.idcatart = '.$idcatart.' AND 
            C.idlang = '.$lang; 
$db->query($sql4); 

if ($db->next_record()) { 
   $hits = $hits + $db->f('archived'); 
} 

echo '<span class="small">&nbsp;&nbsp;'.$hits.' Seitenaufrufe seit M&auml;rz 2004.</span><br>';
?>
Ich hoffe, es hilft Dir. Laeuft uebrigens auch auf einem Profihost-Server. :lol:

Gruss
Christa
kuchi
Beiträge: 222
Registriert: So 29. Jun 2003, 18:02
Wohnort: Neubrandenburg
Kontaktdaten:

dynamischer Seitenzähler

Beitrag von kuchi »

Hallo Christa,

erstmal wieder vielen Dank...
Dein Modul bringt eigensinnigerweise das gleiche Resultat. Seit dem Monatswechsel fehlen die Angaben zum aktuellen und dem letzten Monat; nur die Gesamtzahl wird angezeigt.
Hier nochmals der Code:

Code: Alles auswählen

<?php
// aktuelles monat gesamt in aktueller sprache
$sql = 'SELECT
            sum(visited) as visited
        FROM
            '.$cfg['tab']['stat'].' as B
        WHERE
            B.idlang = '.$lang;

$db->query($sql);

if ($db->next_record()) {
    echo "
    <table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">
           <tr><td>

   &nbsp;<font size=\"1\">aktueller&nbsp;&nbsp;&nbsp;Monat&nbsp;&nbsp;</font></td><td bgcolor=\"#006600\"><font size=\"1\">&nbsp;&nbsp;".$db->f('visited');
   echo "</font></td></tr>";
}
// letzter monat gesamt
    $year = date("Y");
    $month = date("m");

    if ($month == 1)
    {
       $month = 12;
       $year = $year -1;
    } else {
       $month = $month -1;
    }

    $yearmonth = sprintf("%04d%02d",$year,$month);

    $sql='SELECT
            sum(C.visited) AS archived
        FROM
            '.$cfg['tab']['stat_archive'].' AS C
        WHERE
            C.idlang = '.$lang.' AND
            C.archived = '.$yearmonth;

    $db->query($sql);

    if ($db->next_record()) {
         echo "<tr><td><font size=\"1\">&nbsp;&nbsp;letzter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Monat</font></td><td bgcolor=\"#006600\"><font size=\"1\">&nbsp;".$db->f('archived');
         echo "</font></td></tr>";
    }
// gesamt in aktueller sprache
$sql = 'SELECT
            sum(visited) as visited
        FROM
            '.$cfg['tab']['stat'].' AS B
        WHERE
            B.idlang = '.$lang;

$db->query($sql);


if ($db->next_record()) {
   $hits = $db->f('visited');
}

    $sql='SELECT
            sum(C.visited) AS archived
        FROM
            '.$cfg['tab']['stat_archive'].' AS C
        WHERE
            C.idlang = '.$lang;

    $db->query($sql);

    if ($db->next_record()) {
         $hits = $hits + $db->f('archived');
    }

echo "<tr><td><font size=\"1\">&nbsp;&nbsp;seit August 2003&nbsp;&nbsp;&nbsp;&nbsp;</font></td><td bgcolor=\"#006600\"><font size=\"1\">&nbsp; $hits ";
echo "</font></td></td></table>";


?>
Kann ja sein, daß jemandem etwas auffällt!

Gruß kuchi
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

Hallo kuchi,

was mir schon mal aufgefallen ist, ist die Tatsache, dass wir unterschiedliche SQL-Abfragen haben. So z.B. fuer den aktuellen Monat: bei Dir:

Code: Alles auswählen

$sql = 'SELECT 
            sum(visited) as visited 
        FROM 
            '.$cfg['tab']['stat'].' as B 
        WHERE 
            B.idlang = '.$lang; 
bei mir:

Code: Alles auswählen

$sql2 = 'SELECT 
            visited 
        FROM 
            '.$cfg['tab']['cat_art'].' AS A, 
            '.$cfg['tab']['stat'].' AS B 
        WHERE 
            A.idcatart = B.idcatart AND 
            A.idcatart = '.$idcatart.' AND 
            B.idlang = '.$lang; 
So weiss ich nicht, was in dem Attribut visited steht, aber die Summe ueber die Spalte fuehrt zu einem falschen Ergebnis: ich habe bei mir auch mal Dein Modul eingebaut, und beim aktuellen Monat standen bei der Seite 253 Hits statt 81. Oder ist das bei Dir so, dass die Statistik ueber die ganze Site gehen soll? Bei mir steht die auf jeder Seite fuer die jeweils aktuelle Seite naemlich.

Dann beim letzten Monat aehnlich ...
bei Dir:

Code: Alles auswählen

 $sql='SELECT 
            sum(C.visited) AS archived 
        FROM 
            '.$cfg['tab']['stat_archive'].' AS C 
        WHERE 
            C.idlang = '.$lang.' AND 
            C.archived = '.$yearmonth; 
bei mir:

Code: Alles auswählen

$sql3='SELECT 
            C.visited AS archived 
        FROM 
            '.$cfg['tab']['cat_art'].' AS A, 
            '.$cfg['tab']['stat_archive'].' AS C 
        WHERE 
            A.idcatart = C.idcatart AND 
            C.idcatart = '.$idcatart.' AND 
            C.idlang = '.$lang.' AND 
            C.archived = '.$yearmonth; 
Und die Gesamtaufrufe seit einem bestimmten Datum ...
bei Dir:

Code: Alles auswählen

$sql='SELECT 
            sum(C.visited) AS archived 
        FROM 
            '.$cfg['tab']['stat_archive'].' AS C 
        WHERE 
            C.idlang = '.$lang; 
und bei mir:

Code: Alles auswählen

$sql4 = 'SELECT 
            sum(C.visited) AS archived 
        FROM 
            '.$cfg['tab']['cat_art'].' AS A, 
            '.$cfg['tab']['stat_archive'].' AS C 
        WHERE 
            A.idcatart = C.idcatart AND 
            C.idcatart = '.$idcatart.' AND 
            C.idlang = '.$lang; 
Die SQL-Anweisungen unterscheiden sich aber auch nicht nur darin, dass die Summe ueber eine Spalte gebildet wird, sondern auch in der WHERE-Bedingung ... Deine sehen recht mager aus. :)

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH, warte mal, welche Contenido-Version hast Du nochmal?
kuchi
Beiträge: 222
Registriert: So 29. Jun 2003, 18:02
Wohnort: Neubrandenburg
Kontaktdaten:

Dynamischer Seitenzähler

Beitrag von kuchi »

Hallo Christa,

4.4.1

Gruß kuchi
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Re: Dynamischer Seitenzähler

Beitrag von Halchteranerin »

Hallo kuchi,

vielleicht meldet sich emergence noch, der scheint das System in- und auswendig zu kennen. :) Ich weiss nur, dass es bei 4.4.2 Probleme mit der Archivierung der Statistik gab, wobei ich nicht weiss, woraus die Probleme bestanden (die Archivierung hat aber nicht funktioniert!), und erst seit 4.4.4 geht's wieder. Wie das bei 4.4.1 war, weiss ich nicht, aber moeglicherweise liegt's bei Dir daran!

Gruss
Christa
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: Dynamischer Seitenzähler

Beitrag von emergence »

Halchteranerin hat geschrieben:der scheint das System in- und auswendig zu kennen. :)
mittlerweile kenne ich es ein wenig.. ;-)

bei der 4.4.1 könnte ich nur mehr raten wobei das problem lag
bei der 4.4.2 wurde die archivierung beim cronjob nicht durchgeführt
bei der 4.4.3 und 4.4.4 müsste das problem behoben sein...

beim verschieben ins archiv wurden die einträge in der con_stats nicht mehr vorgenommen...
hiebei hat es zwei änderungen gegeben soweit ich noch weiss
einmal in der front_content.php und einmal in der functions.stats.php

die statistik müsste definitiv bei der 4.4.4 fehlerfrei funktionieren...
*** make your own tools (wishlist :: thx)
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Re: Dynamischer Seitenzähler

Beitrag von Halchteranerin »

emergence hat geschrieben:mittlerweile kenne ich es ein wenig.. ;-)
Du bist aber bescheiden ... :lol:
emergence hat geschrieben:die statistik müsste definitiv bei der 4.4.4 fehlerfrei funktionieren...
Tja kuchi ... da kannst Du Dich wahrscheinlich zu Tode suchen, was bei 4.4.1 moeglicherweise nicht/falsch funktioniert. :cry: Waere es sehr schlimm, auf 4.4.4 upzudaten? Ich habe von 4.4.2 auf 4.4.4 upgedatet, und ich lebe noch. :wink:

Gruss
Christa
kuchi
Beiträge: 222
Registriert: So 29. Jun 2003, 18:02
Wohnort: Neubrandenburg
Kontaktdaten:

Dynamischer Seitenzähler

Beitrag von kuchi »

Hallo Christa,

danke für Deine Mithilfe / mit dem update werde ich es mal versuchen...

Gruß kuchi
kuchi
Beiträge: 222
Registriert: So 29. Jun 2003, 18:02
Wohnort: Neubrandenburg
Kontaktdaten:

Dynamischer Seitenzähler

Beitrag von kuchi »

Hallo,

da ich im Moment eigentlich kein update auf neuere Versionen machen möchte stelle ich nochmal den letzten Quellcode vom Seitenzähler rein:

so sieht es im Moment auf der Seite aus:

Bild

so der Code:

Code: Alles auswählen

<?php
// aktuelles monat gesamt in aktueller sprache
$sql = 'SELECT
            sum(visited) as visited
        FROM
            '.$cfg['tab']['stat'].' as B
        WHERE
            B.idlang = '.$lang;

$db->query($sql);

if ($db->next_record()) {
    echo "
    <table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">
           <tr><td>

   &nbsp;<font size=\"1\">aktueller&nbsp;&nbsp;&nbsp;Monat&nbsp;&nbsp;</font></td><td bgcolor=\"#006600\"><font size=\"1\">&nbsp;&nbsp;".$db->f('visited');
   echo "</font></td></tr>";
}
// letzter monat gesamt
    $year = date("Y");
    $month = date("m");

    if ($month == 1)
    {
       $month = 12;
       $year = $year -1;
    } else {
       $month = $month -1;
    }

    $yearmonth = sprintf("%04d%02d",$year,$month);

    $sql='SELECT
            sum(C.visited) AS archived
        FROM
            '.$cfg['tab']['stat_archive'].' AS C
        WHERE
            C.idlang = '.$lang.' AND
            C.archived = '.$yearmonth;

    $db->query($sql);

    if ($db->next_record()) {
         echo "<tr><td><font size=\"1\">&nbsp;&nbsp;letzter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Monat</font></td><td bgcolor=\"#006600\"><font size=\"1\">&nbsp;".$db->f('archived');
         echo "</font></td></tr>";
    }
// gesamt in aktueller sprache
$sql = 'SELECT
            sum(visited) as visited
        FROM
            '.$cfg['tab']['stat'].' AS B
        WHERE
            B.idlang = '.$lang;

$db->query($sql);


if ($db->next_record()) {
   $hits = $db->f('visited');
}

    $sql='SELECT
            sum(C.visited) AS archived
        FROM
            '.$cfg['tab']['stat_archive'].' AS C
        WHERE
            C.idlang = '.$lang;

    $db->query($sql);

    if ($db->next_record()) {
         $hits = $hits + $db->f('archived');
    }

echo "<tr><td><font size=\"1\">&nbsp;&nbsp;seit August 2003&nbsp;&nbsp;&nbsp;&nbsp;</font></td><td bgcolor=\"#006600\"><font size=\"1\">&nbsp; $hits ";
echo "</font></td></td></table>";


?>
ich nutze 4.4.1 // kann ja sein jemandem kommt die Idee, warum seit dem Monatswechsel bei letzter Monat/aktueller Monat nichts mehr kommt...


Gruß kuchi
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Re: Dynamischer Seitenzähler

Beitrag von Halchteranerin »

Hallo kuchi,
kuchi hat geschrieben: da ich im Moment eigentlich kein update auf neuere Versionen machen möchte
das solltest Du aber lieber tun. :wink:

Hast Du phpMyAdmin? Wenn ja, kannst Du dort mal im SQL-Bereich folgende Anweisungen eingeben und dann mal sagen, was die zurueckgeben:
select sum(visited) from con_stat where idlang=1;
select sum(visited) from con_stat where idlang=3;
select sum(visited) from con_stat_archive where idlang=1 and archived=200403;
select sum(visited) from con_stat_archive where idlang=3 and archived=200403;
Wenn nein, dann richte das ein, weil es bei Dir moeglich ist. Falls Du Fragen dazu hast, kannst Du mich fragen, ich habe das bei mir schon eingerichtet (auch bei Profihost).

Dann sehen wir weiter. :)

Gruss
Christa
kuchi
Beiträge: 222
Registriert: So 29. Jun 2003, 18:02
Wohnort: Neubrandenburg
Kontaktdaten:

dynamischer Seitenzähler

Beitrag von kuchi »

Hallo Christa,

die Anweisungen geben alle null zurück.

Gruß kuchi
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Bad news ...

Beitrag von Halchteranerin »

Hallo kuchi,
kuchi hat geschrieben: die Anweisungen geben alle null zurück.
das sieht leider nicht gut aus. :( Es liegt also hoechstwahrscheinlich nicht am Modul, aber das habe ich mir eigentlich schon gedacht, als Du sagtest, dass mein Modul bei Dir auch nicht funktioniert. Es scheint so, als haette die Statistik bei 4.4.1 auch nicht funktioniert, und wenn ich das richtig sehe, kannst Du da nachtraeglich auch nichts aendern. Tut mir leid. :cry:

Gruss
Christa
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

@kuchi

ähm ganz versteh ich es nicht wieso du kein update machen möchtest...
die version 4.4.4 beinhaltet bugfixes der vorgänger versionen...
da kommen keine neuen funktionen dazu...

wenn du nicht updaten möchtest, wirst du wohl mit dem fehler in contenido leben müssen...
*** make your own tools (wishlist :: thx)
Rolf Herrmann
Beiträge: 101
Registriert: Fr 6. Aug 2004, 12:44
Kontaktdaten:

Counter

Beitrag von Rolf Herrmann »

flashg hat geschrieben:Hi,
also mein Code tuts auch...

http://www.kuratlas.de/25_29.html

Gruss Gordon
Super Danke bei mir funztz er auch ganz prächtig
danielawoe
Beiträge: 113
Registriert: Fr 11. Feb 2005, 12:03
Wohnort: Flensburg
Kontaktdaten:

Beitrag von danielawoe »

Hallo!

ich habe den counter vor einer Weile in die Seite eingebaut.
habe Version 4.4.4.

Zwei Fragen tun sich mir auf :

1.) warum setzt der sich nach dem Monatswechsel auf "0"
2.) gibt es den auch mit einer IP Sperre? möchte nur die wirklichen Besucher anzeigen und nicht jedes Mal gezählt haben, wenn man auf eine neue seite kommt...

lg Daniela
Gesperrt