CG 數位學習網 > PHP 教學



無論是入口網站、購物網站、社群網站,或是公司、學校、政府機關的網站,經常需要提供發佈最新消息的功能,例如公告最新活動或商品優惠訊息等。而在製作網頁最新消息的部份,我們在網站的首頁只顯示最新消息的標題,避免佔用首頁過多的版面。訪客必須點選最新消息的標題,才會出現完整的內容。此外,透過製作後端管理界面,方便管理者直接從瀏覽器新增、修改、刪除最新消息。

 

學習目標

1. 熟悉資料表新增、修改、刪除記錄的操作。

2. 瞭解建立資料集時,記錄的篩選與排序操作。

3. 設計主頁面 - 細節頁面 ( Master-Detail ) 架構。

 

最新消息資料儲存於 tb_news 資料表:

欄位名稱 資料型態 說明
newsID smallint 最新消息編號(自動編號)
newsSubtitle varchar (100) 最新消息標題
newsContent text 最新消息內容
newsDate AAA 發佈日期
newsHits smallint 點閱次數
displayOrder tinyint 是否置頂(0 = 否∕1 = 是)

最新消息網頁規劃

網頁 檔名 說明
網站首頁 index.php 網站的首頁
最新消息內容 news.php 顯示最新消息內容的頁面
新增最新消息 news_add.php 新增最新消息的管理頁面
最新消息清單 news_list.php 顯示全部最新消息的頁面
修改最新消息 news_modify.php 修改最新消息的管理頁面
刪除最新消息 news_delete.php 刪除最新消息的管理頁面

 

1. 建立資料庫 db_myweb

2. 目前的資料庫中沒有任何資料表,新增最新消息資料表,名稱輸入「tb_news」,欄位數「5」。

3. 接著為資料表設定欄位的屬性。

 

建立資料庫連線

開啟 index.php 網頁,若是開啟 HTML 網頁將無法建立資料庫連線,開啟任何 PHP 網頁,即可建立資料庫連線。

網站若只連結一個資料庫,例如最新消息、會員資料、網路投票的資料表都儲存在同一資料庫時,僅要設定一次資料庫連線即可。

開啟 資料庫 面板,

按下 [ 新增(+) > MySQL 連線 ] 開啟 MySQL 資料庫連線對話框

連線名稱 = conn_MySQL (連線名稱可自訂,但不可包含中文或空白字元)

MySQL 伺服器 = localhost (因為本機已安裝 MySQL 資料庫,若裝在別台主機可透過 IP 位址連線)

使用者名稱 = 輸入 MySQL 資料庫的使用者名稱,例如 root

密碼 = 輸入 MySQL 資料庫的使用者密碼,若未設定請空白。

資料庫 = "" 選擇連線的資料庫,請按下右側的「選取」按鈕,選取「db_myweb」資料庫。

按下「選取」按鈕。

MySQL 若未指定密碼,將會出現提示訊息。

按下「測試」按鈕,若出現「連線已成功設定」的訊息,即可關閉 MySQL 連線的對話框。

 

 

建立資料集

說得簡單一點,建立資料集的主要目的就是告訴這個 PHP 網頁,執行時從那一個「資料庫」的那一個「資料表」的那些「欄」取得資料,並可設定篩選與排序的條件。

開啟 繫結 面板,按下 [ 新增 (+) > 資料集 (查詢) ],設定資料集。

名稱 = rs_news
連線 = conn_MySQL(從下拉選單選取)
表格 = tb_news(從下拉選單選取)
欄 = 除了 newsContent 以外的欄位,因為首頁不需要顯示最新消息的內容。
篩選器 = 無
排序 = newsDate / 遞減(排序依日期遞減是為了讓最新的訊息出現在上方位置)

老師習慣在資料集名稱使用前置字串「rs_」,因為資料集是「RecordSet」。使用前置字串是為了方便區別,實際上不加也是可以的。

 

在首頁加上最新消息

為了製作首頁上的「最新消息」,新增一個 2 列 3 欄的表格,標題分別加上「日期」、「標題」、「點閱」。

開啟 繫結 面板,將資料集的 newsDate、newsTitle、newsHits 拖曳到表格標題下的空白儲存格。

