Seiten Counter zählt nicht immer nur +1

Gesperrt
Domi
Beiträge: 33
Registriert: So 20. Nov 2011, 22:39
Kontaktdaten:

Seiten Counter zählt nicht immer nur +1

Beitrag von Domi »

Hallo zusammen,

ich brauche auf meiner Seite ein Counter, der einfach nur bei jedem Seitenaufruf die Zahl in der Datenbank um eins erhöht. Daher habe ich in der DB-Tabelle "[prefix]_art_lang" die Spalte "art_view_data" hinzugefügt und auf jeder Seite den folgenden Code eingebunden:

Code: Alles auswählen

<?php
    $sql = 'UPDATE ' . $cfg['tab']['art_lang'] . ' SET art_view_data = art_view_data + 1 WHERE (idart=' . $idart . ')';
    $db->query($sql);
?> 
Allerdings erhöht er in der Datenbank die Zahl nicht um eins, sondern um 3, aber nur auf der Startseite, also idart = 1.

Kann jemand schon sagen, woran das liegt, oder braucht ihr nich mehr Infos ?

LG Domi
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Seiten Counter zählt nicht immer nur +1

Beitrag von Spider IT »

Hallo Domi,
  • Wo genau hast du den Code eingebaut?
  • Wo genau liegt deine Startseite (Hauptnavigation oder Unterkategorie)?
  • Wie rufst du die Startseite auf (Adresse)?
Gruß
René
Domi
Beiträge: 33
Registriert: So 20. Nov 2011, 22:39
Kontaktdaten:

Re: Seiten Counter zählt nicht immer nur +1

Beitrag von Domi »

Hallo,

der Code ist im Head-Tag untergebracht, die Startseite ist in der Hauptnavigation und ich rufe es mit index.html auf.

LG Domi
McHubi
Beiträge: 1223
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Seiten Counter zählt nicht immer nur +1

Beitrag von McHubi »

Hallo Domi,

für mich stellte sich beim Lesen Deines Posts die Frage: Warum nutzt Du nicht die Daten aus der con_stat und con_stat_archive? Contenido loggt doch schon die Seitenaufrufe...

Wofür nutzt Du denn Deinen Zähler? Für's Frontend oder Backend? Möchtest Du für jeden Artikel anzeigen lassen wie oft er bislang aufgerufen wurde? Dann wäre ein eigenes Loggen okay, da hier nur eine DB-Abfrage zur Anzeige des Wertes fällig wäre anstatt die Aufrufe des aktuellen Monats aus der con_stat zu holen und dann die con_stat_archive durchzugehen um dabei dann alles zusammenzurechnen...
$sql = 'UPDATE ' . $cfg['tab']['art_lang'] . ' SET art_view_data = art_view_data + 1 WHERE (idart=' . $idart . ')';
Bei dem sql-Statement wird übrigens u. U. mehrfach +1 gerechnet, da die idart mehrfach vorkommen kann wenn zwei Sprachen eingesetzt werden - gerade bei der idart 1 wirst Du bestimmt mehr als einen Eintrag finden... Bei der Ausgabe des Ergebnisses dürftest Du dann je nach Abfrage Probleme bekommen: Du fragst auf der deutschen idart 1 nach der Anzahl der Aufrufe, die sql-Abfrage findet aber zuerst die idart der englischen Ausgabe. idart=1 ist gefunden und dann stoppt das Durchsuchen der DB-Tabelle mit dem falschen Ergebnis. Hier solltest Du dann eher auf die idartlang zurückgreifen - die ist eindeutig. Oder Deine DB-Abfrage auf die con_art_lang um die Sprache erweitern und die Spalte idlang mit berücksichtigen...

Grüße,


Markus
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)
Domi
Beiträge: 33
Registriert: So 20. Nov 2011, 22:39
Kontaktdaten:

Re: Seiten Counter zählt nicht immer nur +1

Beitrag von Domi »

Hey,

also ich habe die con_stat und con_stat_archive auch schon gesehen, aber da ich nur eine Zahl, also die Aufrufzahl von jeder Seite brauche, habe ich mir gedacht, dass es so um einiges einfacher ist, weil ich dann keine 2 Werte auslesen muss und so..
Also ich habe noochmal nachgeschaut, aber es steht fest: Also jeder Artikel hat eine eigene idart, weil ich auch nur eine Sorache habe..

LG Domi
McHubi
Beiträge: 1223
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Seiten Counter zählt nicht immer nur +1

Beitrag von McHubi »

Also jeder Artikel hat eine eigene idart, weil ich auch nur eine Sorache habe..
Wenn Du ausschließen kannst, dass hier jemals eine zweite Sprache hinzukommt, dann kannst Du die idart nehmen - allerdings birgt das immer eine mögliche Fehlerquelle für die Zukunft. Was spricht dagegen von vornherein "vernünftigerweise" die idartlang zu verwenden? Ist ja auch die gleiche Tabelle für Deinen Zähler...
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)
Domi
Beiträge: 33
Registriert: So 20. Nov 2011, 22:39
Kontaktdaten:

Re: Seiten Counter zählt nicht immer nur +1

Beitrag von Domi »

Hallo,

ich hoffe hier wird noch geantwortet ;)

Also ich habe das jetzt mit den Statistiken versucht und es sieht bisher so aus:

Code: Alles auswählen

$sql_stat = 'SELECT * FROM ' . $cfg['tab']['stat'] . ' WHERE (idcatart=' . $idart . ') AND (idlang=1) ORDER BY visited ASC';
if ($db->query($sql_stat)) {
    while ($db->next_record()) {
        $count_data_1 = $db->f('visited');
    }
}

$sql_stat_archive = 'SELECT * FROM ' . $cfg['tab']['stat_archive'] . ' WHERE (idcatart=' . $idart . ') AND (idlang=1) ORDER BY visited ASC';
if ($db->query($sql_stat_archive)) {
    $sql_stat_archive_2 = mysql_query($sql_stat_archive);
    while ($line = mysql_fetch_array($sql_stat_archive_2)) {
        $count_data_2 = $line['visited'];
    }
}

$count_data = $count_data_1 + $count_data_2;
Allerdings wird immer nur ein Monat der stat_archive ausgegeben, sodass ich den aktuellen Monat plus einen Monat habe.

Kann mir jemand helfen, wie ich alle Monate aus der stat_archive bekomme ?

LG Domii
Gesperrt