你只是select * from * order by * 这样得出来的是总数.function($baseUrl, $total, $start, $limit, $parm="", $top = 0) $baseUrl为分页的地址,比如说list.php $total为帖子总数 $start为当前页面开始的条数 $limit为每页显示数 $parm为额外添加的参数.
我的SQL就是'select t.股票代码,t.股票名称,t.推荐买入时间,t.开盘买入,t.均价卖出,t.预期收益,t.最低收益,t.最高收益 from 个股推荐展示表 t where flag=0 order by t.推荐买入时间 desc', 我需要分页的页面就是当前页,也就是上面我贴出来的页面,这个页面叫test.php,至于其他几个参数我还真是迷糊了,麻烦你帮我弄下, 拜托了
你的sql是获取所有的数据,明白不? //获取get信息 extract($_GET); if(!isset($start)) { $start = 0; } $limit = 10; $start = ($page - 1) * $limit; $end = $start + $limit;//获取总数 $query = 'select count(*) from xxx where flag=0'; ... //$total = 总数//获取从$start到$end的记录 $query1 = "select * from (select a.*,rownum as rno from xxx) where rno> $start and rno < $end;" ... //$strPage为分页的串,显示到你要显示分页页码的地方. $strPage = _setPage("test.php", $total, $start, $limit);
//获取get信息 extract($_GET); if(!isset($start)) { $start = 0; } $limit = 10; $start = ($page - 1) * $limit; $end = $start + $limit;//获取总数 $query = 'select count(*) from 个股推荐展示表 where flag=2';$total = $query;//获取从$start到$end的记录 $query1 = "select * from (select a.*,rownum as rno from 个股推荐展示表 a where flag=2) where rno> 0;"//$strPage为分页的串,显示到你要显示分页页码的地方. $str=_setPage("test.php", $total, $start, $limit);我是这样写的,没错吧? 另外$str=_setPage("test.php", $total, $start, $limit);报错。
关键是要分页效果,有知道的通知帮我弄下吧 ,网上的分页都乱七八糟的,看都看不懂,而且大多数都是mysql的,没oracle的。请各位高手帮忙写下
建议使用 pear的db类进行数据库操作.数据库部分自己写吧.再给你一个分页函数function _setPage($baseUrl, $total, $start, $limit, $parm="", $top = 0)
{
if($total != 0) $pages = $total/$limit; else $pages = 0;
if(empty($start)) $start=0;
if(empty($limit)) $limit=20;
if($start>$total)$start=$total-$limit;
if($start<0) $start=0;
if($limit<0) $limit=0;
if($limit>100) $limit=100;
//$start = $start - $top;
$showpage = 10;
$currentpage=$start/$limit;
if($currentpage<5){
$pageno=0;
$i=0;
} else{
if($currentpage+10 > $total/$limit ){
$pageno=$currentpage -5;
}else{
$pageno=$currentpage - 5;
}
$i=$pageno*$limit;
}
if($total==0) $currentpage = -1;
$strPage = "总[" . ($currentpage + 1) . "/" . ceil($pages) . "]页 ";
$page=0;
$strPage .= ""; if($start/$limit > $showpage)
{
$tmp = ($pageno - 1)* $limit;
$strPage.= "<a href='$baseUrl&$parm&start=".($tmp)."&limit=$limit'><<</a>";
}
while($i < $total)
{
if($start/$limit ==$pageno)
{
$strPage .= "<font color=red>". ($pageno + 1) ." </font>";
}
else
{
$strPage .= "<a href='$baseUrl&$parm&start=".($pageno*$limit)."&limit=$limit'>".($pageno + 1)."</a> ";
}
$pageno++;
$page++;
$i+=$limit; if($page > $showpage)
{
$strPage.= "<a href='$baseUrl&$parm&start=".($pageno*$limit)."&limit=$limit'>>></a>";
break;
}
}
if($start>0){
$strPage .= " <a href='$baseUrl?$parm&start=0&limit=$limit'>首页</a> ";
}else{
$strPage .= " 首页 ";
} if($start>0){
$strPage .= " <a href='$baseUrl&$parm&start=".($start-$limit)."&limit=$limit'>上一页</a> ";
}
if($start+$limit< $total){
$strPage .= " <a href='$baseUrl&$parm&start=".($start+$limit)."&limit=$limit' >下一页</a> ";
} if($start+$limit< $total){
$strPage .= " <a href='$baseUrl&$parm&start=".($total- $total%$limit)."&limit=$limit'>尾页</a> ";
}else{
$strPage .= " 尾页 ";
}
return $strPage;
}
这样得出来的是总数.function($baseUrl, $total, $start, $limit, $parm="", $top = 0)
$baseUrl为分页的地址,比如说list.php
$total为帖子总数
$start为当前页面开始的条数
$limit为每页显示数
$parm为额外添加的参数.
我需要分页的页面就是当前页,也就是上面我贴出来的页面,这个页面叫test.php,至于其他几个参数我还真是迷糊了,麻烦你帮我弄下, 拜托了
//获取get信息
extract($_GET);
if(!isset($start))
{
$start = 0;
}
$limit = 10;
$start = ($page - 1) * $limit;
$end = $start + $limit;//获取总数
$query = 'select count(*) from xxx where flag=0';
...
//$total = 总数//获取从$start到$end的记录
$query1 = "select * from (select a.*,rownum as rno from xxx) where rno> $start and rno < $end;"
...
//$strPage为分页的串,显示到你要显示分页页码的地方.
$strPage = _setPage("test.php", $total, $start, $limit);
extract($_GET);
if(!isset($start))
{
$start = 0;
}
$limit = 10;
$start = ($page - 1) * $limit;
$end = $start + $limit;//获取总数
$query = 'select count(*) from 个股推荐展示表 where flag=2';$total = $query;//获取从$start到$end的记录
$query1 = "select * from (select a.*,rownum as rno from 个股推荐展示表 a where flag=2) where rno> 0;"//$strPage为分页的串,显示到你要显示分页页码的地方.
$str=_setPage("test.php", $total, $start, $limit);我是这样写的,没错吧? 另外$str=_setPage("test.php", $total, $start, $limit);报错。
extract($_GET); 这句话里面不要加参数了吗?
$total = $query;
你还是要执行
$stmt = oci_parse($cn,$query);
oci_execute($stmt);
这些操作的吗呵呵,我对oci系统的函数不熟,以前的时候都是用pear_db来操作的.
require_once("./database/conn.php");
require_once './database/operatebean.php';
//echo "dddd";
$db = new database();
//echo $nrows;
$cn = $db->conn;
$query = 'select t.股票代码,t.股票名称,t.推荐买入时间,t.开盘买入,t.均价卖出,t.实际收益 from 个股推荐展示表 t where flag=2 order by t.推荐买入时间 desc';
//$stmt = oci_parse($cn,$query);
//oci_execute($stmt);
$stmt =oci_parse($cn,$query);
oci_execute($stmt);
$nrows = ocifetchstatement($stmt, $results);
echo "<html><head> <link rel=\"stylesheet\" type=\"text/css\" href=\"./style/css.css\"/><body>";
echo "<center><font size=4>个股推荐可能达到的最大收益展示</font><br><font color=red size=4>(".substr($results['推荐买入时间'][$nrows-1],0,4)."年".substr($results['推荐买入时间'][$nrows-1],5,2)."月".substr($results['推荐买入时间'][$nrows-1],8,2)."日——".substr($results['推荐买入时间'][0],0,4)."年".substr($results['推荐买入时间'][0],5,2)."月".substr($results['推荐买入时间'][0],8,2)."日)</font></center><br><br>";
// echo "<hr>";
echo "<table border=1 align=center cellspacing=0 cellpadding=0 width=770 height=827><tr><td align=center>股票代码</td><td align=center>股票名称</td><td align=center>推荐时间</td><td align=center>开盘买入</td><td align=center>均价卖出</td><td align=center>实际收益</td><td align=center>累计收益</td><td align=center>次均收益</td></tr>";
for($i = 0; $i < $nrows; $i++){
$temp=1;
for($j=$nrows-1;$j>=$i;$j--){
$temp=$temp*(1+($results['实际收益'][$j]/100));
// echo $temp."<br>";
// echo "-----------------------------------------";
}
$temp2=($temp-1)/($nrows-$i);
echo "
<tr>
<td align=center>".$results['股票代码'][$i]."</td>
<td align=center>".$results['股票名称'][$i]."</td>
<td align=center>".$results['推荐买入时间'][$i]."</td>
<td align=center>".$results['开盘买入'][$i]."</td>
<td align=center>".$results['均价卖出'][$i]."</td>
<td align=center>".($results['实际收益'][$i]+0)."%</td>
<td align=center>".round((($temp-1)*100),2)."%</td>
<td align=center>".round(($temp2*100),2)."%</td>
</tr>
";
}
echo "</table>";
//获取get信息
extract($_GET);
if(!isset($start))
{
$start = 0;
}
$limit = 10;
$start = ($page - 1) * $limit;
$end = $start + $limit;//获取总数
$query2 = 'select count(*) from 个股推荐展示表 where flag=2';
$stmt2 =oci_parse($cn,$query2);
oci_execute($stmt2);
$nrows2 = ocifetchstatement($stmt2, $results2);
$total = $nrows2;//获取从$start到$end的记录
//$query1 = "select * from (select a.*,rownum as rno from 个股推荐展示表 a where flag=2) where rno> 0;"//$strPage为分页的串,显示到你要显示分页页码的地方.
$str=_setPage("test.php", $total, $start, $limit); echo "<center>".$str."</center>";
echo "</html></head></body>";
我那样写是省了那几部,这是我改了以后的代码,但是还是没用,最后显示的结果是这样的:总[1/1]页 1 首页 尾页
,我改了那个limit=10,也还是这样,不知道什么原因, 麻烦你在帮我看看 ,帮人帮到底吧 先谢谢了
require_once './database/operatebean.php';
//echo "dddd";
$db = new database();
//echo $nrows;
$cn = $db->conn;
//获取get信息
extract($_GET);
if(!isset($start))
{
$start = 0;
}
$limit = 10;
$page = ceil($start/$limit) + 1;
$end = $start + $limit;//获取总数
$query2 = 'select count(*) from 个股推荐展示表 where flag=2';
$stmt2 =oci_parse($cn,$query2);
oci_execute($stmt2);
$nrows2 = ocifetchstatement($stmt2, $results2);
$total = $nrows2;//获取从$start到$end的记录
//$query1 = "select * from (select a.*,rownum as rno from 个股推荐展示表 a where flag=2) where rno> 0;"//$strPage为分页的串,显示到你要显示分页页码的地方.
$str=_setPage("test.php", $total, $start, $limit);//这个sql要写成当前页的sql///$query = 'select t.股票代码,t.股票名称,t.推荐买入时间,t.开盘买入,t.均价卖出,t.实际收益 from 个股推荐展示表 t where flag=2 order by t.推荐买入时间 desc';
$query1 = "select t.股票代码,t.股票名称,t.推荐买入时间,t.开盘买入,t.均价卖出,t.实际收益 from (select a.*,rownum as rno from 个股推荐展示表 a where flag=2) where rno> $start and rno < $end "
//$stmt = oci_parse($cn,$query);
//oci_execute($stmt);
$stmt =oci_parse($cn,$query);
oci_execute($stmt);
$nrows = ocifetchstatement($stmt, $results);
echo "<html><head> <link rel=\"stylesheet\" type=\"text/css\" href=\"./style/css.css\"/><body>";
echo "<center><font size=4>个股推荐可能达到的最大收益展示</font><br><font color=red size=4>(".substr($results['推荐买入时间'][$nrows-1],0,4)."年".substr($results['推荐买入时间'][$nrows-1],5,2)."月".substr($results['推荐买入时间'][$nrows-1],8,2)."日——".substr($results['推荐买入时间'][0],0,4)."年".substr($results['推荐买入时间'][0],5,2)."月".substr($results['推荐买入时间'][0],8,2)."日)</font></center><br><br>";
// echo "<hr>";
echo "<table border=1 align=center cellspacing=0 cellpadding=0 width=770 height=827><tr><td align=center>股票代码</td><td align=center>股票名称</td><td align=center>推荐时间</td><td align=center>开盘买入</td><td align=center>均价卖出</td><td align=center>实际收益</td><td align=center>累计收益</td><td align=center>次均收益</td></tr>";
for($i = 0; $i < $nrows; $i++){
$temp=1;
for($j=$nrows-1;$j>=$i;$j--){
$temp=$temp*(1+($results['实际收益'][$j]/100));
// echo $temp."<br>";
// echo "-----------------------------------------";
}
$temp2=($temp-1)/($nrows-$i);
echo "
<tr>
<td align=center>".$results['股票代码'][$i]."</td>
<td align=center>".$results['股票名称'][$i]."</td>
<td align=center>".$results['推荐买入时间'][$i]."</td>
<td align=center>".$results['开盘买入'][$i]."</td>
<td align=center>".$results['均价卖出'][$i]."</td>
<td align=center>".($results['实际收益'][$i]+0)."%</td>
<td align=center>".round((($temp-1)*100),2)."%</td>
<td align=center>".round(($temp2*100),2)."%</td>
</tr>
";
}
echo "</table>";
echo "<center>".$str."</center>";
echo "</html></head></body>";
require_once("./database/conn.php");
require_once './database/operatebean.php';
//echo "dddd";
$db = new database();
//echo $nrows;
$cn = $db->conn;
$query = 'select t.股票代码,t.股票名称,t.推荐买入时间,t.开盘买入,t.均价卖出,t.实际收益 from 个股推荐展示表 t where flag=2 order by t.推荐买入时间 desc';
//$stmt = oci_parse($cn,$query);
//oci_execute($stmt);
$stmt =oci_parse($cn,$query);
oci_execute($stmt);
$nrows = ocifetchstatement($stmt, $results);
echo "<html><head> <link rel=\"stylesheet\" type=\"text/css\" href=\"./style/css.css\"/><body>";
echo "<center><font size=4>个股推荐可能达到的最大收益展示</font><br><font color=red size=4>(".substr($results['推荐买入时间'][$nrows-1],0,4)."年".substr($results['推荐买入时间'][$nrows-1],5,2)."月".substr($results['推荐买入时间'][$nrows-1],8,2)."日——".substr($results['推荐买入时间'][0],0,4)."年".substr($results['推荐买入时间'][0],5,2)."月".substr($results['推荐买入时间'][0],8,2)."日)</font></center><br><br>";
// echo "<hr>";
echo "<table border=1 align=center cellspacing=0 cellpadding=0 width=770 height=827><tr><td align=center>股票代码</td><td align=center>股票名称</td><td align=center>推荐时间</td><td align=center>开盘买入</td><td align=center>均价卖出</td><td align=center>实际收益</td><td align=center>累计收益</td><td align=center>次均收益</td></tr>";
for($i = 0; $i < $nrows; $i++){
$temp=1;
for($j=$nrows-1;$j>=$i;$j--){
$temp=$temp*(1+($results['实际收益'][$j]/100));
// echo $temp."<br>";
// echo "-----------------------------------------";
}
$temp2=($temp-1)/($nrows-$i);
echo "
<tr>
<td align=center>".$results['股票代码'][$i]."</td>
<td align=center>".$results['股票名称'][$i]."</td>
<td align=center>".$results['推荐买入时间'][$i]."</td>
<td align=center>".$results['开盘买入'][$i]."</td>
<td align=center>".$results['均价卖出'][$i]."</td>
<td align=center>".($results['实际收益'][$i]+0)."%</td>
<td align=center>".round((($temp-1)*100),2)."%</td>
<td align=center>".round(($temp2*100),2)."%</td>
</tr>
";
}
echo "</table>";
//获取get信息
extract($_GET);
if(!isset($start))
{
$start = 0;
}
$limit = 10;
$start = ($page - 1) * $limit;
$end = $start + $limit;//获取总数
$query2 = 'select 股票代码,股票名称,推荐买入时间,开盘买入,均价卖出,实际收益 from (select 股票代码,股票名称,推荐买入时间,开盘买入,均价卖出,实际收益,rownum as rno from 个股推荐展示表 t where flag=2) where rno>0';
$stmt2 =oci_parse($cn,$query2);
oci_execute($stmt2);
$nrows2 = ocifetchstatement($stmt2, $results2);
$total = $nrows2;//获取从$start到$end的记录
//$query1 = "select * from (select a.*,rownum as rno from 个股推荐展示表 a where flag=2) where rno> 0;"//$strPage为分页的串,显示到你要显示分页页码的地方.
$str=_setPage("test3.php", $total, $start, $limit);
echo $nrows2;
echo "<center>".$str."</center>";
echo "</html></head></body>";
//while ($row=oci_fetch_array($stmt))
//{
//echo "$row[0] ";
//var_dump($row[0]);//}
oci_free_statement($stmt);
/**
* $baseUrl为分页的地址,比如说list.php
$total为帖子总数
$start为当前页面开始的条数
$limit为每页显示数
$parm为额外添加的参数.
*/
function _setPage($baseUrl, $total, $start, $limit, $parm="", $top = 0)
{
if($total != 0) $pages = $total/$limit; else $pages = 0;
if(empty($start)) $start=0;
if(empty($limit)) $limit=10;
if($start>$total)$start=$total-$limit;
if($start<0) $start=0;
if($limit<0) $limit=0;
if($limit>100) $limit=100;
//$start = $start - $top;
$showpage = 10;
$currentpage=$start/$limit;
if($currentpage<5){
$pageno=0;
$i=0;
} else{
if($currentpage+10 > $total/$limit ){
$pageno=$currentpage -5;
}else{
$pageno=$currentpage - 5;
}
$i=$pageno*$limit;
}
if($total==0) $currentpage = -1;
$strPage = "总[".($currentpage + 1)."/".ceil($pages)."]页 ";
$page=0;
$strPage .= ""; if($start/$limit > $showpage)
{
$tmp = ($pageno - 1)* $limit;
$strPage.= "<a href='$baseUrl&$parm&start=".($tmp)."&limit=$limit'><<</a>";
}
while($i < $total)
{
if($start/$limit ==$pageno)
{
$strPage .= "<font color=red>". ($pageno + 1) ." </font>";
}
else
{
$strPage .= "<a href='$baseUrl&$parm&start=".($pageno*$limit)."&limit=$limit'>".($pageno + 1)."</a> ";
}
$pageno++;
$page++;
$i+=$limit; if($page > $showpage)
{
$strPage.= "<a href='$baseUrl&$parm&start=".($pageno*$limit)."&limit=$limit'>>></a>";
break;
}
}
if($start>0){
$strPage .= " <a href='$baseUrl?$parm&start=0&limit=$limit'>首页</a> ";
}else{
$strPage .= " 首页 ";
} if($start>0){
$strPage .= " <a href='$baseUrl&$parm&start=".($start-$limit)."&limit=$limit'>上一页</a> ";
}
if($start+$limit< $total){
$strPage .= " <a href='$baseUrl&$parm&start=".($start+$limit)."&limit=$limit' >下一页</a> ";
} if($start+$limit< $total){
$strPage .= " <a href='$baseUrl&$parm&start=".($total- $total%$limit)."&limit=$limit'>尾页</a> ";
}else{
$strPage .= " 尾页 ";
}
return $strPage;
}
?>
然后其他的不要写在里面
页面也只是个调用
只要是分页的地方
都调用这个php文件