$limit = 20;
$page = $page ? $page:1;
$limitstart = ($page-1)*$limit;
$sql = "select * from fx limit $limitstart,$limit";
$rs = mysql_query($sql);
while($rows=mysql_fetch_array($rs))
{
.....
}
$page = $page ? $page:1;
$limitstart = ($page-1)*$limit;
$sql = "select * from fx limit $limitstart,$limit";
$rs = mysql_query($sql);
while($rows=mysql_fetch_array($rs))
{
.....
}
{
global $page,$totalpage,$sums; //out param
$page = $_GET["page"];
//$eachpage = $page_size;
$pagesql = strstr($sql," from ");
$pagesql = "select count(*) as ids ".$pagesql;
$result = mysql_query($pagesql);
if($rs = mysql_fetch_array($result)) $sums = $rs[0];
$totalpage = ceil($sums/$page_size);
if((!$page)||($page<1)) $page=1;
$startpos = ($page-1)*$page_size;
$sql .=" limit $startpos,$page_size ";
return $sql;
}function showbar($string="")
{
global $page,$totalpage;
$out="共<font color='red'><b>".$totalpage."</b></font>页 ";
$linkNum =4;
$start = ($page-round($linkNum/2))>0 ? ($page-round($linkNum/2)) : "1";
$end = ($page+round($linkNum/2))<$totalpage ? ($page+round($linkNum/2)) : $totalpage;
$prestart=$start-1;
$nextend=$end+1;
if($page<>1)
$out .= "<a href='?page=1&&".$string."'title=第一页>第一页</a> ";
if($start>1)
$out.="<a href='?page=".$prestart."' title=上一页>..<<</a> ";
for($t=$start;$t<=$end;$t++)
{
$out .= ($page==$t) ? "<font color='red'><b>[".$t."]</b></font> " : "<a href='?page=$t&&".$string."'>$t</a> ";
}
if($end<$totalpage)
$out.="<a href='?page=".$nextend."&&".$string."' title=下一页>>>..</a>";
if($page<>$totalpage)
$out .= " <a href='?page=".$totalpage."&&".$string."' title=最后页>最后页</a>";
return $out;
}?>使用方法:$re=getpage($sql)
while($r=mysql_fetch_array($re))
{
.....
}
echo showbar();
显示为: 共10页 第一页 << [4] 5 [6] >> 最后页
连接数据库的地方就不要解释了吧!
if(!$page){ //$page是传的页数参数,如果是该参数还没有被传,就设成是1,就是当前页
$page=1;
}else{
if($page<1) $page=1;
}
$temp = ($page-1)*20; // $temp 显示每页的起点(数据库里面的记录起点,比方说从第11条显示)
$str = "select * from fx order by id DESC limit $temp,20"; //从上面的起点开始查询出20条数据
$query = mysql_query($str);
$num = mysql_num_rows($query); // 总的记录数
$numbers = ceil($num/20); 总的页数(每页显示20条,当然20你可以自己去改)
while($datarow=mysql_fetch_array($query)){ //开始循环输出,这个地方你只要用数组取出你想显示的字段值就可以了,比较简单,不说
?>下面简单和你说一下“上一页”“下一页”“首页”“尾页”<a href=index.php?page=1首页</a>
<a href=index.php?page=<?php echo $page-1;?>>上页</a>
<a href=index.php?page=<?php echo $page+1;?>>下页</a>
<a href=index.php?page=<?php echo $numbers;?>>尾页</a> //page 是参数,上面的语句会根据这个值显示相应的记录 index.php这个根据你自己的需要改变
我上面写的比较简单,等你熟悉了,可以多加一下判断条件!
$str = "select * from fx
$query = mysql_query($str);
$num = mysql_num_rows($query);
得到总记录数而不是
$str = "select * from fx order by id DESC limit $temp,20";
$query = mysql_query($str);
$num = mysql_num_rows($query); // 总的记录数
$total=$db->sql_numrows($result);
if(empty($page)){$page=1;}
$pagesize=50;if ($total<=$pagesize){ $totalpage=1;}
if($total % $pagesize)
{
$totalpage=(int)($total/$pagesize)+1;
}
else
{
$totalpage=$total/$pagesize;
}
$totalpage;
$page_string='';
if($page==1){
$page_string.='第一页|上一页|';
}
else{
$page_string.="<a href=a.php.php?page=1">第一页</a>|<a href=a.php.php?page=".($page-1).">上一页</a>|";
}
if(($page==$totalpage) || ($totalpage==0)){
$page_string.='下一页|末页';
}
else
{
$page_string.="<a href=a.php.php?page=".($page+1)."&detail=".$detail.">下一页</a>|<a href=a.php.php?page=".$totalpage."&detail=".$detail.">最后一页</a>";
}
$page_string;
$template->set_var("nowpage",$page);
$template->set_var('totalpage',$totalpage);
$template->set_var('uppage',$page_string);
select语句的
limit $offset,20
第一个参数$offset 是(offset)偏移量
第二个参数20表示取记录个数明白了原理后
推荐使用
antidestiny(周水水)的函数function getpage($sql,$page_size=20)
{
global $page,$totalpage,$sums; //out param
...
}function showbar($string="")
{
global $page,$totalpage;
...
}
使用
getpage()前保证程序使用?page=** 传递页数
showbar()显示分页链接或着
erldy(我还是我) 的类功能更好erldy实例部分可能用了phplib执行sql语句:
$sql = "select count(*) from $tbl";
$db->query($sql);
$db->next_record();
$recordcount = $db->f(0);
把$db->query换成传统的mysql_query()
总之提供了类需要的属性值就行
$page->PageSize = 20; //每页记录个数
$page->Total = $recordcount; //总记录个数
类的
$page->OffSet()得到limit的两个参数