select * from (select rownum rm,s_QZJX_AZSQD.* from s_QZJX_AZSQD) where s_QZJX_AZSQD.ejdwbm='$coid' and s_QZJX_AZSQD.substr(sblbdm,1,2)='$id' and rm>=1 and rm<=10 ----oracle中取1到10行
调试欢乐多
=============================================
可考虑使用php数组函数array_slice(结果数组,int offset,int length)
$start = (当前页数-1)*每页显示的条数;
$end = $start + 每页显示的条数;
for ($i=$start; $i<$end; $i++)
$start = ($page-1) * $msgnum;
$end = $start + $msgnum;
============================那我应该怎么改呢?指导一下吧
if ($page>$totalpage) { $page = $totalpage; }
if ($totalpage>round($totalpage)){$totalpage=round($totalpage)+1;}
else{$totalpage=round($totalpage);}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\这里也有问题$page 会出现小数,我会这么写:$totalpage=ceil($i/$msgnum);
if ($page>$totalpage) { $page = $totalpage; }==================================第一页全都出现,还是看这里到底怎么输出的,$start $end 具体是多少for ($i=$start; $i<$end; $i++)
{
//这里是读取记录
}================================
{
//这里是读取记录<-=====把这里的代码给出来
}
select * from talbe where 字段=XX order by yyy limit(每页记录数)
/**
* 我写的分页类, 支持 PHP+MySQL+ADODB环境, php version > 4, MySQL version > 4.1.14(支持子查询)
* 用法:
* $sql = "select * from myTable";
* $page = new Page($myADODBConnection, $sql, $_GET["pageNum"], "utf-8", 20);
* $page->curPage();
* for($i = 0; $i < count($page->rs); $i++){
* // 打印结果
* }
* $page->pageLink($_SERVER['PHP_SELF'], "pageNum", "class=myLinkCSS");
*
* +--------------------------------------------------------------------------+
* | 声明: |
* | 本代码可以自由使用在任何商业和非商业, 开源与非开源程序中, |
* | 任何人可以自由使用, 修改, 分发和再次分发, |
* | 您获得以上权利的前提条件是: 您在您的代码以及您的修改版本代码中, |
* | 必须完整的包含本声明的完整内容. |
* | |
* | 本程序原始版本(v1.0) 由 Alex Lee 完成, |
* | Alex Lee 具有此版本(v1.0)的所有权利以及以后版本的修改以及再发布权限 |
* | Email: [email protected] |
* +--------------------------------------------------------------------------+
*
*/
class Page{
var $firstPage; // 起始页码, int
var $curPage; // 当前页码, int
var $prevPage; // 上一页, int
var $nextPage; // 下一页, int
var $pageSize; // 页面大小, int
var $totalPage; // 总页数, int
var $toatlItem; // 总记录数, int
var $encode // 设置编码, string var $db; // 数据库链接句柄,
// 此处使用 adodb 链接数据库,
// 如果使用其他链接方式, 需要稍做改动 resource
var $sql; // 查询sql语句 string
var $rs; // 存放结果的结果集, array;
/**
* 构造函数, 检查和初始化变量
* 参数:
* $db: ADODB 数据库连接句柄
* $sql: select 查询sql
* $curpage: 当前页面编码
* $encode: 结果集编码
* $pageSize: 页面大小
*/
function Page($db, $sql, $curpage = 1, $encode = "gbk", $pageSize = 20){
$this->db = $db;
$this->firstPage = 1;
$this->curPage = $curpage;
$this->pageSize = $pageSize;
$this->sql = $sql;
$this->encode = $encode;
$this->rs = NULL;
if(!$this->db){
exit("ERROR: invalid database connection");
}
if(FALSE === strpos(strtoupper($this->sql), "SELECT")){
exit("ERROR: invalid SQL:".$this->sql);
}
if(!is_int($this->pageSize) || $this->pageSize == 0){
$this->pageSize = 20;
} $this->TotalPage(); if(empty($this->curPage)) $this->curPage = $this->firstPage;
if($this->curPage >= $this->totalPage) $this->curPage = $this->totalPage;
if($this->curPage <= $this->firstPage) $this->curPage = $this->firstPage; $this->nextPage = $this->curPage == $this->totalPage ? $this->totalPage : $this->curPage + 1;
$this->prevPage = $this->curPage == $this->firstPage ? $this->firstPage : $this->curPage - 1;
}
/**
* 设置结果集编码
*/
function setResultEncode(){
if(!empty(trim($this->encode))){
$this->db->Execute("SET NAMES '".($this->encode)."'");
}
}
/**
* 构造分页sql
*/
function prepareQuerySQL(){
$sql = $this->sql;
if(FALSE !==($pos = strpos(strtoupper($sql), "LIMIT"))){
$sql = substr($this->sql, 0, $pos);
}
$sql .= " LIMIT ".(($this->prevPage - 1) * $this->pageSize).", ".$this->pageSize;
return $sql;
} /**
* 获取下一页记录
*/
function nextPage(){ $sql = $this->prepareQuerySQL(); $this->setResultEncode(); $hdl = $this->db->Execute($sql);
for($i = 0; !$hdl->EOF; $i++){
$this->rs[] = $hdl->fields;
$hdl->MoveNext();
}
} /**
* 获取上一页记录
*/
function prevPage(){
$sql = $this->prepareQuerySQL(); $this->setResultEncode(); $hdl = $this->db->Execute($sql);
for($i = 0; !$hdl->EOF; $i++){
$this->rs[] = $hdl->fields;
$hdl->MoveNext();
}
}
/**
* 获取当前页记录, 此函数较上边两个函数常用
*/
function curPage(){ $sql = $this->prepareQuerySQL(); $this->setResultEncode(); if($hdl = $this->db->Execute($sql)){
for($i = 0; !$hdl->EOF && $hdl; $i++){
$this->rs[] = $hdl->fields;
$hdl->MoveNext();
}
}
} /**
* 设置 总页数和总记录数
*/
function TotalPage(){
if(FALSE === ( $pos = strpos(strtoupper($this->sql), "FROM"))){
exit("ERROR: invalid SQL:".$sql);
}
//$sql = "SELECT COUNT(*) AS totalItem ".substr($this->sql, $pos);
$sql = "SELECT COUNT(*) AS totalItem FROM (".$this->sql.") a ";
$hdl = $this->db->Execute($sql);
if($hdl && !$hdl->EOF){
$this->totalItem = $hdl->fields['totalItem'];
$this->totalPage = ceil($this->totalItem / $this->pageSize);
$this->totalPage = $this->totalPage <= 0 ? 1 : $this->totalPage;
}else{
$this->totalItem = 0;
$this->totalPage = 1;
}
}
/**
* 返回分页的链接
* 参数:
* $url: 链接地址,
* $arg: 页码的参数名, 比如 page=2 中的page
* $style: 链接的CSS, eg: class=mylink 或者 style="{FONT:12px}"
* 返回: 链接字符串
*/
function pageLink($url, $arg, $style=""){
$arr = parse_url($url);
$url = "";
if(!empty($arr['scheme'])) $url .= $arr['scheme']."://";
if(!empty($arr['user'])){
if(empty($arr['pass'])) $url .= $arr['user']."@";
else $url .= $arr['user'].":".$arr['pass']."@";
}
if(!empty($arr['host'])) $url .= $arr['host'];
if(!empty($arr['port'])) $url .= ":".$arr['port'];
if(!empty($arr['path'])) $url .= $arr['path']; $line .= "共".$this->totalItem."条记录 共".$this->totalPage."页 第".$this->curPage."页 ";
if($this->totalPage == 1){
$line .= "首页 上一页 ";
$line .= "下一页 末页";
}
else{
if($this->curPage <= $this->firstPage){
$line .= "首页 上一页 ";
$line .= " <a ".$style." href=".(empty($arr['query']) ? $url."?" : $url."?".$arr['query']."&").$arg."=".$this->nextPage.">下一页</a> <a ".$style." href=".(empty($arr['query']) ? $url."?" : $url."?".$arr['query']."&").$arg."=".$this->totalPage.">末页</a>";
}
if($this->curPage >= $this->totalPage){
$line .= "<a ".$style." href=".(empty($arr['query']) ? $url."?" : $url."?".$arr['query']."&").$arg."=".$this->firstPage.">首页</a> <a ".$style." href=".(empty($arr['query']) ? $url."?" : $url."?".$arr['query']."&").$arg."=".$this->prevPage.">上一页</a> ";
$line .= "末页 下一页 ";
}
if($this->curPage > $this->firstPage && $this->curPage < $this->totalPage){
$line .= "<a ".$style." href=".(empty($arr['query']) ? $url."?" : $url."?".$arr['query']."&").$arg."=".$this->firstPage.">首页</a> <a ".$style." href=".(empty($arr['query']) ? $url."?" : $url."?".$arr['query']."&").$arg."=".$this->prevPage.">上一页</a> ";
$line .= " <a ".$style." href=".(empty($arr['query']) ? $url."?" : $url."?".$arr['query']."&").$arg."=".$this->nextPage.">下一页</a> <a ".$style." href=".(empty($arr['query']) ? $url."?" : $url."?".$arr['query']."&").$arg."=".$this->totalPage.">末页</a>";
}
}
return $line;
}}
?>
$sql_AZSQD="SELECT * FROM (SELECT ROWNUM ID,s_QZJX_AZSQD.* FROM s_QZJX_AZSQD) A WHERE A.ID BETWEEN 10 AND 30";
读取记录是这样的:
$sql_AZSQD="select * from s_QZJX_AZSQD where ejdwbm='$coid' and substr(sblbdm,1,2)='$id' order by sqdbh desc";
$result_AZSQD=OciParse($DBCONN,$sql_AZSQD);
ociexecute($result_AZSQD);
while (OciFetchInto ($result_AZSQD, &$arr_AZSQD))
{
for ($i=0;$i<74;$i++)
{
echo $arr_AZSQD[$i];
echo"</td><td>";
}
}
谢谢帮忙啊
74是什么值?,应该是你字段的总数,你的数据库s_QZJX_AZSQD表有74个字段?
你这样是不是只显示了一条记录?
($i - 1) * 20; 结束条数为$i * 20 - 1;
也就是数组的第($i - 1) * 20到$i * 20 - 1项
其实你得到了这数据后用limit ($i - 1) * 20, $i * 20 - 1;
就可以了.你想过没如果你的数据量很大,是不可能把它放到一个string中的.但以上方法超过string的可能性比较小.