本文目录一览:
★ 请问怎么使用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");
}
//页码显示