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