CREATE TABLE `sayac_tablom` (
`id` int(1) NOT NULL auto_increment,
`tekil_hit` int(15) NOT NULL,
`cogul_hit` int(15) NOT NULL,
`gun` int(5) NOT NULL,
`ay` int(3) NOT NULL,
`yil` int(3) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci AUTO_INCREMENT=30 ;
INSERT INTO `sayac_tablom` VALUES (29, 1, 47, 6, 3, 2009);
INSERT INTO `sayac_tablom` VALUES (28, 2, 355, 5, 3, 2009);
INSERT INTO `sayac_tablom` VALUES (27, 2, 68, 4, 3, 2009);
<?php
function sayac(){
global $db;
$ip = $_SERVER['REMOTE_ADDR'];
$tarih = time();
$gun = date('d');
$ay = date('m');
$yil = date('Y');
$zamanasimi = time()-86400;
$db->query("Delete From ip_tablom where zaman < ".$zamanasimi);
$ip_sayi = $db->get_var("Select Count(ip) From ip_tablom where ip='$ip'");
$hit = $db->get_var("select Count(tekil_hit) from sayac_tablom where gun='$gun' and ay= '$ay' and yil='$yil'");
if($hit>0)
{
if($ip_sayi == 0)
{
$ece->db("Insert Into ip_tablom (ip, zaman) Values ('$ip', '$tarih')");
$ece->db("update sayac_tablom
Set
tekil_hit=(tekil_hit+1), cogul_hit=(cogul_hit+1)
where
gun='$db' and ay='$ay' and yil='$yil'
");
}else
{
$db->query("update sayac_tablom
Set
cogul_hit=(cogul_hit+1)
where
gun='$gun' and ay='$ay' and yil='$yil'
");
}
}else
{
if($ip_sayi == 0)
{
$db->query("Insert Into ip_tablom (ip, zaman) Values ('$ip', '$tarih')");
}
$db->query("insert into sayac_tablom
(tekil_hit,cogul_hit,gun,ay,yil)
values
('1','1','$gun','$ay','$yil')
");
}
}
?>şöyle bir yapıda değiştirdim ayak üstü hata yoktur muhtemelen... belki uzun yoldur kısasını yapan çıkar

gun ay yil bazında server saatine göre kaydeder ...
kullanımı :
sayac();
dipnot: benim kullandığım bir veritabanı class ı olduğu için kodları bu şekilde yazmıştım ( $db->query(); gibi) .. onu normal mysql_query diye çevirmeniz lazım...