具體代碼如下:
創新互聯建站成立于2013年,是專業互聯網技術服務公司,擁有項目成都做網站、成都網站設計、成都外貿網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元稷山做網站,已為上家服務,為稷山各地企業和個人服務,聯系電話:18982081108
/**
* 獲取分頁的HTML內容
* @param integer $page 當前頁
* @param integer $pages 總頁數
* @param string $url 跳轉url地址 最后的頁數以 'page=x' 追加在url后面
*
* @return string HTML內容;
*/
public static function getPageHtml($page, $pages, $url){
//最多顯示多少個頁碼
$_pageNum = 5;
//當前頁面小于1 則為1
$page = $page1?1:$page;
//當前頁大于總頁數 則為總頁數
$page = $page $pages ? $pages : $page;
//頁數小當前頁 則為當前頁
$pages = $pages $page ? $page : $pages;
//計算開始頁
$_start = $page - floor($_pageNum/2);
$_start = $_start1 ? 1 : $_start;
//計算結束頁
$_end = $page + floor($_pageNum/2);
$_end = $_end$pages? $pages : $_end;
//當前顯示的頁碼個數不夠最大頁碼數,在進行左右調整
$_curPageNum = $_end-$_start+1;
//左調整
if($_curPageNum$_pageNum $_start1){
$_start = $_start - ($_pageNum-$_curPageNum);
$_start = $_start1 ? 1 : $_start;
$_curPageNum = $_end-$_start+1;
}
//右邊調整
if($_curPageNum$_pageNum $_end$pages){
$_end = $_end + ($_pageNum-$_curPageNum);
$_end = $_end$pages? $pages : $_end;
}
$_pageHtml = 'ul class="pagination"';
/*if($_start == 1){
$_pageHtml .= 'lia title="第一頁"?/a/li';
}else{
$_pageHtml .= 'lia title="第一頁" href="'.$url.'page=1"?/a/li';
}*/
if($page1){
$_pageHtml .= 'lia title="上一頁" href="'.$url.'page='.($page-1).'"?/a/li';
}
for ($i = $_start; $i = $_end; $i++) {
if($i == $page){
$_pageHtml .= 'li class="active"a'.$i.'/a/li';
}else{
$_pageHtml .= 'lia href="'.$url.'page='.$i.'"'.$i.'/a/li';
}
}
/*if($_end == $pages){
$_pageHtml .= 'lia title="最后一頁"?/a/li';
}else{
$_pageHtml .= 'lia title="最后一頁" href="'.$url.'page='.$pages.'"?/a/li';
}*/
if($page$_end){
$_pageHtml .= 'lia title="下一頁" href="'.$url.'page='.($page+1).'"?/a/li';
}
$_pageHtml .= '/ul';
echo $_pageHtml;
}
第一種:利用Page類和limit方法
$User = M('User'); // 實例化User對象
import('ORG.Util.Page');// 導入分頁類
$count = $User-where('status=1')-count();// 查詢滿足要求的總記錄數
$Page = new Page($count,25);// 實例化分頁類 傳入總記錄數和每頁顯示的記錄數
$show = $Page-show();// 分頁顯示輸出
// 進行分頁數據查詢 注意limit方法的參數要使用Page類的屬性
$list = $User-where('status=1')-order('create_time')-limit($Page-firstRow.','.$Page-listRows)-select();
$this-assign('list',$list);// 賦值數據集
$this-assign('page',$show);// 賦值分頁輸出
$this-display(); // 輸出模板
第二種:分頁類和page方法的實現
$User = M('User'); // 實例化User對象
// 進行分頁數據查詢 注意page方法的參數的前面部分是當前的頁數使用 $_GET[p]獲取
$list = $User-where('status=1')-order('create_time')-page($_GET['p'].',25')-select();
$this-assign('list',$list);// 賦值數據集
import(“ORG.Util.Page”);// 導入分頁類
$count = $User-where('status=1')-count();// 查詢滿足要求的總記錄數
$Page = new Page($count,25);// 實例化分頁類 傳入總記錄數和每頁顯示的記錄數
$show = $Page-show();// 分頁顯示輸出
$this-assign('page',$show);// 賦值分頁輸出
$this-display(); // 輸出模板
帶入查詢條件
如果是POST方式查詢,如何確保分頁之后能夠保持原先的查詢條件呢,我們可以給分頁類傳入參數,方法是給分頁類的parameter屬性賦值:
import('ORG.Util.Page');// 導入分頁類
$mapcount = $User-where($map)-count();// 查詢滿足要求的總記錄數
$Page = new Page($count,25);// 實例化分頁類 傳入總記錄數和每頁顯示的記錄數
//分頁跳轉的時候保證查詢條件
foreach($map as $key=$val) {
$Page-parameter .= "$key=".urlencode($val).'';
}
$show = $Page-show();// 分頁顯示輸出
使用ajax分頁 多個分頁數據分開多個ajax請求去請求數據分頁函數也可以分開使用
如果你是用的是tp自帶的分頁做那么你可以改下參數 比如第一個分頁參數為page=xxx第二個就使用page2=xxx 以此類推
php+ajax實現無刷新分頁實現方法具體如下:
limit 偏移量,長度;
limit 0,7; 第一頁
limit 7,7; 第二頁
limit 14,7; 第三頁
每頁信息條數:7
信息總條數:select count(*) from table
信息總頁數:ceil向上取整(總條數/每頁條數)
1、分頁類具體使用
?php
class Pagination {
private $total; //數據表中總記錄數
private $listRows; //每頁顯示行數
private $limit; //mysql 數據庫的limit
private $uri; //分頁信息前面的uri地址
private $pageNum; //頁數
private $config = array('header' = "個記錄", "prev" = "【上一頁】", "next" = "【下一頁】", "first" = "【首 頁】", "last" = "【尾 頁】");
private $listNum = 8;
/*
* $total 當前信息總條數
* $listRows 每頁顯示的條數
* $pa 下面的page
http://網址/index.php?page=5
*/
public function __construct($total, $listRows = 10, $pa = "") {
$this-total = $total;
$this-listRows = $listRows;
$this-uri = $this-getUri($pa);
$this-page = !empty($_GET["page"]) ? $_GET["page"] : 1;//不傳入page,則默認顯示首頁
$this-pageNum = ceil($this-total / $this-listRows);
$this-limit = $this-setLimit();
}
//設置每頁顯示的條數
private function setLimit() {
return "Limit " . ($this-page - 1) * $this-listRows . ", {$this-listRows}";
}
//獲得URL地址
private function getUri($pa) {
$url = $_SERVER["REQUEST_URI"] . (strpos($_SERVER["REQUEST_URI"], '?') ? '' : "?") . $pa;
$parse = parse_url($url);
if (isset($parse["query"])) {
parse_str($parse['query'], $params);
unset($params["page"]);
$url = $parse['path'] . '?' . http_build_query($params);
}
return $url;
}
//魔術方法,
public function __get($args) {
if ($args == "limit")
return $this-limit;
else
return null;
}
//頁面開始的條數
private function start() {
if ($this-total == 0)
return 0;
else
return ($this-page - 1) * $this-listRows + 1;
}
//頁面結束的條數
private function end() {
return min($this-page * $this-listRows, $this-total);
}
/*設置首頁*/
private function first() {
$html = "";
if ($this-page == 1)
$html.=' '.$this-config["first"].' ';
else
$html.=" a href='javascript:void(0)' onclick='showPage(\"{$this-uri}page=1\")'{$this-config["first"]}/a ";
//$html.=" a href='{$this-uri}page=1'{$this-config["first"]}/a ";
return $html;
}
/*設置上一頁*/
private function prev() {
$html = "";
if ($this-page == 1)
$html.=' '.$this-config["prev"].' ';
else
$html.=" a href='javascript:void(0)' onclick='showPage(\"{$this-uri}page=" . ($this-page - 1) . "\")'{$this-config["prev"]}/a ";
//$html.=" a href='{$this-uri}page=".($this-page-1)."'{$this-config["prev"]}/a ";
return $html;
}
//頁碼列表【首頁】【2】【3】…………【尾頁】
private function pageList() {
$linkPage = "";
$inum = floor($this-listNum / 2);
for ($i = $inum; $i = 1; $i--) {
$page = $this-page - $i;
if ($page 1)
continue;
$linkPage.=" a href='javascript:void(0)' onclick='showPage(\"{$this-uri}page={$page}\")'{$page}/a ";
}
$linkPage.=" {$this-page} ";
for ($i = 1; $i = $inum; $i++) {
$page = $this-page + $i;
if ($page = $this-pageNum)
$linkPage.=" a href='javascript:void(0)' onclick='showPage(\"{$this-uri}page={$page}\")'{$page}/a ";
else
break;
}
return $linkPage;
}
/*設置下一頁*/
private function next() {
$html = "";
if ($this-page == $this-pageNum)
$html.=' '.$this-config["next"].' ';
else
$html.=" a href='javascript:void(0)' onclick='showPage(\"{$this-uri}page=" . ($this-page + 1) . "\")'{$this-config["next"]}/a ";
//$html.=" a href='{$this-uri}page=".($this-page + 1)."'{$this-config["next"]}/a ";
return $html;
}
/*設置尾頁*/
private function last() {
$html = "";
if ($this-page == $this-pageNum)
$html.=' '.$this-config["last"].' ';
else
$html.=" a href='javascript:void(0)' onclick='showPage(\"{$this-uri}page=" . ($this-pageNum) . "\")'{$this-config["last"]}/a ";
//$html.=" a href='{$this-uri}page=.(this-pageNum).'{$this-config["last"]}/a ";
return $html;
}
/*設置頁面跳轉*/
private function goPage() {
return
' input type="text" onkeydown="javascript:if(event.keyCode==13){var page=(this.value' . $this-pageNum . ')?' . $this-pageNum . ':this.value;showPage(\'' . $this-uri . 'page=\'+page+\'\')}" value="' . $this-page . '" style="width:25px"
input type="button" value="GO" onclick="javascript:var page=(this.previousSibling.value' . $this-pageNum . ')?' . $this-pageNum . ':this.previousSibling.value;showPage(\'' . $this-uri . 'page=\'+page+\'\')" ';
}
//頁面列表配置選項
function fpage($display = array(0, 1, 2, 3, 4, 5, 6, 7, 8)) {
$html[0] = " 共有b{$this-total}/b{$this-config["header"]} ";
$html[1] = " 每頁顯示b" . ($this-end() - $this-start() + 1) . "/b條,本頁b{$this-start()}-{$this-end()}/b條 ";
$html[2] = " b{$this-page}/{$this-pageNum}/b頁 ";
$html[3] = $this-first();
$html[4] = $this-prev();
$html[5] = $this-pageList();
$html[6] = $this-next();
$html[7] = $this-last();
$html[8] = $this-goPage();
$fpage = '';
foreach ($display as $index) {
$fpage.=$html[$index];
}
return $fpage;
}
}
2 數據顯示
?php
//鏈接數據庫
//獲得具體信息
//分頁顯示
header("content-type:text/html;charset=utf-8");
$link = mysql_connect('localhost','root','111111');
mysql_select_db('shop', $link);
mysql_query("set names utf8");
$css = eof
style type="text/css"
table {border:1px solid black; width:700px; margin:auto; border-collapse:collapse;}
td {border:1px solid black; }
/style
eof;
echo $css;
echo "
table
trtd序號/tdtd名稱/tdtd數量/tdtd價格/tdtd時間/td/tr
";
//1 引入分頁類
include "./Pagination.php";
//2. 獲得信息總條數
$sql = "select * from sw_goods";
$qry = mysql_query($sql);
$total = mysql_num_rows($qry);
$per = 7;
//3. 實例化分頁類對象
$page_obj = new Pagination($total,$per);
//4. 拼裝sql語句,獲得每頁信息
//利用page_obj實現limit的靈活設置
//$page_obj - limit;
$sqla = "select * from sw_goods ".$page_obj-limit;
$qrya = mysql_query($sqla);
//5. 獲得頁面列表
$pagelist = $page_obj - fpage(array(3,4,5,6,7,8));
$i=1;
while($rsta = mysql_fetch_assoc($qrya)){
echo "tr";
echo "td".$i++."/td";
echo "td".$rsta['goods_name']."/td";
echo "td".$rsta['goods_number']."/td";
echo "td".$rsta['goods_price']."/td";
echo "td".date("Y-m-d H:i:s",$rsta['goods_create_time'])."/td";
echo "/tr";
}
echo "trtd colspan=5".$pagelist."/td/tr";
echo "/table";
3 ajax無刷新分頁實現
open(‘get','http://網址/index.php?page=2')
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ""
html
head
title新建網頁/title
meta http-equiv="Content-Type" content="text/html; charset=utf-8" /
meta name="description" content="" /
meta name="keywords" content="" /
script type="text/javascript"
//獲得分頁信息ajax函數
function showPage(myurl){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState==4){
var rst = document.getElementById("result");
rst.innerHTML = xhr.responseText;
}
}
xhr.open("get",myurl);
xhr.send(null);
}
window.onload = function(){
showPage("./data1.php"); //獲得分頁信息
//showPage("./data.php?page=2");
}
/script
style type="text/css"
/style
/head
body
h2ajax無刷新分頁效果/h2
div id="result"/div
/body
/html
script type="text/javascript"
document.write(new Date()+"br /");
document.write(new Date()+"br /");
document.write(new Date()+"br /");
document.write(new Date()+"br /");
/script
htmlhead
title分頁示例(php/title
meta http-equiv="Content-Type" content="text/html; charset=gb2312"
/head
body
?php
$pagesize=10; //設定每一頁顯示的記錄數
$conn=mysql_connect("localhost","root","jrq");
mysql_select_db("sj",$conn);
$rs = mysql_query( "select * from `dw_newsdata`",$conn); //這里有第二個可選參數,指定打開的連接
//-----------------------------------------------------------------------------------------------//
//分頁邏輯處理
//-----------------------------------------------------------------------------------------------
$tmpArr = mysql_fetch_array($rs);
$numAL = mysql_num_rows($rs); //取得記錄總數$rs
$pages=intval($numAL/$pagesize); //計算總頁數
if ($numAL % $pagesize) $pages++;
//設置缺省頁碼
//↓判斷“當前頁碼”是否賦值過
if (isset($_GET['page'])){ $page=intval($_GET['page']); }else{ $page=1; }//否則,設置為第一頁
//↓計算記錄偏移量
$offset=$pagesize*($page - 1);
//↓讀取指定記錄數
$rs=mysql_query("select * from `dw_newsdata` limit $offset,$pagesize",$conn);//取得—當前頁—記錄集!
$curNum = mysql_num_rows($rs); //$curNum - 當前頁實際記錄數,for循環輸出用
?
table border="0" width="80%"
tr
td width="50%" bgcolor="#E0E0E0"標題/td
td width="50%" bgcolor="#E0E0E0"發布時間/td
/tr
?php
while ($tmpArr = mysql_fetch_array($rs)) //提取一行,并循環判斷
{
$i=0;
// for($a=0;$a$ColNum;$a++) //==for結束==
?
tr
td width="50%"?= $tmpArr[1]; //$tmpArr["news_title"] ; ?/td
td width="50%"?php echo $tmpArr[2]; //$tmpArr["news_cont"]; ?/td
/tr
?php
}//==while結束==
?
/table
?php
//============================//
// 翻頁顯示 一
//============================//
echo "p"; // align=center
$first=1;
$prev=$page-1;
$next=$page+1;
$last=$pages;
if ($page 1)
{
echo "a href='?page=".$first."'首頁/a ";
echo "a href='?page=".$prev."'上一頁/a ";
}
if ($page $pages)
{
echo "a href='?page=".$next."'下一頁/a ";
echo "a href='?page=".$last."'尾頁/a ";
}
//============================//
// 翻頁顯示 二
//============================//
echo " | 共有".$pages."頁(".$page."/".$pages.")";
for ($i=1;$i $page;$i++){echo "a href='?page=".$i."'[".$i ."]/a ";} // 1-先輸出當前頁之前的
if ($page 0) echo "[".$page."]";; // 2-再輸出當前頁
for ($i=$page+1;$i=$pages;$i++){echo "a href='?page=".$i."'[".$i ."]/a ";}// 3-接著輸出當前頁之后
echo "轉到第 INPUT maxLength=3 size=3 value=".($page+1)." name=gotox 頁 INPUT hideFocus onclick=\"location.href='?page=gotox.value';\" type=button value=Go name=cmd_goto";
echo "/p";
?
/body
/html
方法/步驟
首先要了解下分頁的原理即
SELECT * FROM table …… limit 開始位置 , 操作條數
開始位置從0開始
SELECT * FROM table …… limit 0 , 20
取最前面20條
SELECT * FROM table …… limit 10 , 20
11條到20條
其次分頁要用的公式
得到公式
(當前頁數 - 1 )X 每頁條數 , 每頁條數
Select * from table limit ($Page- 1) * $PageSize, $PageSize
還要了解parse_url()解析URL函數
parse_url() 是講URL解析成有固定鍵值的數組的函數
$ua=parse_url("");
print_r($ua);
結果:
Array
(
[scheme] = http
[host] = hostname
[user] = username
[pass] = password
[path] = /path
[query] = arg=value
[fragment] = anchor
)
創建數據庫bbs和表test有
CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) character set gb2312 NOT NULL,
`sex` varchar(2) character set gb2312 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
然后插入十幾條測試數據即可
寫mysql數據庫連接代碼保存conn.php文件里
代碼如下
?php
$conn = @ mysql_connect("localhost", "root", "") or die("數據庫鏈接錯誤");
mysql_select_db("bbs", $conn);
mysql_query("set names 'GBK'"); //使用GBK中文編碼;
function htmtocode($content) {
$content = str_replace("\n", "br", str_replace(" ", " ", $content));
return $content;
}
//$content=str_replace("'","'",$content);
//htmlspecialchars();
?
寫分頁函數page.php
代碼如下
?php
function _PAGEFT($totle, $displaypg = 20, $url = '') {
global $page, $firstcount, $pagenav, $_SERVER;
$GLOBALS["displaypg"] = $displaypg;
if (!$page)
$page = 1;
if (!$url) {
$url = $_SERVER["REQUEST_URI"];
}
//URL分析:
$parse_url = parse_url($url);
$url_query = $parse_url["query"]; //單獨取出URL的查詢字串
if ($url_query) {
$url_query = ereg_replace("(^|)page=$page", "", $url_query);
$url = str_replace($parse_url["query"], $url_query, $url);
if ($url_query)
$url .= "page";
else
$url .= "page";
} else {
$url .= "?page";
}
$lastpg = ceil($totle / $displaypg); //最后頁,也是總頁數
$page = min($lastpg, $page);
$prepg = $page -1; //上一頁
$nextpg = ($page == $lastpg ? 0 : $page +1); //下一頁
$firstcount = ($page -1) * $displaypg;
//開始分頁導航條代碼:
$pagenav = "顯示第 B" . ($totle ? ($firstcount +1) : 0) . "/B-B" . min($firstcount + $displaypg, $totle) . "/B 條記錄,共 $totle 條記錄";
//如果只有一頁則跳出函數:
if ($lastpg = 1)
return false;
$pagenav .= " a href='$url=1'首頁/a ";
if ($prepg)
$pagenav .= " a href='$url=$prepg'前頁/a ";
else
$pagenav .= " 前頁 ";
if ($nextpg)
$pagenav .= " a href='$url=$nextpg'后頁/a ";
else
$pagenav .= " 后頁 ";
$pagenav .= " a href='$url=$lastpg'尾頁/a ";
//下拉跳轉列表,循環列出所有頁碼:
$pagenav .= " 到第 select name='topage' size='1' onchange='window.location=\"$url=\"+this.value'\n";
for ($i = 1; $i = $lastpg; $i++) {
if ($i == $page)
$pagenav .= "option value='$i' selected$i/option\n";
else
$pagenav .= "option value='$i'$i/option\n";
}
$pagenav .= "/select 頁,共 $lastpg 頁";
}
include("conn.php");
$result=mysql_query("SELECT * FROM `test`");
$total=mysql_num_rows($result);
//調用pageft(),每頁顯示10條信息(使用默認的20時,可以省略此參數),使用本頁URL(默認,所以省略掉).
_PAGEFT($total,5);
echo $pagenav;
$result=mysql_query("SELECT * FROM `test` limit $firstcount,$displaypg ");
while($row=mysql_fetch_array($result)){
echo "hrb".$row[name]." | ".$row[sex];
}
?
調用數據和分頁list.php
?php
/**
* 愛微網
*/
include("conn.php");
$pagesize=5;
$url=$_SERVER["REQUEST_URI"];
$url=parse_url($url);
$url=$url[path];
$numq=mysql_query("SELECT * FROM `test`");
$num = mysql_num_rows($numq);
if($_GET[page]){
$pageval=$_GET[page];
$page=($pageval-1)*$pagesize;
$page.=',';
}
if($num $pagesize){
if($pageval=1)$pageval=1;
echo "共 $num 條".
" a href=$url?page=".($pageval-1)."上一頁/a a href=$url?page=".($pageval+1)."下一頁/a";
}
echo $SQL="SELECT * FROM `test` limit $page $pagesize ";
$query=mysql_query($SQL);
while($row=mysql_fetch_array($query)){
echo "hrb".$row[name]." | ".$row[sex];
}
?
注意事項
注意分頁公式寫法你只要記住即可;
(當前頁數 - 1 )X 每頁條數 , 每頁條數;
Select * from table limit ($Page- 1) * $PageSize, $PageSize;
注意三個代碼文件在同一個目錄下;
主要是最后的list.php調用代碼要細看很有用。
分享標題:php數據分頁技術的實現,在php中如何對多條記錄進行分頁
網站URL:http://vcdvsql.cn/article4/hedhie.html
成都網站建設公司_創新互聯,為您提供網站內鏈、網站導航、電子商務、網站設計公司、動態網站、網站收錄
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