WEB ◆ TS Library ◆ 熱衷分享 ◆ 享受教學相長 ◆ 無形的網絡擁有熱情溫度的傳遞

3-4. 新訊系統的查詢顯示

講義參考用,要活用變化,或許要修改喔~

建立要顯示的資料集

admin_news.php 檔案中先建立全部新訊配合分頁的資料集。

變數準備工作

//資料集:查詢要顯示的新訊內容===================================================
  $max_rows    = 5;   //一頁最多筆數
  $total_rows  = 0;   //總共的筆數
  $total_pages = 0;   //總共的頁數

  $curr_page   = 0;   //目前第幾頁(索引號碼)
  if( isset( $_GET['curr_page'] ) ){ $curr_page = $_GET['curr_page']; }

  $first_row   = $curr_page * $max_rows;    //目前頁面第一筆的索引號碼
  //例如第1頁時,開始   0號 => 第0頁*5
  //例如第2頁時,開始   5號 => 第1頁*5
  //例如第3頁時,開始  10號 => 第2頁*5
  $last_row    = $first_row + $max_rows - 1;    //目前頁面最後一筆的索引號碼
  //例如第1頁時,結束   4號 => 第0頁 0+5-1
  //例如第2頁時,結束   9號 => 第1頁 5+5-1
  //例如第3頁時,結束  14號 => 第2頁 10+5-1
  
  $page_file   = 'admin_news';    //連結的頁面

try {
  //建立資料集:查詢所有的新訊內容, 目的是得到總筆數、總頁數
  $sql_str     = "SELECT * FROM news ORDER BY news_time_m DESC";
  $RS_news_all = $conn -> query($sql_str);
  $total_rows  = $RS_news_all -> rowCount();   //算出總筆數
  $total_pages = ceil($total_rows/$max_rows);  //算出總頁數

  // 有關 SELECT 查詢資料的語法 =================================
  // SELECT          【選擇】            主表的欄位, 被關聯表的欄位
  // FROM            【來自】            主表的名稱
  // LEFT JOIN       【交集式關聯到】     被關聯表的名稱 (主表選取所有資料, 被關聯的表只選出被關聯的資料) 
  // ON ...          【設定關聯方式】     當主表的指定欄位 = 被關聯表的指定欄位  (則將選擇的欄位資料合併進來)
  // WHERE ...       【設定過濾記錄資料的條件】
  // ORDER BY ...    【設定排序的方式】
  // LIMIT ..., ...  【設定取出的筆數】    限定 起始索引編號, 取出的筆數

  //建立資料集:目前畫面要顯示的資料
  $sql_str = "SELECT news.*, news_class.news_class_name
              FROM news

              LEFT JOIN news_class
              ON news.news_class_id = news_class.news_class_id

              ORDER BY news.news_time_m DESC
              LIMIT $first_row, $max_rows";
  $RS_news = $conn -> query($sql_str);
} 
catch ( PDOException $e ){
  die("ERROR!!!: ". $e->getMessage());
}

顯示一頁新訊資料

接著在表格中顯示資料 (紅線畫掉的部份先不做)

測試顯示所有的新訊資料,接下來,加上分頁顯示的功能。

顯示換頁控制的頁碼區

先設計 include() 引入負責頁碼的檔案 (如上述), 接著再設計 pager.php 檔案。

pager.php 檔案 (紅線畫掉的部份先不做)。

<?php
/* 
 * $first_row   目前頁面第1筆號碼(索引編號)
 * $last_row    目前頁面最後1筆號碼(索引編號)
 * $total_rows  總筆數
 * 
 * $curr_page   目前頁碼(索引編號)
 * curr_page    連結帶參數,負責目前頁碼(索引編號)
 * $total_pages 總頁數
 * 
 * $page_file   [連結]顯示的頁面檔名 (預備用)
 * $search      [連結]是否帶有搜尋的條件 (預備用)
 * $class       [連結]是否有分類過濾條件 (預備用)
 * $focus       [連結]是否為焦點條件 (預備用)
 * $sortForLink [連結]排序的方式 (預備用)
 * 
 * 由於pager是各種資料清單顯示時可以共用的, 所以各種條件都需要考慮進來
 */
?>

設計關鍵字的查詢

回到admin_news.php 檔案。

$page_file   = 'admin_news';  //[連結]顯示的頁面檔名

//pager.php頁碼顯示時需要的變數----------------------------------------------
$search      = '';            //[連結]是否帶有搜尋的條件 (預備用)
$class       = '';            //[連結]是否有分類過濾條件 (預備用)
$focus       = '';            //[連結]是否為焦點條件 (預備用)
$sortForLink = '';            //[連結]排序的方式 (預備用)

//因為搜尋或分類WHERE需要的變數-----------------------------------------------
$where       = '';            //負責資料庫查詢語法中的WHERE字串
$search_str  = '';            //搜尋的關鍵字

修改 admin_news.php 設計加入關鍵字的查詢

切換到 pager.php 相關位置加上 $search 變數。

 

 

go TOP