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

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

建立要顯示的資料集

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

變數準備工作

//資料集:新訊簡介清單===================================================
try {
  $max_rows    = 5;   //一頁最多筆數
  $curr_page   = 0;   //目前第幾頁(索引號碼)
  if( isset( $_GET['curr_page'] ) ){ $curr_page = $_GET['curr_page']; }
  $first_row   = $curr_page * $max_rows;    //目前頁面第一筆的索引號碼
  $last_row    = $first_row + $max_rows;    //目前頁面最後一筆的索引號碼
  $total_rows  = 0;   //總共的筆數
  $total_pages = 0;   //總共的頁數
  $page_file   = 'admin_news';    //連結的頁面
 
  //建立資料集:算出全部筆數及全部頁數
  $sql_str = "SELECT * FROM news ORDER BY news_time_m DESC";
  $RS_news_total = $conn -> query($sql_str);
  $total_rows = $RS_news_total -> rowCount();
  $total_pages = ceil($total_rows/$max_rows);
 
  //SELECT        選擇          主表的欄位, 被關聯表的欄位
  //FROM          來自          主表的名稱
  //LEFT JOIN     交集式關聯到   被關聯表的名稱  
  //ON ...        設定關聯方式   當主表的指定欄位 = 被關聯表的指定欄位  (則將選擇的欄位資料合併進來)
  //WHERE ...     設定過濾記錄資料的條件
  //ORDER BY ...  設定排序的方式
 
  //建立資料集:目前畫面要顯示的資料
  $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("Errpr!: ". $e->getMessage());
}

顯示一頁新訊資料

先準備HTML的框架

<div class="w3-responsive">
  <table border="1" class="w3-table-all">
    <tr>
      <th width="110">功能</th>
      <th width="60">分類</th>
      <th>[ID]標題</th>
      <th>焦點</th>
      <th>顯示</th>
      <th>建檔時間</th>
      <th>修改時間</th>
      <th>縮圖</th>
      <th>建檔人員</th>
    </tr>
 
    <tr>
      <td>
        <a href="" 
           class="w3-button w3-padding-small modify-btn" data-title="修改新訊">修改</a>
        <a href="" 
           class="w3-button w3-padding-small delete-btn" data-title="刪除新訊">刪除</a>
      </td>
      <td></td>
      <td>
        <a href="" 
           class="w3-button w3-padding-small w3-block w3-left-align detail-btn" 
           data-title="新訊詳細內容">
          []
        </a>
      </td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
 
  </table>
 
</div> 

接著在表格中顯示資料

<div class="w3-responsive">
  <table border="1" class="w3-table-all">
    <tr>
      <th width="110">功能</th>
      <th width="60">分類</th>
      <th>[ID]標題</th>
      <th>焦點</th>
      <th>顯示</th>
      <th>建檔時間</th>
      <th>修改時間</th>
      <th>縮圖</th>
      <th>建檔人員</th>
    </tr>
    <?php 
    foreach( $RS_news as $row_RS_news ){ 
    ?>
    <tr>
      <td>
        <a href="./admin_news_modify.php?news_id=<?php echo $row_RS_news['news_id']; ?>" 
           class="w3-button w3-padding-small modify-btn" data-title="修改新訊">修改</a>
        <a href="./admin_news_delete.php?news_id=<?php echo $row_RS_news['news_id']; ?>" 
           class="w3-button w3-padding-small delete-btn" data-title="刪除新訊">刪除</a>
      </td>
      <td><?php echo $row_RS_news['news_class_name']; ?></td>
      <td>
        <a href="./admin_news_detail.php?news_id=<?php echo $row_RS_news['news_id']; ?>" 
           class="w3-button w3-padding-small w3-block w3-left-align detail-btn" 
           data-title="新訊詳細內容">
          [<?php echo $row_RS_news['news_id']; ?>]
          <?php echo $row_RS_news['news_title']; ?>
        </a>
      </td>
      <td><?php if( $row_RS_news['news_focus']==1 ){ echo '是'; } ?></td>
      <td><?php if( $row_RS_news['news_show']==1  ){ echo '是'; } ?></td>
      <td><?php echo $row_RS_news['news_time_c']; ?></td>
      <td><?php echo $row_RS_news['news_time_m']; ?></td>
      <td>
        <?php 
      if( $row_RS_news['news_img_s'] != '' ){ 
        echo '<img src="../img_news/'.$row_RS_news['news_img_s'].'" width="60">'; 
      }else{
        echo '<img src="../img_layout/pre_img_news.png" alt="" width="60">';
      } ?>
      </td>
      <td><?php echo $row_RS_news['mem_id']; ?></td>
    </tr>
    <?php } ?>
  </table>
 
  <?php include('../shared/pager.php'); ?>
