Walaupun banyak widget/website yang menyediakan layanan Statistic Counter, tapi tak ada salahnya kita harus belajar bagaimana cara membuatnya atau minimal mengetahui cara kerjanya. Kita sebagai manusia normal tentunya ingin berkembang dan mengembangkan diri bukan? baik secara ilmu pengetahuan yang mengingkat dan lain sebagainya.
Demo dalam tutorial ini "Membuat Statistic Counter Menggunakan PHP" dapat dilihat dibawah ini.
Tutorial ini dibuat dengan kolaborasi PHP sebagai bahasa pengelola dan mySql sebagai database. Cara kerjanya dengan memanfaatkan user yang sedang mengakses situs kita, lalu secara otomatis mengirimkan query "true" ke dalam table database sehingga database akan terupdate secara otomatis lalu menampilkannya pada website kita. Simpel bukan?
Langkah-langkah membuatnya dan cara kerja script dapat dilihat berikut ini :
- Kode berikut berfungsi mendefinisikan konstanta database agar mudah menuliskan beberapa info dasar database seperti username, password, nama database dan host
- Setelah itu script akan melakukan koneksi ke database
- Setelah kedua prosedur diatas terpenuhi, script akan melakukan pemindaian IP Address, pengecekan IP Address, lalu insert atau update query ke database
- Setelah prosedur no.3 dilakukan, selanjutnya script akan melakukan pengisian variabel dari hasil query dari database
- Lalu selanjutnya akan menampilkan hasil dari query database diatas.
- Selesai. Hasilnya dapat anda lihat ditas. Atau dapat Anda download Full Sourcecodenya disini [Download Full Source Code]
/** Mendifinisikan USERNAME, PASSWORD, HOST, DATABASE, dan URL WEBSITE **/ define ("USERNAME", "root"); //USERNAME define ("PASSWORD", ""); //PASSWORD define ("HOST", "localhost"); //HOST define ("DATABASE", "counter"); //DATABASE define ("URL","http://localhost/counter"); //Setting URL
/** Koneksi dan memilih database di server **/ mysql_connect(HOST,USERNAME,PASSWORD) or die("Login Failed!"); mysql_select_db(DATABASE) or die("Database Wrong!"); $sql=mysql_query("SELECT * FROM counter"); if(!$sql){ $query = "CREATE TABLE IF NOT EXISTS `counter` ( `ip` varchar(20) NOT NULL DEFAULT '', `tanggal` date NOT NULL, `hits` int(10) NOT NULL DEFAULT '1', `online` varchar(255) NOT NULL DEFAULT '' ) ENGINE=InnoDB"; mysql_query($query); die("Please Try Again. Refresh your homepage"); }
$ip = $_SERVER['REMOTE_ADDR']; // Mendapatkan IP komputer user $tanggal = date("Ymd"); // Mendapatkan tanggal sekarang $waktu = time(); // // Mengecek berdasarkan IP, apakah user sudah pernah mengakses hari ini atau belum $s = mysql_query("SELECT * FROM counter WHERE ip='$ip' AND tanggal='$tanggal'"); // Kalau belum ada, simpan data user tersebut ke database if(mysql_num_rows($s) == 0){ mysql_query("INSERT INTO counter(ip, tanggal, hits, online) VALUES('$ip','$tanggal','1','$waktu')"); } else{ mysql_query("UPDATE counter SET hits=hits+1, online='$waktu' WHERE ip='$ip' AND tanggal='$tanggal'"); }
$pengunjung = mysql_num_rows(mysql_query("SELECT * FROM counter WHERE tanggal='$tanggal' GROUP BY ip")); $totalpengunjung = mysql_result(mysql_query("SELECT COUNT(hits) FROM counter"), 0); $hits = mysql_fetch_assoc(mysql_query("SELECT SUM(hits) as hitstoday FROM counter WHERE tanggal='$tanggal' GROUP BY tanggal")); $totalhits = mysql_result(mysql_query("SELECT SUM(hits) FROM counter"), 0); $tothitsgbr = mysql_result(mysql_query("SELECT SUM(hits) FROM counter"), 0); $bataswaktu = time() - 300; $pengunjungonline = mysql_num_rows(mysql_query("SELECT * FROM counter WHERE online > '$bataswaktu'")); $img = '/images/'; $path = URL; $ext = ".png"; $reply = '<img src="'.$path.'/images/transparent.gif" /> ';
$tothitsgbr = sprintf("%08d", $tothitsgbr); for ( $i = 0; $i <= 9; $i++ ){ $tothitsgbr = str_replace($i, "<img src='$path$img$i$ext' alt='$i'>", $tothitsgbr); } echo" <style> #statistic{ border:1px solid #ddd; padding:5px; margin:2px; width:195px; background-color:#f0f0f0; } table{ font: normal normal 13px sans-serif; align:left; } #spam{ border:1px solid #ddd; padding:5px; margin:5px; width:200px; } </style>"; echo " <div id=statistic> <table> <thead> <tr><center>$tothitsgbr</center></tr> <thead> <tbody> <tr> <td class='today'>$reply Today Visitor</td> <td>: $pengunjung</td> </tr> <tr> <td class='online'>$reply Online</td> <td>: $pengunjungonline</td> </tr> </tbody> </table> </div> ";
Statistic Counter ini diadopsi dari CMS Lokomedia dengan sedikit modifikasi pada style dan kode program.