$setup = $this->setup;
$smarty = $setup->get_smarty_handler();
$strh = $setup->get_strings_handler(); $terms = $_REQUEST['terms'];
if ($terms)
$is_search = 1; $page = $_REQUEST['p'];
$page
or $page = 1; $page_record = 10;
$page_width = 10;
$url_prefix = 'list--';
// $url_suffix = 'no'; if ($is_search)
$url_suffix = 'no';
if ($url_suffix == 'no') {
$url_prefix = "?f=list_scope"; if ($terms)
$url_prefix .= '&terms=' . urlencode($terms); $url_prefix .= '&p=';
}
$opts = array(
'no_member' => 1,
'terms' => $terms,
'status' => 1,
'curr_page' => $page,
'page_record' => $page_record,
'page_width' => $page_width,
'url_prefix' => $url_prefix,
'url_suffix' => $url_suffix
);
echo(666666);
$res = $this->db_Scope1->get_scope_pagelist($opts, $this->cache);
$list = $res['pw_rec_list'];
$total= $res['pw_rec_total'];
var_dump($list);
$flag = 1;
foreach ($list as &$l)
{
if ($flag % 5 == 0 || $flag == $total)
$l['flag'] = 1;
$flag++; $l['name'] = $strh->intercept($l['name'], 50, 1);
if ($terms) {
$l['name'] = $strh->highlight($l['name'], $terms);
} $l['pubDate']
or $l['pubDate'] = $l['post_date']; $l['cdate'] = preg_replace('/^([^\s]+)\s+(.*)/', '$1', $l['pubDate']);
$l['pdate'] = preg_replace('/(\d+)-(\d+)-(\d+)(.*)/', '$2-$3', $l['pubDate']);
}这里的分页有什么问题啊,新手不懂
你还是先到网上搜哈.其实很简单的哦~
<?php
$perpagenum = 10;//定义每页显示几条
$total = mysql_fetch_array(mysql_query("select count(*) from a"));//查询数据库中一共有多少条数据
$Total = $total[0]; //
$Totalpage = ceil($Total/$perpagenum);//上舍,取整
if(!isset($_GET['page'])||!intval($_GET['page'])||$_GET['page']>$Totalpage)//page可能的四种状态
{
$page=1;
}
else
{
$page=$_GET['page'];//如果不满足以上四种情况,则page的值为$_GET['page']
}
$startnum = ($page-1)*$perpagenum;//开始条数
$sql = "select * from a order by id limit $startnum,$perpagenum";//查询出所需要的条数
echo $sql."
";
$rs = mysql_query($sql);
$contents = mysql_fetch_array($rs);
if($total)如果$total不为空则执行以下语句
{
do
{
$id = $contents['id'];
$name = $contents['name'];
?>
<table border="0" align="center">
<tr>
<td>id:
<?php echo $id;?>
</td>
</tr>
<tr>
<td>name:
<?php echo $name;?>
</td>
</tr>
</table>
<?php
}
while($contents = mysql_fetch_array($rs));//do....while
$per = $page - 1;//上一页
$next = $page + 1;//下一页
echo "<center>共有".$Total."条记录,每页".$perpagenum."条,共".$Totalpage."页 ";
if($page != 1)
{
echo "<a href='".$_SERVER['PHP_SELF']."'>首页</a>";
echo "<a href='".$_SERVER['PHP_SELF'].'?page='.$per."'> 上一页</a>";
}
if($page != $Totalpage)
{
echo "<a href='".$_SERVER['PHP_SELF'].'?page='.$next."'> 下一页</a>";
echo "<a href='".$_SERVER['PHP_SELF'].'?page='.$Totalpage."'> 尾页</a></center>";
}
}
else如果$total为空则输出No message
{
echo "<center>No message</center>";
}
?>
Limit 10,10 //第二页
Limit 20,10 //第三页
Limit 30,10 //第四页
……
看出有什么规律了吗?没错,第一个参数每翻一页就增加10,可是第二个参数是不变的。
也就是说咱们设法根据页数来改变第一个参数的值,就可以进行分页显示数据了,怎么样,原理是不是很简单? 可是要怎么设法根据页数来改变第一个参数的值呢?首先,咱们要有一个页数的值,用url的GET方式获取。
比如index.php?page=18
相信大部分的大大对这个东西不陌生吧,这种url地址可是随处可见,其中的page参数的作用就是传入要显示的页数。 咱们通过一段代码来看一看究竟是如何实现的吧: <?php /* Author:默默
Date :2006-12-03 */ $page=isset($_GET['page'])?intval($_GET['page']):1; //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。
$num=10; //每页显示10条数据 $db=mysql_connect("host","name","pass"); //创建数据库连接
$select=mysql_select_db("db",$db); //选择要操作的数据库 /*
首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是
总数据数除以每页显示的条数,有余进一。
也就是说10/3=3.3333=4 有余数就要进一。
*/ $total=mysql_num_rows(mysql_query("select * from table")); //查询数据的总数
$pagenum=ceil($total/$num); //获得总页数 //假如传入的页数参数大于总页数,则显示错误信息
If($page>$pagenum || $page == 0){
Echo "Error : Can Not Found The page .";
Exit;
} $offset=($page-1)*$num; //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。 $info=mysql_query("select * from table limit $offset,$num"); //获取相应页数所需要显示的数据
While($it=mysql_fetch_array($info)){
Echo $it['name']."<br />";
} //显示数据 For($i=1;$i<=$pagenum;$i++){ $show=($i!=$page)?"<a href='index.php?page=".$i."'>$i</a>":"<b>$i</b>";
Echo $show." ";
} /*显示分页信息,假如是当页则显示粗体的数字,其余的页数则为超连接,假如当前为第三页则显示如下
1 2 3 4 5 6
*/
?>
假如你仔细的读过上面的代码,把数据库连接和查询的表替换成你的,那么就能看见它的执行效果哦。 是不是很简单,只要动动脑筋,可以让它显示的更为个性化哦,给大家出一个小题,如何实现“首页 上一页 下一页 尾页”这种格式的分页呢? OK,水帖灌完,收工。^_^<?php /* Author:默默
Date :2006-12-03 */ $page=isset($_GET['page'])?intval($_GET['page']):1; //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。
$num=10; //每页显示10条数据 $db=mysql_connect("localhost","root","7529639"); //创建数据库连接
mysql_select_db("cr_download"); //选择要操作的数据库 /*
首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是
总数据库除以每页显示的条数,有余进一。
也就是说10/3=3.3333=4 有余数就要进一。
*/ $result=mysql_query("select * from cr_userinfo");
$total=mysql_num_rows($result); //查询所有的数据 $url='test.php';//获取本页URL //页码计算
$pagenum=ceil($total/$num); //获得总页数,也是最后一页
$page=min($pagenum,$page);//获得首页
$prepg=$page-1;//上一页
$nextpg=($page==$pagenum ? 0 : $page+1);//下一页
$offset=($page-1)*$num; //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。 //开始分页导航条代码:
$pagenav="显示第 <B>".($total?($offset+1):0)."</B>-<B>".min($offset+10,$total)."</B> 条记录,共 $total 条记录 ";
//如果只有一页则跳出函数:
if($pagenum<=1) return false; $pagenav.=" <a href='$url?page=1'>首页</a> ";
if($prepg) $pagenav.=" <a href='$url?page=$prepg'>前页</a> "; else $pagenav.=" 前页 ";
if($nextpg) $pagenav.=" <a href='$url?page=$nextpg'>后页</a> "; else $pagenav.=" 后页 ";
$pagenav.=" <a href='$url?page=$pagenum'>尾页</a> "; //下拉跳转列表,循环列出所有页码:
$pagenav.=" 到第 <select name='topage' size='1' onchange='window.location=\"$url?page=\"+this.value'>\n";
for($i=1;$i<=$pagenum;$i++){
if($i==$page) $pagenav.="<option value='$i' selected>$i</option>\n";
else $pagenav.="<option value='$i'>$i</option>\n";
}
$pagenav.="</select> 页,共 $pagenum 页"; //假如传入的页数参数大于总页数,则显示错误信息
If($page>$pagenum){
Echo "Error : Can Not Found The page ".$page;
Exit;
} $info=mysql_query("select * from cr_userinfo limit $offset,$num"); //获取相应页数所需要显示的数据
While($it=mysql_fetch_array($info)){
Echo $it['username'];
echo "<br>";
} //显示数据
echo"<br>";
echo $pagenav;//输出分页导航 ?>
顺便再深入下,在实际应用中,几乎涉及列表的就要用到分页,大家可以试试做一个分页通用函数,这样只要需要分页的地方就调用这个函数,呵呵~~
分页有三个参数:
/* 分页参数 */
$pagesize=5;
$page = $_GET['page'] ? intval($_GET['page']) : 1;
$startlimit = ($page - 1) * $pagesize;
/* 获得数据 */
$sql = "SELECT * FROM books LIMIT {$startlimit}, {$pagesize}";
$currentpage=$startlimit/$pagesize+1;
$totalpage = ceil($count/ $pagesize);
$first=1;
$prev=$page-1;
$next=$page+1;
$last=$totalpage;
if($page==1 && $totalpage>1)
{
echo "首页|";
echo "上一页|";
echo "<a href=\"book_list.php?page=".$next."\">下一页|</a>";
echo "<a href=\"book_list.php?page=".$last."\">尾页 </a>";
}
elseif($page>1 && $page!=$totalpage)
{ echo "<a href=\"book_list.phppage=".$first."\">首页|</a>";
echo "<a href=\"book_list.php?page=".$prev."\">上一页|</a>";
echo "<a href=\"book_list.php?page=".$next."\">下一页|</a>";
echo "<a href=\"book_list.php?page=".$last."\">尾页 </a>";
}
elseif($page==$totalpage && $totalpagepage>1)
{
echo "<a href=\"book_list.php?page=".$first."\">首页|</a>";
echo "<a href=\"book_list.php?page=".$prev."\">上一页|</a>";
echo "下一页|";
echo "尾页 ";
} echo "当前第".$currentpage."页 ";
echo "共".$totalpage."页 ";
for($j = 1;$j <= $totalpage;$j++)
{
echo "<a href=book_list.php?page=".$j.">".$j." </a>";
}