首先,用composer安裝zf1的部分元件
"require":
注意,與另外兩個分頁元件比較看,zf1的分頁元件是最簡單 的,因為它智慧型的判斷了總數!
建表:
create table `test_databases` (
`id` int(10) unsigned not null auto_increment,
`db_name` varchar(100) collate utf8mb4_unicode_ci not null default '' comment '庫名',
`user_id` int(10) unsigned not null default '0' comment '測試使用者id',
`created_at` int(10) unsigned not null default '0' comment '建立時間',
`updated_at` int(10) unsigned not null default '0' comment '修改時間',
primary key (`id`)
) engine=innodb
請自行插入一百條資料。
程式1.php如下:
<?php
require __dir__ . "/../vendor/autoload.php";
$params = array ('host' => '127.0.0.1',
'username' => 'root',
'password' => 'root',
'dbname' => 'test1',
'charset' => 'utf8mb4',
);$page=1;
if (isset($_get['page']))
$page = intval($_get['page']);
if ($page<1)
$db = zend_db::factory('pdo_mysql', $params);
/*** 構造基礎查詢,每個查詢該函式的內容都不一樣,
* 用函式的好處是 : 查詢**不重複。
*/$select = $db->select();
//這裡也可以join之類
// 。。。 總之可以比較複雜,這個select。
$select->from("test_databases",["db_name","user_id"]); //引數null不可以省略。否則全選。
$select->where("id<100");
$select->order("id asc" );
$paginator = zend_paginator::factory($select);
//設定分頁物件,包括 當前頁,每頁顯示幾個結果,頁碼導航顯示幾個鏈結。
$paginator->setcurrentpagenumber($page) // 設定當前頁的頁碼
->setitemcountperpage(4) // 每頁顯示4條資料
->setpagerange(7); // 7個鏈結,這是較常規的,也可以9個鏈結。
//列印當前頁的結果集。
$result = $paginator->getcurrentitems();
foreach ($result as $v)
// 分頁鏈結物件
$page_obj = $paginator->getpages();
// 下面是$page_obj的詳細資訊。
// first : integer 第一頁的頁碼,固定為1
// firstitemnumber : integer 無用
// firstpageinrange: integer 中間的連續鏈結中的第乙個數字頁碼
// current : integer 當前頁碼
// currentitemcount: integer 無用
// itemcountperpage: integer 無用
// last : integer 最後頁的頁碼
// lastitemnumber : integer 無用
// lastpageinrange : integer 中間的連續鏈結中的最後乙個數字頁碼
// next : integer 下頁的頁碼
// pagecount : integer 總頁數
// pagesinrange : array 中間鏈結的頁碼陣列,每個元素就是乙個整型的頁碼
// previous : integer 上頁的頁碼
// totalitemcount : integer 無用,結果集總數
echo default_css();
echo get_page_url($page_obj);
// end
// 重要的構造分頁鏈結的**。
function get_page_url($page_obj) else
//首頁,若與中間連線重複,則不顯示
if ($page_obj->first < $page_obj->firstpageinrange ) else
}if ($page_obj->firstpageinrange - $page_obj->first > 1)
//中間連線
foreach ($page_obj->pagesinrange as $v) else
}if ($page_obj->last - $page_obj->lastpageinrange > 1)
//末頁,若與中間連線重複,則不顯示
if ($page_obj->last > $page_obj->lastpageinrange ) else
}//下頁
if (isset($page_obj->next)) else
$html = "";}
return $html;
}// 分頁鏈結**函式
function get_url($page)
// 分頁鏈結樣式表
function default_css()
瀏覽器效果如下:
[img]
ZF等常用php框架中存在的問題
從zend framework v0.13版本開始,我就開始學習使用zend framework。當時公司的乙個專案也恰好用到了zend framework。到了0.6的版本之後就再沒有關注細節了。前些日子聽說zend 公司將在5月份正式推出zend framework,今天特意叫同學 下來測試。最...
PHP操作mssql的db類
author yangyu niceses 126.com msn yangyucn live.cn class cls mssql else else function query sql else function getall sql this dbrecord array while row...
封裝自己的DB類(PHP)
封裝乙個db類,用來專門運算元據庫,以後凡是對資料庫的操作,都由db類的物件來實現。這樣有了自己的db類,寫專案時簡單的sql語句就不用每次寫了,直接呼叫就行,很方便!1.封裝乙個db類。乙個類檔案應該只有乙個類,其他的內容全部都沒有。類檔案的命名規則 類名.class.php 下面是建立db類的 ...