首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Zend Framework DB 類分頁實作完整範例

     編輯:PHP 綜合知識

Zend Framework 分頁功能實作指南

在 Web 應用開發中,資料分頁是基本且重要的功能。本文透過完整的程式碼範例,示範如何使用 Zend Framework 1.x 的 Zend_Db 元件實作資料庫分頁查詢,包含總筆數計算、分頁邏輯與前端分頁導航列的產生。

核心程式碼解析

以下範例展示從資料庫連線設定、查詢建構到分頁輸出的完整流程:

<?php
// 取得目前頁碼,預設為第 1 頁
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;

// 載入 Zend 自動載入器
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Db');
Zend_Loader::loadClass('Zend_Db_Statement_Pdo');

// 資料庫連線設定
$config = [
    'host'     => '127.0.0.1',
    'username' => 'root',
    'password' => '111',
    'dbname'   => 'test',
    'profiler' => true
];

// 建立資料庫連線
$db = Zend_Db::factory('PDO_Mysql', $config);
$db->query('SET NAMES utf8');

// 計算總筆數
$total = $db->fetchOne('SELECT COUNT(*) FROM gongsi');
$perPage = 50;
$totalPages = ceil($total / $perPage);

// 建構查詢:分組統計各省份薪資資訊
$select = $db->select();
$select->from('sanguo', [
    's_sheng AS 省份',
    'SUM(s_gongzi) AS 總工資',
    'MIN(s_gongzi) AS 最低工資',
    'MAX(s_gongzi) AS 最高工資',
    'AVG(s_gongzi) AS 平均工資'
]);
$select->group('s_sheng');
$select->order('最高工資 DESC');
$select->limitPage($page, $perPage);

// 執行查詢
$result = $db->fetchAll($select);
?>

前端分頁導航列產生

查詢結果取得後,搭配 HTML 表格輸出資料,並動態產生分頁連結:

<table border="1" align="center" width="960" style="text-align:center">
    <tr>
        <th>省份</th><th>總工資</th><th>最低工資</th><th>最高工資</th><th>平均工資</th>
    </tr>
    <?php foreach ($result as $row): ?>
    <tr>
        <?php foreach ($row as $val): ?>
            <td><?= $val ?></td>
        <?php endforeach; ?>
    </tr>
    <?php endforeach; ?>
    <tr>
        <td colspan="5">
            <a href="?page=1">首頁</a> 
            <?php if ($page > 1): ?>
                <a href="?page=<?= $page - 1 ?>">上頁</a> 
            <?php endif; ?>
            <?php for ($i = 1; $i <= min(15, $totalPages); $i++): ?>
                <a href="?page=<?= $i ?>"><?= $i ?></a> 
            <?php endfor; ?>
            <?php if ($page < $totalPages): ?>
                <a href="?page=<?= $page + 1 ?>">下頁</a> 
            <?php endif; ?>
            <a href="?page=<?= $totalPages ?>">末頁</a>
        </td>
    </tr>
</table>

關鍵技術點總結

  • Zend_Db_Select::limitPage():自動處理 LIMIT 子句,參數為 (頁碼, 每頁筆數)
  • 分組查詢:搭配 group() 與聚合函數 (SUM, AVG, MIN, MAX) 進行統計分析
  • 分頁導航邏輯:需注意邊界條件判斷,避免產生無效連結
  • 安全性提醒:實際專案中應對 $_GET['page'] 進行嚴格驗證與過濾

此範例展示了 Zend Framework 1.x 時代典型的資料庫操作模式,雖然目前主流已轉向 Zend Framework 3 / Laminas 或其他現代框架,但其查詢建構器的設計理念仍具參考價值。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved