
Merhaba arkadaşlar bu yazımda sizlere PDO kullanarak bir ziyaretçi sayacı yapmayı göstereceğim
Öncelikle bir sayac adında veri tabanı açalım ve aşağıdaki sql sorgusunu çalıştıralım.
CREATE TABLE IF NOT EXISTS `hit` (
`gun` int(11) NOT NULL,
`ay` int(11) NOT NULL,
`yil` int(11) NOT NULL,
`simdi` int(11) NOT NULL,
`sayac` int(11) NOT NULL,
`ip` varchar(100) NOT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
Ardından Bir php dosyası açalım ve kodlarımızı yazmaya başlayalım.
Herzamanki gibi kodların içine gerekli açıklamayı yazdım anlamadığınız yerleri sorabilirsiniz.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
.sayac{
background:#ccc repeat;
border:1px dashed #555;
border-radius:10px;
color:#000;
width:300px;
margin:0px auto;
}
p{
border-bottom: 3px solid #fff;
}
</style>
<?php
function vehbiakdoganSayac()
{
$host='mysql.hostinger.web.tr'; // mysql host
$user='u622378237_admin'; // kullanıcı adı
$pass='leke0535332'; // şifresi
$vt='u622378237_admin'; // veri tabanı adı
try {
$db = new PDO('mysql:host='.$host.';dbname='.$vt, $user, $pass);
} catch (PDOException $v) {
echo 'Bağlantı Başarısız: ' . $v->getMessage();
}
// Veri tabanı bağlantımızı yaptık
$bugun=date("d"); // bugünün tarihi
$ay=date("m"); // bu ay
$yil=date("Y"); // bu yıl
$onlineSuresi=time()-2*60*60; // iki dakika aktif olmazsa onlineden düşecek
$ip=$_SERVER['REMOTE_ADDR']; // ziyaretçinin ip si
$bugunGiris=$db->query("SELECT * FROM hit WHERE ip='$ip' AND gun='$bugun'")->rowCount(); // bugün o ip ile girilmişmi
if($bugunGiris!=0){ // yani bugün girilmişse
$al=$db->query("SELECT * FROM `hit` WHERE `ip`='".$ip."' AND `gun`='".$bugun."'")->fetch();
$guncelle=$db->query("UPDATE `hit` SET `sayac`='".($al['sayac']+1)."' WHERE id='".$al['id']."'"); // çoğulu 1 artırdık
}else{ // griş yapılmamışsa kaydettirelim
$db->query("INSERT INTO `hit` SET `gun`='$bugun', `ay`='$ay', `yil`='$yil', simdi='".time()."', sayac='1',ip='$ip'");
}
// evet sıra geldi online, tekil ve çoğulu Göstermeye
// online Kişi
$online=$db->query("SELECT * FROM hit WHERE simdi>='$onlineSuresi'")->rowCount(); // onlnie kişilerimiz
// çoğul hitler
$bugunx=$db->query("SELECT SUM(sayac) FROM hit WHERE gun='$bugun' AND ay='$ay' AND yil='$yil' ORDER BY id desc")->fetch();
$bugun_cogul=$bugunx['SUM(sayac)']; // bugün çoğul
$dunx=$db->query("SELECT SUM(sayac) FROM hit WHERE gun='".($bugun-1)."' AND ay='$ay' AND yil='$yil' ORDER BY id desc")->fetch();
$dun_cogul=$dunx['SUM(sayac)']; // dün Çoğul
$ayx=$db->query("SELECT SUM(sayac) FROM hit WHERE ay='$ay' AND yil='$yil' ORDER BY id desc")->fetch();
$buay_cogul=$ayx['SUM(sayac)']; // bu ay çoğul
$toplamx=$db->query("SELECT SUM(sayac) FROM hit ORDER BY id desc")->fetch();
$toplam_cogul=$toplamx['SUM(sayac)']; // toplam çoğulumuz
// tekil hitler
$bugun_tekil=$db->query("SELECT * FROM hit WHERE gun='$bugun' AND ay='$ay' AND yil='$yil'")->rowCount(); // bugün tekil
$dun_tekil=$db->query("SELECT * FROM hit WHERE gun='".($bugun-1)."' AND ay='$ay' AND yil='$yil'")->rowCount(); // dün tekil
$buay_tekil=$db->query("SELECT * FROM hit WHERE ay='$ay' AND yil='$yil'")->rowCount(); // dün tekil
$toplam_tekil=$db->query("SELECT * FROM hit")->rowCount(); // dün tekil
echo"<div class='sayac'>
<p>Online: $online </p>
<p>Bugün Tekil: $bugun_tekil</p>
<p>Bugün Çoğul: $bugun_cogul</p>
<p>Dün Tekil: $dun_tekil</p>
<p>Dün Çoğul: $dun_cogul</p>
<p>Buay Tekil: $buay_tekil</p>
<p>Buay Çoğul: $buay_cogul</p>
<p>Toplam Tekil: $toplam_tekil</p>
<p>Toplam Çoğul: $toplam_cogul</p>
</div>";
}
vehbiakdoganSayac();
?>
Evet arkadaşlar ben sayfamızı ziyaretci-sayaci.php diye kaydettim . ziyaretci-sayaci.php sayfamızı çalıştırınca ekrana hit bilgileri gelecektir. uygulamanın indirme linkine Buradan Ulaşabilirsiniz.
Paylaşım için teşekkür ederim fakat şöyle bir hata alıyorum,
YanıtlaSilFatal error: Call to a member function query() on a non-object in