Takze: struktura dat je takova: rozlisuji se shows - jakekoliv zobrazeni nektere tve stranky,
visits, tj zobrazeni, kdy predtim nebyl na tvem webu, tj jeden navstevnik da 1 visit, a kdyz dal proliza web, tak uz to visity nepridava, ale shows jo. -u kazde IP jsou tyhle 2 udaje.
jsou dve tabuky, today, a log. V today se drzi data za dnesek, v logu se drzi za kazdy den pocet IP, visits a shows.
K vystourani dnesnich udaju jsou fukce getdnesvisits() a podobne. getshows($date) atd jsou pro vystourani podle data z logu, datum je ve formatu YYYY-MM-DD
vytvoreni tech tabulek:
Kód:
CREATE TABLE `log` (
`datum` date NOT NULL default '0000-00-00',
`shows` bigint(20) NOT NULL default '0',
`IPs` int(11) NOT NULL default '0',
`visits` int(11) NOT NULL default '0'
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Table structure for table `today`
#
# Creation: Aug 25, 2003 at 07:06 PM
# Last update: Aug 25, 2003 at 07:06 PM
#
CREATE TABLE `today` (
`IP` varchar(15) NOT NULL default '',
`shows` bigint(20) NOT NULL default '0',
`visits` int(11) NOT NULL default '0',
`datum` date NOT NULL default '0000-00-00'
) TYPE=MyISAM;
tady je pak kod samotnyho pocitadala, mas tam i komentare, snad je to dostatecne jasny. -az to budes aplikovat, nezapomen si upravit ty prihlasovaci udaje v poli $SQL[] a promennou $domain podle aktualnich dat.
Kód:
<?
HEADER("Expires: ".GMDate("D, d M Y H:i:s")." GMT"); //aby se nacitaly spravne hodnoty
$SQL['machine']="mysqlserver";
$SQL['db']="jmenodatabaze";
$SQL['user']="mysqkuzivatel";
$SQL['pass']="mysqlheslo";
$SQL['spojeni'] = MySQL_Connect($SQL["machine"], $SQL["user"], $SQL["pass"]);
$SQL['hit'] = MySQL_Select_DB($SQL["db"]);
$domain = "jey.wz.cz"; //text, ktery se vyskytuje v kazde url na tvych strankach
$IP = $REMOTE_ADDR;
//echo $HTTP_REFERER;
function getlastdate() //Vrati naposledy pouzite datum (jen den), nebo -1 pokud je dnesni tabulka prazdna
{
global $SQL;
$prikaz = "SELECT datum from today where 1 LIMIT 1";
$vysledek = MySQL_Query($prikaz, $SQL['spojeni']);
echo mysql_error();
if ($zaznam = mysql_fetch_array($vysledek))
return substr($zaznam['datum'], 8,2);
else return -1;
}
function IPtoday($IP) //rekne jestli uz dneska nekdo z dane IP tady byl
{
global $SQL;
$prikaz = "SELECT count(*) FROM today WHERE IP = '$IP'";
$vysledek = MySQL_query($prikaz, $SQL['spojeni']);
$zaznam = MySQL_fetch_array($vysledek);
return $zaznam[0];
}
function zaloguj() //Zaloguje hodnoty -pri prehoupnuti data
{
global $SQL, $den;
$prikaz = "SELECT sum(shows), count(DISTINCT IP), sum(visits) FROM today where 1";
$vysledek = MySQL_Query($prikaz, $SQL['spojeni']);
$zaznam = mysql_fetch_array($vysledek);
$shows = $zaznam[0];
$IPs = $zaznam[1];
$visits = $zaznam[2];
$datum = date("Y-m-");
$datum .= $den;
$prikaz = "INSERT INTO log (datum, shows, IPs, visits) VALUES ('$datum', '$shows', '$IPs', '$visits')";
$vysledek = mysql_query($prikaz, $SQL['spojeni']);
$prikaz = "DELETE FROM today";
$vysledek = mysql_query($prikaz, $SQL['spojeni']);
}
function getdneshows()
{
global $SQL;
$prikaz = "SELECT sum(shows) FROM today where 1";
$vysledek = mysql_query($prikaz, $SQL['spojeni']);
$zaznam = mysql_fetch_array($vysledek);
return $zaznam[0];
}
function getdnesvisits()
{
global $SQL;
$prikaz = "SELECT sum(visits) FROM today where 1";
$vysledek = mysql_query($prikaz, $SQL['spojeni']);
$zaznam = mysql_fetch_array($vysledek);
return $zaznam[0];
}
function getdnesIPs()
{
global $SQL;
$prikaz = "SELECT count(distinct IP) FROM today where 1";
$vysledek = mysql_query($prikaz, $SQL['spojeni']);
$zaznam = mysql_fetch_array($vysledek);
return $zaznam[0];
}
function getshows($date)
{
global $SQL;
$prikaz = "SELECT sum(shows) FROM log where datum = '$date'";
$vysledek = mysql_query($prikaz, $SQL['spojeni']);
$zaznam = mysql_fetch_array($vysledek);
return $zaznam[0];
}
function getvisits($date)
{
global $SQL;
$prikaz = "SELECT sum(visits) FROM log where datum = '$date'";
$vysledek = mysql_query($prikaz, $SQL['spojeni']);
$zaznam = mysql_fetch_array($vysledek);
return $zaznam[0];
}
function getIPs($date)
{
global $SQL;
$prikaz = "SELECT count(distinct IP) FROM log where datum = '$date'";
$vysledek = mysql_query($prikaz, $SQL['spojeni']);
$zaznam = mysql_fetch_array($vysledek);
return $zaznam[0];
}
$den = getlastdate(); //jaky byl posledni den?
if (($den!=-1) && ($den != date("d"))) //tabulka neni prazdna a lisi se datum od dnesniho
zaloguj();
$IPtoday = IPtoday($IP); //DNes UZ z teto IP nekdo byl
$newvisit = strstr($HTTP_REFERER, $domain)?0:1; //jestli to neni klik v ramci domeny
if ($IPtoday) //pokud uz nekdo dneska z te IP byl, je to jen UPdate radku db.
{
$msg .= " IP TODAY = YES |";
if ($newvisit) // pokud je to nova navsteva webu, tak pridame i do visits
{
$prikaz = "UPDATE today SET shows = shows + 1, visits = visits + 1 WHERE IP = '$IP'";
}
else //jinak jen do shows
{
$prikaz = "UPDATE today SET shows = shows + 1 WHERE IP = '$IP'";
}
}
else //kdyz je dnes z te IP prvni, tak vlozime novy radek, s visits a shows 1.
{
$prikaz = "INSERT INTO today (IP, datum, shows, visits) VALUES ('$IP', now(), 1, 1)";
}
$vysledek = mysql_query($prikaz, $SQL['spojeni']); //pak ten prikaz provedem;
?>
KtK.