Long Live The King
ข้าพเจ้าไม่ได้มีพรสวรรค์พิเศษอะไร ข้าพเจ้าเพียงแต่มีความกระหายใคร่รู้อยู่เสมอ ทุ่มเทให้กับสิ่งที่อยากรู้ พากเพียรอย่างทรหด และสำรวจวิจารณ์ความรู้ของตัวเองเป็นประจำ ปัจจัยเหล่านี้คือที่มาของแนวคิดต่างๆ ของข้าพเจ้า .... อัลเบิร์ต ไอน์สไตน์

วันจันทร์ที่ 31 ธันวาคม พ.ศ. 2555

วิธีการทำ counter นับจำนวนผู้เข้าชมเว็บไซต์อย่างง่ายด้วย PHP SQL



วิธีการนับจำนวนผู้เยี่ยมชมเว็บไซต์ เมื่อมีการเปิดหน้าเพจเราจะทำการเก็บค่า วันเดือนปี, ip, ส่งไปบันทึกลงฐานข้อมูล เพื่อเอาไว้เช็คจำนวนการเปิดหน้าเพจ มีด้วยกัน 3แบบ 1. Open Page เช็คการเปิดหน้าเพจอย่างเดียวไม่สนใจว่าจะเป็น ip เดียวกันหรือคนละ ip นั่นคือจำนวนการอ่านในหน้าเพจแต่ละเพจนั่นเอง 2. Today เช็คจากจำนวน ip จะนับเฉพาะ ip ของวันปัจจุบันเท่านั้น ถ้าเป็น ip ที่ซ้ำกันนับให้แค่ 1 3. Total เช็คจากจำนวน ip ถ้าเป็น ip ที่ซ้ำกัน ไม่ว่าจะใช้คอมกี่เครื่องเปิดหน้าเพจ แต่ถ้าเป็น ip เดียวกันก็นับให้แค่ 1 เท่านั้น....

ขั้นตอนแรกท่านก็จะต้องสร้างฐานข้อมูลเพื่อทดสอบกันก่อน
SQL สร้างฐานข้อมูลเพื่อทดสอบ

CREATE TABLE `counter` (
`id_visit` int(11) NOT NULL AUTO_INCREMENT,
`date_visit` varchar(30) NOT NULL DEFAULT '',
`ip_visit` varchar(30) NOT NULL DEFAULT '',
`visit` int(5) NOT NULL DEFAULT 0,
PRIMARY KEY (`id_visit`)
);

ขั้นตอนที่2 เก็บค่าต่างๆเพื่อบันทึกลงฐานข้อมูล ในส่วนนี้ท่านสามารถนำไปแปะไว้ตามเพจต่างๆได้ เพื่อเช็ค
จำนวนการอ่านในหน้าเพจนั่นๆ แต่ถ้าเพจของท่านเปิดลิงค์ด้วย id ท่านก็เก็บ id บันทึกลงไปด้วย
พอตอนนับเราก็อ้างถึง id นั้นๆไป ในส่วนของบทความนี้เป็นแบบเบสิกเท่านั้นครับ...

Code: สำหรับบันทึกข้อมูล

include 'config.php';
$date  =date("d-m-Y");
$ip = $_SERVER['REMOTE_ADDR'];
$sql="INSERT INTO counter(date_visit,ip_visit,visit)VALUES
('$date', '$ip', '1')";
mysql_query($sql);
?>

ขั้นตอนที่3 ส่วนที่1

1. Open Page เช็คการเปิดหน้าเพจอย่างเดียวไม่สนใจว่าจะเป็น ip เดียวกันหรือคนละ ip นั่นคือจำนวนการอ่านในหน้าเพจแต่ละเพจนั่นเอง Code:
 

<?php
$today = date('d-m-Y');
$sql="Select count(ip_visit) as visit From counter" ;
$result= mysql_query($sql);
$row = mysql_fetch_array($result);
$visit = $row[visit];
$id_visit = $row[id_vist];
$openpage =  str_pad($visit,6,0,str_pad_left); //ทำเป็นเลข 6 หลักด้วยการเติมเลข 
// 0 ข้างซ้าย

ขั้นตอนที่3 ส่วนที่2
2. Today เช็คจากจำนวน ip จะนับเฉพาะ ip ของวันปัจจุบันเท่านั้น ถ้าเป็น ip ที่ซ้ำกันนับให้แค่ 1
Code:

$today = date('d-m-Y');
$sql="Select count(DISTINCT(ip_visit)) as visit From counter
where date_visit = '$today'" ;
$result= mysql_query($sql);
$row = mysql_fetch_array($result);
$visit = $row[visit];
$id_visit = $row[id_vist];
$today = str_pad($visit,6,0,str_pad_left);

ขั้นตอนที่3 ส่วนที่3
3. Total เช็คจากจำนวน ip ถ้าเป็น ip ที่ซ้ำกัน ไม่ว่าจะใช้คอมกี่เครื่องเปิดหน้าเพจ แต่ถ้าเป็น ip
เดียวกันก็นับให้แค่ 1 เท่านั้น....
Code:

$sql="Select count(DISTINCT(ip_visit)) as visit From counter";
$result= mysql_query($sql);
$row = mysql_fetch_array($result);
$visit = $row[visit];
$total = str_pad($visit,6,0,str_pad_left);

ขั้นตอนที่4
นำส่วนที่ต้องการมาแสดงผล

