---
# System prepended metadata

title: 用PHP來製作網站的觀看數量
tags: [php]

---

### 前言
製作專欄，有時需要展現一下觀看數量讓使用者看見，讓文章顯得更加...有料(?
為了讓數字好看，對外展現的觀看人次可能有點注入水分，所以用這個數字來做統計不太實際。真的要製作報表來決策未來經營方向還是請用Google Analytics較為有用處。

不過此次目的只是要做出一個數字為網站增添一些元素。

---

### 工具
* PHP
* Mysql

---

### 目標
1. 記錄下每篇的觀看次數
2. 將數字紀錄在mysql
3. 防止刷新頁面讓數據一直膨脹

---

### 開始
> 本次的網站設定是動態網頁，一個php頁面檔案根據收到的不同參數，來展示出該筆參數標號的資料庫內容。
> 一切動作都在同一php檔內執行完成。

首先我們先做出，讓該頁面載入時，能夠讓觀看人數+1。
```php!
$num = 1;
```
然後接收GET傳來的編號，一切動作都在該筆資料欄位內動作。
資料庫內有個欄位Count，他是儲存「觀看人數」的欄位，所以設計每當頁面刷新一次，Count就被update +1。

所以將參數 ==$num = 1==，每一刷新就執行sql語句。
```php!
//接收的參數，編號$no
$no = addslashes($_GET["no"]);

//這是計數器
$num = 1;

//sql
mysqli_query($conn, "UPDATE '資料表' SET Count = Count + $num WHERE Auto_NO = '$no'");

```
以上，就完成了頁面刷新就將資料表內的Count + 1的目的了。

### 防止一直重新載入頁面
這樣水分灌很大，所以我用了session讓網站記錄這個頁面已經載入過了。
> [關於session點我連結](https://www.php.net/manual/zh/session.examples.basic.php)

要讓session紀錄這個編號的頁面已經載入過了，所以不用再重新update一次sql。

```php!
session_start();

$no= addslashes($_GET["no"]);

if (isset($_SESSION["flag"]["$no"])) {

    //have session, do nothing

} else {

    //no session. do update mysql

    $num = 1;
    mysqli_query($conn, "UPDATE '資料表' SET Count = Count + $num WHERE Auto_NO = '$no'");

    $_SESSION["flag"]["$p_no"] = 1;
}

```

這樣就完成了。

### php連結DB資料庫
```php!
<?php
date_default_timezone_set("Asia/Taipei");
//----DB連接----
$servername = "localhost";
$username = "*****";
$password = "********";
$dbname = "資料庫名稱";
// 建立連接
$conn = new mysqli($servername, $username, $password, $dbname);
 
// 檢查連接
if ($conn->connect_error) {
    die("連接失敗: " . $conn->connect_error);
} 
//echo "連接成功<br>";
//----DB連結完成----

?>
```

###### tags: `php`
###### 完成於2023/7/04