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:
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: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;
KtK.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; ?>





Odpověď s citací