|
|
|
ช่วยแนะนำ ดู และปรับแต่ง โค๊ด php counter ตัวนับสถิติเว็บไซต์ให้หน่อยครับ |
|
|
|
|
|
|
|
ช่วยหน่อยนะครับ Admin พอดีเขียนตัวนับสถิติเว็บไซต์ลงฐานข้อมูล (เจอโค๊ดมา)
ตามนี้ (จัดการปรับปรุงเรียบร้อย)
Code (PHP)
<?php
include "config.php";
$date = date("d-m-Y");
$ip = $_SERVER["REMOTE_ADDR"];
$sql = "INSERT INTO tb_counter(date_visit, ip_visit) VALUES('$date', '$ip')";
mysql_query($sql);
//Page View//
$sql = "SELECT count(ip_visit) AS visit FROM tb_counter";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$visit = $row[visit];
$id_visit = $row[id_visit];
$pageview = str_pad($view,9);
//Today Page//
$today = date("d-m-Y");
$sql = "SELECT count(DISTINCT(ip_visit)) AS visit FROM tb_counter WHERE date_visit = '$today'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$visit = $row[visit];
$id_visit = $row[id_visit];
$today = str_pad($visit,9);
//Yesterday Page//
$yestday = date("d-m-Y",strtotime("-1 day"));
$sql = "SELECT count(DISTINCT(ip_visit)) AS visit FROM tb_counter WHERE date_visit = '$yestday'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$visit = $row[visit];
$id_visit = $row[id_visit];
$yesterday = str_pad($visit,9);
//Lastmonth Page//
$lastmon = date("m-Y",strtotime("-1 month"));
$sql = "SELECT count(DISTINCT(ip_visit)) AS visit FROM tb_counter WHERE date_visit = '$lastmon'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$visit = $row[visit];
$id_visit = $row[id_visit];
$lastmonth = str_pad($visit,9);
//Close MySQL//
mysql_close();
?>
ใช้งานได้ตามปกติ สุดยอดด้วย
แต่อย่างนั้น ผมก็ไม่พอใจ เพราะกลัวว่า นานไป ฐานข้อมูลจะเต็มได้ เพราะว่ามันเพิ่มข้อมูลลงฐานข้อมูลทุกครั้งที่คลิก เลยเห็นว่า แบบนี้เจ๋ง แต่ระยะยาวคงไม่ไหวแน่
หรือใครพอมีวิธีอื่นช่วยแนะนำหน่อยนะครับ
ในใจคิดว่า อยากจะให้เป็นแบบนี้
(0) นับการคลิกเพจ โดยการบันทึกเฉพาะจำนวนคลิกลงไปในฐานข้อมูลแค่ แถว เดียว (ไม่มีการเพิ่มข้อมูลลงฐานข้อมูลอีก) เป็นการอัพเดทแทนเพิ่มข้อมูลลงในฐานข้อมูล
(1) นับจำนวน ip ที่ซ้ำกันเพียง 1 ครั้งต่อวัน (หากเปิด บราวเซอร์ ต่างชนิดกันให้นับ ip เดิมอีกครั้ง และบันทึกข้อมูลลงฐานข้อมูล)
(2) 1 วันผ่านไป เมื่อ ip เดิมมากเข้าชมเว็บอีกครั้ง ให้นับ 1 และบันทึกข้อมูลลงฐานข้อมูล ( เหมือนข้อ (1) )
ทั้ง 3 ข้อ อยากให้สามารถปรับแต่งได้เหมือนโค๊ดที่แปะมาด้วยครับ เพื่อจะได้นำไปประยุกต์ใช้ต่อไป
แค่นี้แหละครับ ไม่ค่อยเก่งการเขียนเท่าไหร่ ก็คิดได้แค่นี้แหละครับ ขอขอบคุณล่วงหน้าครับ และหวังว่า กระทู้นี้คงจะมีประโยชน์กับสมาชิกหลายท่านนะครับ
Tag : PHP, MySQL, Windows
|
|
|
|
|
|
Date :
2013-07-16 16:15:54 |
By :
phaithoon |
View :
3220 |
Reply :
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จัดไปครับ
|
|
|
|
|
Date :
2013-07-16 17:07:25 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สุดท้ายก็ได้ซะที เมื่อได้แล้ว ผมก็ไม่หวงห้ามล่ะครับ จัดแจกไปเลย ฟรี!
สร้างตารางบนฐานข้อมูล ไฟล์ชื่อ DB_countSQL.sql
Code (SQL)
--
-- โครงสร้างตาราง `tb_counter`
--
CREATE TABLE `tb_counter` (
`date_visit` varchar(30) NOT NULL,
`ip_visit` varchar(30) NOT NULL,
`agent_visit` varchar(30) NOT NULL,
`count_visit` int(12) NOT NULL default '1'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- โครงสร้างตาราง `tb_pageview`
--
CREATE TABLE `tb_pageview` (
`view` int(12) NOT NULL default '1'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- dump ตาราง `tb_pageview`
--
INSERT INTO `tb_pageview` VALUES (1);
==ไฟล์เชื่อมต่อฐานข้อมูล config.php
Code (PHP)
<?php
$host = "localhost";
$username = "xxx"; //ชื่อผู้ใช้งานฐานข้อมูล เช่น "root"
$password = "xxx"; //รหัสผ่านผู้ใช้งานฐานข้อมูล เช่น "1234"
$dbname = "xxx"; //ชื่อฐานข้อมูล เช่น "test"
$dbconnect = mysql_connect ("$host","$username","$password") or die (mysql_error());
mysql_select_db($dbname,$dbconnect);
mysql_query("SET NAMES UTF8");
?>
==ไฟล์สำหรับจัดการข้อมูล visitor.php
Code (PHP)
<?php
include "config.php";
//Page View//
$sql = "SELECT * FROM tb_pageview";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$view = $row[view];
//Update Pageview//
$view_new = $view +1;
$sqlview = "UPDATE tb_pageview SET view='$view_new'";
$resultview = mysql_query($sqlview);
$pageview = str_pad($view,12);
//Check IP on DATE//
date_default_timezone_set("Asia/Bangkok");
$date = date("Y-m-d");
$ip = $_SERVER["REMOTE_ADDR"];
$agent = getenv("HTTP_USER_AGENT");
$sql_ctime ="SELECT * FROM tb_counter WHERE date_visit ='$date'";
$result_ctime = mysql_query($sql_ctime);
$row_ctime = mysql_fetch_array($result_ctime);
if ($row_ctime <= 0) {
$sql_counter = "INSERT INTO tb_counter (date_visit, ip_visit, agent_visit, count_visit) VALUES('$date', '$ip', '$agent', '1')";
mysql_query($sql_counter);
}
//Today Page//
$today = date("Y-m-d");
$sql = "SELECT count(DISTINCT(ip_visit)) AS visit FROM tb_counter WHERE date_visit = '$today'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$visit = $row[visit];
$today = str_pad($visit,12);
//Yesterday Page//
$yestday = date("Y-m-d",strtotime("-1 day"));
$sql = "SELECT SUM(count_visit) AS visit FROM tb_counter WHERE date_visit = '$yestday'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$visit = $row[visit];
$yesterday = str_pad($visit,12);
//Thismonth Page//
$thismon = date("Y-m");
$sql = "SELECT SUM(count_visit) AS visit FROM tb_counter WHERE DATE_FORMAT(date_visit, '%Y-%m') = '$thismon'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$visit = $row[visit];
$thismonth = str_pad($visit,12);
//Lastmonth Page//
$lastmon = date("Y-m",strtotime("-1 month"));
$sql = "SELECT SUM(count_visit) AS visit FROM tb_counter WHERE DATE_FORMAT(date_visit, '%Y-%m') = '$lastmon'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$visit = $row[visit];
$lastmonth = str_pad($visit,12);
//Total Visit//
$sql = "SELECT SUM(count_visit) AS visit FROM tb_counter";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$visit = $row[visit];
$total = str_pad($visit,12);
//Close MySQL//
mysql_close();
?>
==ไฟล์เรียกใช้งาน index.php
Code (PHP)
<div id="counter_body">
<div class="bgbutton">
<div class="counter_stat">สถิติการเข้าชมเว็บไชต์</div>
</div><!--end bgbutton-->
<? include "visitor.php"; ?>
<table><tr>
<td><img src="images/stat.png">Page view:</td><td class="stat"><?=$pageview;?></td></tr>
<tr><td><img src="images/stat_today.png">Today:</td><td class="stat"><?=$today;?></td></tr>
<tr><td><img src="images/stat_today.png">Yesterday:</td><td class="stat"><?=$yesterday;?></td></tr>
<tr><td><img src="images/stat_today.png">This month:</td><td class="stat"><?=$thismonth;?></td></tr>
<tr><td><img src="images/stat_today.png">Last month:</td><td class="stat"><?=$lastmonth;?></td></tr>
<tr><td><img src="images/stat_today.png">Total visit:</td><td class="stat"><?=$total;?></td></tr>
</table>
</div><!--end counter_body-->
รับประกันการใช้งานได้ 99.99% (ยังไม่เคยทดลองบนโฮสต์จริง)
หวังว่าหลายท่านคงจะถูกใจครับ
ขอกำลังใจด้วยนะครับ
|
|
|
|
|
Date :
2013-07-17 00:07:48 |
By :
phaithoon |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2013-07-17 06:07:22 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ให้กำลังใจ เอาไว้จะขอไปใช้ ตอนนี้ให้กำลังใจไปก่อน
|
|
|
|
|
Date :
2013-07-17 16:38:42 |
By :
compiak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
โค้ดนี้ ใช้ได้ดี เลยค่ะ
เอาไปดัดแปลงนิ๊ดหน่อยให้เข้ากับหน้าเพจเรา ขอบคุณนะค๊ะ
|
|
|
|
|
Date :
2014-11-03 14:14:05 |
By :
powerdream |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2014-11-03 14:50:28 |
By :
nirunsu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|