Simpel Statistieken Script (Total, Today)
Auteur: Gerard - 23 september 2004 - 10:24 - Gekeurd door: Dennisvb - Hits: 10642 - Aantal punten: 4.25 (6 stemmen)
Dit script kan ingezet worden om bij te houden hoeveel bezoekers er totaal zijn geweest en hoeveel hits er zijn geweest. Bezoeken worden bijgehouden per dag en zijn uniek aan de hand van de dag/ipadres combinatie. Mensen die meer kennis hebben van SQL kunnen met dit systeem ook per gebruiker laten zien hoeveel hits hij/zij op die dag heeft gegenereerd op de website, etc.
Changelog
03-05-2005
(Coding Standard) Variabelen buiten de quotes
(Performance) Nieuwe queries
(Fix) Kijken of bezoeker ooit eerder geweest is om datefield te updaten
12-03-2007
(Coding Standard) Compleet herschreven
(Feature) Bijhouden van hits van een bepaald persoon
|
Code: |
SQL query voor de database
CREATE TABLE `counter` (
`ipaddress` varchar(15) NOT NULL default '127.0.0.1',
`date` date NOT NULL,
`hits` int(5) unsigned NOT NULL default '1',
PRIMARY KEY (`ipaddress`,`date`)
) TYPE=MyISAM;
CREATE TABLE `counter` ( `ipaddress` varchar(15) NOT NULL default '127.0.0.1', `hits` int(5) unsigned NOT NULL default '1', ) TYPE=MyISAM;
Code voor de counter pagina die alles afhandelt:
<?php
$aCounter = array();
$aCounter['hits'] = array();
$aCounter['visits'] = array();
$aCounter['config'] = array();
$aCounter['config']['table'] = 'counter';
$qUpdateVisit = mysql_query("UPDATE `" . $aCounter['config']['table'] . "`
SET `hits` = `hits` + 1
WHERE `ipaddress` = '" . $_SERVER['REMOTE_ADDR'] . "'
AND `date` = CURDATE()");
if (mysql_affected_rows() != 1) {
$qInsertVisit = mysql_query("INSERT INTO `" . $aCounter['config']['table'] . "` (`ipaddress`, `date`)
VALUES ('" . mysql_real_escape_string($_SERVER['REMOTE_ADDR']) . "',
CURDATE())");
}
$qGetToday = mysql_query("SELECT COUNT(1), SUM(`hits`)
FROM `" . $aCounter['config']['table'] . "`
WHERE `date` = CURDATE()");
$qGetTotal = mysql_query("SELECT COUNT(1), SUM(`hits`)
FROM `" . $aCounter['config']['table'] . "`");
$aCounter['visits']['today'] = mysql_result($qGetToday, 0, 0);
$aCounter['visits']['total'] = mysql_result($qGetTotal, 0, 0);
$aCounter['hits']['today'] = mysql_result($qGetToday, 0, 1);
$aCounter['hits']['total'] = mysql_result($qGetTotal, 0, 1);
<?php $aCounter['hits'] = array(); $aCounter['visits'] = array(); $aCounter['config'] = array(); $aCounter['config']['table'] = 'counter'; $qUpdateVisit = mysql_query("UPDATE `" . $aCounter['config']['table'] . "` SET `hits` = `hits` + 1 WHERE `ipaddress` = '" . $_SERVER['REMOTE_ADDR'] . "' AND `date` = CURDATE()"); $qInsertVisit = mysql_query("INSERT INTO `" . $aCounter['config']['table'] . "` (`ipaddress`, `date`) CURDATE())"); } FROM `" . $aCounter['config']['table'] . "` WHERE `date` = CURDATE()"); FROM `" . $aCounter['config']['table'] . "`"); $aCounter['visits']['today'] = mysql_result($qGetToday, 0, 0); $aCounter['visits']['total'] = mysql_result($qGetTotal, 0, 0); $aCounter['hits']['today'] = mysql_result($qGetToday, 0, 1); $aCounter['hits']['total'] = mysql_result($qGetTotal, 0, 1);
Daarna is het alleen nog maar een kwestie van het leggen van je verbinding met de database op je eigen pagina en het inladen van deze pagina. Een voorbeeld kan je hieronder vinden.
<?php
mysql_connect('localhost', 'root', '********');
mysql_select_db('database');
require_once 'counter.inc.php'; // Hier komt natuurlijk de naam van hoe jij de pagina hebt genoemd
echo '<pre>', var_dump($aCounter), '</pre>';
<?php require_once 'counter.inc.php'; // Hier komt natuurlijk de naam van hoe jij de pagina hebt genoemd
Zoals te zien zal zijn in de var dump heb je een array tot je beschikking met daarin de verschillende waardes:
<?php
$aCounter['visits']['today'] // Het aantal unieke bezoekers vandaag
$aCounter['visits']['total'] // Het aantal unieke bezoekers totaal
$aCounter['hits']['today'] // Het aantal hits vandaag
$aCounter['hits']['total'] // Het aantal hits totaal
<?php $aCounter['visits']['today'] // Het aantal unieke bezoekers vandaag $aCounter['visits']['total'] // Het aantal unieke bezoekers totaal $aCounter['hits']['today'] // Het aantal hits vandaag $aCounter['hits']['total'] // Het aantal hits totaal
Die variabelen kunnen dus gebruikt worden.
Mocht je zelf de naam van de tabel (default: counter) willen aanpassen dan dien je de query aan te passen die je eenmalig moet uitvoeren om de tabel aan te maken. Daarna kan je in het counter bestand de waarde van $aCounter['config']['table'] aanpassen naar de naam die jij wilt voor de tabel. Download code (.txt)
|
|
Stemmen |
Niet ingelogd. |
|