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&#40;"Expires&#58; ".GMDate&#40;"D, d M Y H&#58;i&#58;s"&#41;." GMT"&#41;; //aby se nacitaly spravne hodnoty
$SQL&#91;'machine'&#93;="mysqlserver";
$SQL&#91;'db'&#93;="jmenodatabaze";
$SQL&#91;'user'&#93;="mysqkuzivatel";
$SQL&#91;'pass'&#93;="mysqlheslo";

$SQL&#91;'spojeni'&#93; = MySQL_Connect&#40;$SQL&#91;"machine"&#93;, $SQL&#91;"user"&#93;, $SQL&#91;"pass"&#93;&#41;;
$SQL&#91;'hit'&#93; = MySQL_Select_DB&#40;$SQL&#91;"db"&#93;&#41;;

$domain = "jey.wz.cz"; //text, ktery se vyskytuje v kazde url na tvych strankach
$IP = $REMOTE_ADDR;
//echo $HTTP_REFERER;

function getlastdate&#40;&#41; //Vrati naposledy pouzite datum &#40;jen den&#41;, nebo -1 pokud je dnesni tabulka prazdna
&#123;
global $SQL;

$prikaz = "SELECT datum from today where 1 LIMIT 1";
$vysledek = MySQL_Query&#40;$prikaz, $SQL&#91;'spojeni'&#93;&#41;;
echo mysql_error&#40;&#41;;
if &#40;$zaznam = mysql_fetch_array&#40;$vysledek&#41;&#41;
	return substr&#40;$zaznam&#91;'datum'&#93;, 8,2&#41;;
else return -1;
&#125;

function IPtoday&#40;$IP&#41; //rekne jestli uz dneska nekdo z dane IP tady byl
&#123;
global $SQL;

$prikaz = "SELECT count&#40;*&#41; FROM today WHERE IP = '$IP'";
$vysledek = MySQL_query&#40;$prikaz, $SQL&#91;'spojeni'&#93;&#41;;
$zaznam = MySQL_fetch_array&#40;$vysledek&#41;;
return $zaznam&#91;0&#93;;
&#125;

function zaloguj&#40;&#41; //Zaloguje hodnoty -pri prehoupnuti data
&#123;
global $SQL, $den;

$prikaz = "SELECT sum&#40;shows&#41;, count&#40;DISTINCT IP&#41;, sum&#40;visits&#41; FROM today where 1";
$vysledek = MySQL_Query&#40;$prikaz, $SQL&#91;'spojeni'&#93;&#41;;
$zaznam = mysql_fetch_array&#40;$vysledek&#41;;
$shows = $zaznam&#91;0&#93;;
$IPs = $zaznam&#91;1&#93;;
$visits = $zaznam&#91;2&#93;;


$datum = date&#40;"Y-m-"&#41;;
$datum .= $den;
$prikaz = "INSERT INTO log &#40;datum, shows, IPs, visits&#41; VALUES &#40;'$datum', '$shows', '$IPs', '$visits'&#41;";
$vysledek = mysql_query&#40;$prikaz, $SQL&#91;'spojeni'&#93;&#41;;

$prikaz = "DELETE FROM today";
$vysledek = mysql_query&#40;$prikaz, $SQL&#91;'spojeni'&#93;&#41;;

&#125;


function getdneshows&#40;&#41;
&#123;
global $SQL;

$prikaz = "SELECT sum&#40;shows&#41; FROM today where 1";
$vysledek = mysql_query&#40;$prikaz, $SQL&#91;'spojeni'&#93;&#41;;
$zaznam = mysql_fetch_array&#40;$vysledek&#41;;
return $zaznam&#91;0&#93;;
&#125;

function getdnesvisits&#40;&#41;
&#123;
global $SQL;

$prikaz = "SELECT sum&#40;visits&#41; FROM today where 1";
$vysledek = mysql_query&#40;$prikaz, $SQL&#91;'spojeni'&#93;&#41;;
$zaznam = mysql_fetch_array&#40;$vysledek&#41;;
return $zaznam&#91;0&#93;;
&#125;

function getdnesIPs&#40;&#41;
&#123;
global $SQL;

$prikaz = "SELECT count&#40;distinct IP&#41; FROM today where 1";
$vysledek = mysql_query&#40;$prikaz, $SQL&#91;'spojeni'&#93;&#41;;
$zaznam = mysql_fetch_array&#40;$vysledek&#41;;
return $zaznam&#91;0&#93;;
&#125;

function getshows&#40;$date&#41;
&#123;
global $SQL;

$prikaz = "SELECT sum&#40;shows&#41; FROM log where  datum = '$date'";
$vysledek = mysql_query&#40;$prikaz, $SQL&#91;'spojeni'&#93;&#41;;
$zaznam = mysql_fetch_array&#40;$vysledek&#41;;
return $zaznam&#91;0&#93;;
&#125;

function getvisits&#40;$date&#41;
&#123;
global $SQL;

$prikaz = "SELECT sum&#40;visits&#41; FROM log where  datum = '$date'";
$vysledek = mysql_query&#40;$prikaz, $SQL&#91;'spojeni'&#93;&#41;;
$zaznam = mysql_fetch_array&#40;$vysledek&#41;;
return $zaznam&#91;0&#93;;
&#125;

function getIPs&#40;$date&#41;
&#123;
global $SQL;

$prikaz = "SELECT count&#40;distinct IP&#41; FROM log where datum = '$date'";
$vysledek = mysql_query&#40;$prikaz, $SQL&#91;'spojeni'&#93;&#41;;
$zaznam = mysql_fetch_array&#40;$vysledek&#41;;
return $zaznam&#91;0&#93;;
&#125;


$den = getlastdate&#40;&#41;; //jaky byl posledni den?

if &#40;&#40;$den!=-1&#41; && &#40;$den != date&#40;"d"&#41;&#41;&#41; //tabulka neni prazdna a lisi se datum od dnesniho
	zaloguj&#40;&#41;;


$IPtoday = IPtoday&#40;$IP&#41;; //DNes UZ z teto IP nekdo byl
$newvisit = strstr&#40;$HTTP_REFERER, $domain&#41;?0&#58;1; //jestli to neni klik v ramci domeny

if &#40;$IPtoday&#41; //pokud uz nekdo dneska z te IP byl, je to jen UPdate radku db.
&#123;

$msg .= " IP TODAY = YES |";
if &#40;$newvisit&#41; // pokud je to nova navsteva webu, tak pridame i do visits
	&#123;
	$prikaz = "UPDATE today SET shows = shows + 1, visits = visits + 1 WHERE IP = '$IP'";
	&#125;
else //jinak jen do shows
	&#123;
	$prikaz = "UPDATE today SET shows = shows + 1 WHERE IP = '$IP'";
	&#125;
&#125;
else //kdyz je dnes z te IP prvni, tak vlozime novy radek, s visits a shows 1.
&#123;
	$prikaz = "INSERT INTO today &#40;IP, datum, shows, visits&#41; VALUES &#40;'$IP', now&#40;&#41;, 1, 1&#41;";
&#125;
$vysledek = mysql_query&#40;$prikaz, $SQL&#91;'spojeni'&#93;&#41;; //pak ten prikaz provedem;
?>
KtK.