</div>  

顯示換頁控制的頁碼區

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

<?php
/*需要的變數:
$curr_page        目前第幾頁(索引號碼)
$first_row        目前頁面第一筆的索引號碼
$last_row         目前頁面最後一筆的索引號碼
$total_rows       總共的筆數
$total_pages      總共的頁數
$page_file        連結的頁面
$search_str       連結時需帶著的參數:搜尋關鍵字
$class_str        連結時需帶著的參數:分類id
*/
?>
<div class="pager">
  <div>
    <?php 
    //顯示筆數資訊 ================================= 
    echo ($first_row+1).'~'.min($last_row, $total_rows).' / '.$total_rows.' 筆'; 
    ?>
  </div>
  <div>
    <?php
    //顯示 第一筆及上一筆的連結 ================================ 
    if( $curr_page>0 ){
      echo '<a href="./?page='.$page_file.'&curr_page=0'.$search_str.$class_str.
           '"><i class="fa fa-angle-double-left"></i></a>';
      echo '<a href="./?page='.$page_file.'&curr_page='.($curr_page-1).
           $search_str.$class_str.'"><i class="fa fa-angle-left"></i></a>';
    }else{
      echo '<span class="spanarea"></span><span class="spanarea"></span>';
    }
 
    //顯示頁碼連結 ====================================== 
    for( $i=0; $i<$total_pages; $i++ ){ 
      if( $i == $curr_page ){
        echo '<span class="current">'.($i+1).'</span>';
      }else{
        echo '<a href="./?page='.$page_file.'&curr_page='.$i.$search_str.$class_str.
             '">'.($i+1).'</a>';
      }
    }
 
    //顯示 下一筆及最後一筆的連結 ================================ 
    if( $curr_page<$total_pages-1 ){
      echo '<a href="./?page='.$page_file.'&curr_page='.($curr_page+1).
            $search_str.$class_str.'"><i class="fa fa-angle-right"></i></a>';
      echo '<a href="./?page='.$page_file.'&curr_page='.($total_pages-1).
            $search_str.$class_str.'"><i class="fa fa-angle-double-right"></i></a>';
    }else{
      echo '<span class="spanarea"></span><span class="spanarea"></span>';
    }
    ?>
  </div>
  <div>
    <?php 
    //顯示頁數資訊 ================================= 
    echo ($curr_page+1).' / '.$total_pages.' 頁'; 
    ?>
  </div>
</div>

設計關鍵字的查詢

<div style="overflow:hidden;padding:5px">
  ----- 
  <?php 
  if( $search_keyword!='' ){ 
    echo '搜尋"'.$search_keyword.'"的結果'; 
  }else{ 
    echo '全部新訊'; 
  } 
  ?><?php echo $total_rows; ?> 篇 -----
  <form method="get" action="" class="w3-right">
    <input type="hidden" name="page" value="admin_news">
    <input type="text" name="search_keyword" style="width:22em"
           placeholder="新訊關鍵字, 不輸入按「搜尋」則顯示全部..." >
    <input type="submit" value="搜尋">
  </form>
</div>

設計加入關鍵字的查詢

$where = '';           //SELECT中WHERE條件語法
$search_keyword = '';  //接收輸入查詢的關鍵字
$search_str ='';       //頁碼連結時需帶著的參數及參數值:搜尋關鍵字
 
 
//判斷是否為搜尋關鍵字==================================================
if( isset($_GET['search_keyword']) && $_GET['search_keyword']!='' ){
  $search_keyword = $_GET['search_keyword'];
  $search_str = '&search_keyword='.$search_keyword;
  $where = " WHERE news.news_title LIKE '%$search_keyword%' OR 
                   news.news_content LIKE '%$search_keyword%' ";
}

修改加入......

$sql_str = "SELECT * FROM news $where ORDER BY news_time_m DESC";
$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
            $where
            ORDER BY news.news_time_m DESC
            LIMIT $first_row, $max_rows";

 

 

go TOP