<div style="width:230px;">
<div style="border:1px solid #dddddd;padding:5px;background:#eeeeee;">
<div id="showcounter">
<center>
<table>
<tr><td>Open Page : </td>
<td id="counter"bgcolor="#0252A1"><?=$openpage?></td></tr>
<tr><td>Today : </td>
<td id="counter"bgcolor="#1BAFD5"><?=$today?></td></tr>
<tr><td>Total : </td>
<td id="counter"bgcolor="#D96003"><?=$total?></td></tr>
</table>
</center>
</div>
</div>
</div>

บทความนี้ขอจบเพียงเท่านี้ครับ.....

Code ที่เสร็จแล้ว

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<style>
#showcounter{border:1px solid #999999;background:#ADE8F7;
padding:5px 9px 5px 5px;}
#counter{letter-spacing: 3px;font-weight:bold;color:#ffffff;}
td{padding:1px 5px 1px 5px;}
</style>
</head>
<body>

<?php
include 'config.php';
$date  =date("d-m-Y");
$ip = $_SERVER['REMOTE_ADDR'];
$sql="INSERT INTO counter(date_visit,ip_visit,visit)VALUES
('$date', '$ip', '1')";
mysql_query($sql);


/*----------------------OPEN PAGE----------------------*/
$today = date('d-m-Y');
$sql="Select count(ip_visit) as visit From counter" ;
$result= mysql_query($sql);
$row = mysql_fetch_array($result);
$visit = $row[visit];
$id_visit = $row[id_vist];
$openpage =  str_pad($visit,6,0,str_pad_left);

/*----------------------TODAY BY IP----------------------*/
$today = date('d-m-Y');
$sql="Select count(DISTINCT(ip_visit)) as visit From counter
where date_visit = '$today'" ;
$result= mysql_query($sql);
$row = mysql_fetch_array($result);
$visit = $row[visit];
$id_visit = $row[id_vist];
$today = str_pad($visit,6,0,str_pad_left);

/*----------------------TOTAL IP-----------------------*/
$sql="Select count(DISTINCT(ip_visit)) as visit From counter";
$result= mysql_query($sql);
$row = mysql_fetch_array($result);
$visit = $row[visit];
$total = str_pad($visit,6,0,str_pad_left);

?>
<div style="width:230px;">
<div style="border:1px solid #dddddd;padding:5px;background:#eeeeee;">
<div id="showcounter">
<center>
<table>
    
<tr><td>Open Page : </td><td id="counter"bgcolor="#0252A1">
<?=$openpage?></td></tr>

<tr><td>Today : </td><td id="counter"bgcolor="#1BAFD5">
<?=$today?></td></tr>

<tr><td>Total : </td><td id="counter"bgcolor="#D96003">
<?=$total?></td></tr>

</table>
</center>
</div>
</div>
</div>
</body>
</html>


11 ความคิดเห็น:

  1. ลองแล้วไม่นับครับ

    ตอบลบ
  2. ใครทำได้บ้างครับ ช่วยแนะนำหน่อยครับ ขอบพระคุณอย่างสูง

    ตอบลบ
  3. สร้างไฟล์ config.php แล้วเพิ่ม code การติดต่อฐานข้อมูลลงไปครับ

    ตอบลบ
  4. ผมคัดลอกตามตัวอย่าง มันไม่ show ในเวปครับ แต่มีข้อมูลเข้าฐานข้อมูล ตรงบรรทัดที่ เขียนว่า $visit = $row[vist]; ถูกหรือผิดครับ

    ตอบลบ
  5. จะแก้ไขอย่างไร ให้ show ในเวปได้ครับ

    ตอบลบ
  6. ผมแก้ไขนิดหน่อย แต่ยังไม่ได้ลองในเว็บจริงนะครับ ลองเอาไปดูก่อน

    include "storescripts/connect_to_mysql.php";
    $date = date("d/m/Y");
    //echo $date;
    $ip = $_SERVER['REMOTE_ADDR'];
    $sql="INSERT INTO counter(id_visit,date_visit,ip_visit,visit) VALUES ('0', '$date', '$ip', '1');";
    $upcounter= mysql_db_query($dbname,$sql);


    /*----------------------OPEN PAGE----------------------*/
    $today = date("d/m/Y");
    $sql="SELECT COUNT(ip_visit) as visit From counter;";
    $result= mysql_query($sql);
    $row = mysql_fetch_array($result);
    $visit = $row['visit'];
    //$id_visit = $row['id_vist'];
    $openpage = str_pad($visit,6,0,STR_PAD_LEFT);

    /*----------------------TODAY BY IP----------------------*/
    $today = date("d/m/Y");
    $sql="Select count(DISTINCT(ip_visit)) as visit From counter where date_visit = '$today'" ;
    $result= mysql_query($sql);
    $row = mysql_fetch_array($result);
    $visit = $row['visit'];
    //$id_visit = $row[id_vist];
    $today = str_pad($visit,6,0,STR_PAD_LEFT);

    /*----------------------TOTAL IP-----------------------*/
    $sql="Select count(DISTINCT(ip_visit)) as visit From counter";
    $result= mysql_query($sql);
    $row = mysql_fetch_array($result);
    $visit = $row['visit'];
    $total = str_pad($visit,6,0,STR_PAD_LEFT);

    ตอบลบ
  7. ปล. ส่วนของ include บรรทัดบน เปลี่ยนแปลงให้ติดต่อ database ของท่านเองนะครับ

    ตอบลบ
    คำตอบ
    1. ขอบคุณครับเดี๋ยวอาทิตย์นี้ผมจะลองดู

      ลบ
  8. ทำไมผมครีเอทตารางไม่ได้อ่ะครับ

    ตอบลบ
  9. การสร้างไฟล์ config.php ทำใงครับ บอกที

    ตอบลบ

© Bookneo, AllRightsReserved.

ขับเคลื่อนโดย Blogger Designed by Nikhorn Thongchuay