本文目錄一覽:
★ 請問怎麼使用PHP在Oracle里做分頁
oracle 實現分頁要用到rownum 代碼如下
select * from (select t.* rownum row_id form (select * from 表名) t ) where row_id=1 and row_id=10
這條SQL語句就可以實現分頁查詢,當然光有SQL還是不行,用以下的PHP 函數就可實現分頁了。
/*分頁函數*/
function page($page,$total,$phpfile,$pagesize=10,$pagelen=10,$str=”)
{
$pagecode = ”;//定義變量,存放分頁生成的HTML
$page = intval($page);//避免非數字頁碼
$total = intval($total);//保證總記錄數值類型正確
if(!$total) return array();//總記錄數為零返回空數組
$pages = ceil($total/$pagesize);//計算總分頁
//處理頁碼合法性
if($page1) $page = 1;
if($page$pages) $page = $pages;
//計算查詢偏移量
$offset = $pagesize*($page-1)+1;
//頁碼範圍計算
$init = 1;//起始頁碼數
$max = $pages;//結束頁碼數
$pagelen = ($pagelen%2)?$pagelen:$pagelen+1;//頁碼個數
$pageoffset = ($pagelen-1)/2;//頁碼個數左右偏移量
//生成html
$pagecode=’div class=”page”‘;
$pagecode.=”span共”.$total.”條信息 第”.$page.”頁/共”.$pages.”頁/span\n”;//第幾頁,共幾頁
//如果是第一頁,則不顯示第一頁和上一頁的連接
if($page!=1){
$pagecode.=”a href=\”{$phpfile}?page=1$str\” 首頁 /a “;//第一頁
$pagecode.=”a href=\”{$phpfile}?page=”.($page-1).”$str\” 上頁 /a “;//上一頁
}
//分頁數大於頁碼個數時可以偏移
if($pages$pagelen)
{
//如果當前頁小於等於左偏移
if($page=$pageoffset)
{
$init=1;
$max = $pagelen;
}else
{
//如果當前頁大於左偏移
//如果當前頁碼右偏移超出最大分頁數
if($page+$pageoffset=$pages+1)
{
$init = $pages-$pagelen+1;
}else{
//左右偏移都存在時的計算
$init = $page-$pageoffset;
$max = $page+$pageoffset;
}
}
}
//生成html
for($i=$init;$i=$max;$i++)
{
if($i==$page)
{
$pagecode.=’spanfont color = redb’.$i.’/b/font/span’;
} else {
$pagecode.=”a href=\”{$phpfile}?page={$i}$str\” $i /a”;
}
}
if($page!=$pages)
{
$pagecode.=”a href=\”{$phpfile}?page=”.($page+1).”$str\” 下頁 /a”;//下一頁
$pagecode.=”a href=\”{$phpfile}?page={$pages}$str\” 末頁/a”;//最後一頁
}
$pagecode.=’/div’;
$onset = $offset + $pagesize -1;
return array(‘pagecode’=$pagecode,’sqllimit’=’ and row_id between ‘.$offset.’ and ‘.$onset);
}
使用方法如下:
1,首先查詢最大數據條數
$sql=”select count(*) co_unt from 表名”;
$st = OCIParse($conn, $sql);//分析指令
OCIExecute($st); //執行指令
$row=oci_fetch_array($st);
$counts=$row[‘CO_UNT’];
if($counts0){
$page=isset($_GET[‘page’])?$_GET[‘page’]:1;
$getpageinfo = page($page,$counts,$phpfile,$chahaoString,10,15);
$pagesql=$getpageinfo[‘sqllimit’];//組合完整的SQL語句
$pagenav=$getpageinfo[‘pagecode’];//分頁顯示的樣式代碼
$sql=”select * from (select t.* rownum row_id form (select * from 表名) t ) where 1=1 “.$pagesql
}
這樣就行了
php怎麼實現分頁
/**
* 獲取分頁的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;
}
php 分頁設置
if($offset) //如果偏移量是0,則沒有上一頁的鏈接
{
$preoffset=$offset-10;
print(“a href=\”$PHP_SELF?offset=$preoffset\”上一頁/a \n”);
//從這裡知道$offset是每次查詢數據庫記錄時的第一條記錄(相對總共10條記錄而言)
}
//計算總共需要的頁數
$page_cnt=ceil($num/10);
//顯示到所有頁的鏈接
for ($i=1; $i=$page_cnt; $i++)
{
$page_offset=10*$i-10;
print(“a href=\”$PHP_SELF?offset=$page_offset\”$i/a \n”);
}
//檢查是否是最後一頁
if ($page_cnt!=0 (($offset+10)/10)!=$page_cnt)
{
$backoffset=$offset+10;
print(“a href=\”$PHP_SELF?offset=$backoffset\”下一頁/a \n”);
}
//頁碼顯示
原創文章,作者:NZ6UH,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/130901.html