由於是剛剛才建立的資料表,目前還沒有任何最新消息的內容,而且新增最新消息的網頁也還沒製做,請先使用 phpMyAdmin 手動新增 3 筆最新消息,順便學習新增記錄的操作步驟。例如:

最新消息系統測試中!

開啟瀏覽器檢視首頁,如果沒問題的話應該會顯示一筆最新消息,為什麼無法顯示其他的最新消息呢?因為必須設定「重複區域」,否則只會顯示第一筆資料。

請選取表格的第二列(第一列是標題),建議從標籤編輯區按下 <tr> 標籤來選取整列,可避免不小心選取錯誤的範圍喔!

開啟 伺服器行為 面板,按下 [ 新增 (+) > 重複區域 ] 開啟設定對話框。

預設是在一頁顯示 10 筆記錄,也就是在首頁會顯示 10 筆最新消息,按下「確定」按鈕,您可以看到網頁的重複區域左上方出現「重複」的標籤。

提示:您也可以選擇顯示所有記錄,但是最新消息的筆數增加後,將會佔用太多首頁的版面,過期的最新消息也會顯示出來,而且對於伺服器而言,查詢過多的資料可能對執行效能造成負面的影響,特別是設計訪客數較多的網站時,重複區域的顯示筆數應該謹慎設定。

 

修正亂碼的問題

若網頁出現亂碼,開啟 Connects \ conn_MySQL.php 資料庫連線設定檔,切換到程式碼檢視,在 PHP 程式碼的最未行輸入

mysql_query("SET NAMES utf8");

 

顯示資料集導覽狀態

許多網站的網頁上會顯示有多少筆最新消息,使用 Dreamweaver 製作這個功能非常簡單,您可以在「插入」面板切換到「資料」標籤,再按下「資料集導覽狀態」開啟對話框,選擇 rs_news 資料集後按下「確定」按鈕。

您可以稍微修改一下文字,因為預設的文字內容實在讓人很難理解是什麼意思。

 

前往細節頁面

首頁只顯示最新消息的標題,訪客需要點選後才能看到完整的內容,這是大部份網站採用的設計,這就是前面提到的「Master-Detail」網頁架構。

完整的最新消息其實是另一個網頁,無論有多少筆最新消息,訪客實際上連結的是同一個網頁,伺服器該如何判斷顯示那筆最新消息的內容呢?主要是透過網頁之間傳遞的參數 - URL 參數。

選取首頁最新消息的標題,透過 屬性 面板設定超連結,在「選取檔案」的對話框連結到 news.php 網頁。

按下「參數」按鈕並設定如下:

 

「名稱」欄位輸入「newsID」,「值」欄位按下閃電按鈕,從「動態資料」對話框選擇 rs_news 資料集下方的 newsID 後,按下「確定」按鈕。

回到「參數」對話框,可以看到「值」欄位已經填上 PHP 程式碼,再按下「確定」按鈕。

我們已經完成前往細節頁面的超連結設定,透過網頁瀏覽器測試一下網頁的功能吧!

 

製作管理最新消息的網頁

管理最新消息的頁面也會使用到前往細節頁面,開啟 news_admin.php 網頁進行編輯。

這個網頁目前沒有任何內容,因為需要列出全部的最新消息,從繫結面板執行 [ 新增 (+) > 資料集 (查詢) ] 。

 

製作新增最新消息的網頁

實際上這個網頁並不提供訪客瀏覽,而是讓網站管理者發佈最新消息,因此稍後再加上使用者驗證的功能。

隱藏欄位 newsDate 用於取得發佈最新消息的日期,選取後從屬性面板的「值」欄位輸入以下的 PHP 程式。

表單元件的名稱若與資料表的欄位名稱相同,Dreamweaver 將會自動對應。

 

製作修改最新消息的網頁

實際上修改最新消息的網頁可以從新增最新消息的網頁 news_add.php 修改,因為表單的項目幾乎是相同的,只是前者的功能是「插入記錄」,而後者是「更新記錄」。

 

製作刪除最新消息的網頁

透過 news_list.php 網頁傳遞的 URL 參數,判斷要刪除的最新消息是那一筆記錄。

 



~ CG 數位學習網版權所有 ~