社区
基础编程
帖子详情
求PHP+mysql分页如何实现
dllj
2005-05-25 11:24:16
偶是PHP初学者,不知如何进行分页显示,烦请各位大哥指教,数据库为dls,数据表为fx,内有(ID,name,lr,date)四个字段,(烦请加上注释)
...全文
250
13
打赏
收藏
求PHP+mysql分页如何实现
偶是PHP初学者,不知如何进行分页显示,烦请各位大哥指教,数据库为dls,数据表为fx,内有(ID,name,lr,date)四个字段,(烦请加上注释)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dllj
2005-05-31
打赏
举报
回复
谢谢各位大哥指教,小弟万分感激.
wy2000490
2005-05-30
打赏
举报
回复
<?php
连接数据库的地方就不要解释了吧!
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这个根据你自己的需要改变
我上面写的比较简单,等你熟悉了,可以多加一下判断条件!
indexroot
2005-05-30
打赏
举报
回复
推荐学phplib/adodb
indexroot
2005-05-30
打赏
举报
回复
关键是
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的两个参数
dongdong7
2005-05-30
打赏
举报
回复
$result=$db->sql_query($sql);
$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);
indexroot
2005-05-30
打赏
举报
回复
wy2000490(军) 的程序是不是应该在程序开头用
$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); // 总的记录数
hityyp
2005-05-30
打赏
举报
回复
其实可以用存储过程,性能会好一点
剑风
2005-05-26
打赏
举报
回复
上PCONLINE.com.cn,上面有一篇文章是分页的,一步一步教你怎么写.
dllj
2005-05-26
打赏
举报
回复
谢谢楼上各位的指教,但您们写得太复杂了,偶的基础很差,看不太懂,拜托各位前辈给加上注释,在下将万分感谢.拜托各位了!!!
erldy
2005-05-26
打赏
举报
回复
<?
/*
_________________________________
CLASS NAME:SHOWPAGE
_________________________________
Copyright(c): ERLDY(稻草人)
Author: Arvan [E-mail:erldy@126.com QQ:103808353]
Create date: 2004-09-27
________________________________
*/
/*****
实例:
$sql = "select count(*) from $tbl";
$db->query($sql);
$db->next_record();
$recordcount = $db->f(0); //记录总数
$page = new ShowPage;
$page->PageSize = 20;
$page->Total = $recordcount;
$page->LinkAry = array(); //使用array("id"=>$id)这样的数组传递url变量
$sql = "select * from $tbl order by sortid desc limit ".$page->OffSet();
$db->query($sql);
$showpage = $page->ShowLink();
*****/
class ShowPage {
var $PageSize; //每页显示的记录数
var $Total; //记录总数
var $LinkAry; //Url参数数组
//取得总页数
function PageCount() {
$TotalPage = ($this->Total % $this->PageSize == 0) ? floor($this->Total / $this->PageSize) : floor($this->Total / $this->PageSize)+1;
return $TotalPage;
}
//取得当前页
function PageNum() {
//if (isset($_GET['page']))
$page = (isset( $_GET['page'])!="") ? $_GET['page'] : $page = 1;
return $page;
}
//查询语句定位指针
function OffSet() {
if ($this->PageNum() > $this->PageCount()) {
//$this->PageNum = $this->PageCount();
$pagemin = max(0,$this->Total - $this->PageSize - 1);
}else if ($this->PageNum() == 1){
$pagemin = 0;
}else {
$pagemin = min($this->Total - 1,$this->PageSize * ($this->PageNum() - 1));
}
return $pagemin . "," . $this->PageSize;
}
//定位首页
function FristPage() {
$Frist = ($this->PageNum() <= 1) ? "首页 " : "<a href=\"?page=1".$this->Url($this->LinkAry)."\">首页</a> ";
return $Frist;
}
//定位上一页
function PrePage() {
$prepage=$this->PageNum() - 1;
$Previous = ($this->PageNum() >= 2) ? " <a href=\"?page=".$prepage.$this->Url($this->LinkAry)."\">上一页</a> " : "上一页 ";
return $Previous;
}
//定位下一页
function NextPage() {
$nextpage = $this->PageNum() + 1;
$Next = ($this->PageNum() <= $this->PageCount()-1) ? " <a href=\"?page=".$nextpage.$this->Url($this->LinkAry)."\">下一页</a> " : "下一页 ";
return $Next;
}
//定位最后一页
function LastPage() {
$Last = ($this->PageNum() >= $this->PageCount()) ? "尾页 " : " <a href=\"?page=".$this->PageCount().$this->Url($this->LinkAry)."\">尾页</a> ";
return $Last;
}
//下拉跳转页面
function JumpPage() {
$Jump = " 当前第 <b>".$this->PageNum()."</b> 页 共 <b>".$this->PageCount()."</b> 页 跳到 <select name=page onchange=\"javascript:location=this.options[this.selectedIndex].value;\">";
for ($i=1; $i<=$this->PageCount(); $i++) {
if ($i==$this->PageNum())
$Jump .= "<option value=\"?page=".$i.$this->Url($this->LinkAry)."\" selected>$i</option>";
else
$Jump .="<option value=\"?page=".$i.$this->Url($this->LinkAry)."\">$i</option> ";
}
$Jump .= "</select> 页 <b>[".$this->PageSize."条/页]</b>";
return $Jump;
}
//URL参数处理
function Url($ary) {
$Linkstr = "";
if (count($ary) > 0) {
foreach ($ary as $key => $val) {
$Linkstr .= "&".$key."=".$val;
}
}
return $Linkstr;
}
//生成导航条
function ShowLink() {
return $this->FristPage().$this->PrePage().$this->NextPage().$this->LastPage().$this->JumpPage();
}
}
?>
antidestiny
2005-05-26
打赏
举报
回复
不好意思,上面漏写了一句,在$re=getpage($sql);后加$re=mysql_query($re);
antidestiny
2005-05-25
打赏
举报
回复
很久以前用过
function getpage($sql,$page_size=20)
{
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] >> 最后页
itian
2005-05-25
打赏
举报
回复
$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))
{
.....
}
慕逸留言板1.0
几点说明:
1.数据库的主机名、用户名、密码和数据库名请先在common.inc.
php
中修改。
2.本程序使用
mysql
建表,使用时请先按上述要
求
修改配置,然后运行里面的sql_setup.
php
即可。
3.留言薄管理员的用户名和密码请在admin.inc.
php
中修改。
4.如果您的主机*支持*,在有人留言时,您可以收到一封邮件(具体在guestcheck.
php
中设定),此功能默认关
闭!
5.留言时不支持html或者ubb功能,留言搜索功能亦须补充
6.由于用到计数器(counter.txt),如果是liunx主机,请将该文件夹属性设置为777(好象是这个代码,不过
我也记不太清了,有没有晓得的朋友知会一声?);如果是windows,请将权限设置为everyone的完全控制。
7.管理员回复功能尚不具备,目前就只能和他们一块留言啦!
8.
分页
问题正在紧急处理中!(请到我的主页下载最新的版本)
9.程序正处于调试中,不排除任何bug,欢迎反映、指正。
php
mysql
分页
查询_
PHP
+
MySQL
分页
查询
实现
重要:本文最后更新于2018-11-13 20:33:49,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗。随着数据库逐日增大,数据也不能一下子全部加载出来。于是,
分页
查询数据库里的内容显示出来就显得很有必要。特别是在APP上,若是全部查询出并加载,用户消耗的流量就非常的大。下面介绍一种
分页
查询的方法,亲测可用!SQL语法:SELECT*FROMtableLIMIT[of...
PHP
+
MYSQL
实现
分页
效果
实现
原理第三大步 第一步:传入页码 第二步:根据页码取出数据 第三步:显示数据+
分页
条 第一步传入页码:$page = $_GET['p']; 这一步传入的页码,在浏览器中?p = 几页 第二步:根据页码取出数据,也就是
PHP
与
mysql
的一些操作 连接数据库:$link =
mysql
i_connect(主机名,用户名,密码,数据库) 这里加一个是否连接成功的判断if(!$lin...
PHP
+
MySQL
实现
简单的
分页
功能
今天对之前的用户管理模块
实现
了一个简单的
分页
功能,大致样式如下: 接下来谈谈具体
实现
的步骤: 1、既然涉及到
分页
,首先肯定是从数据库获取的数据就有限制,这个限制就是用limit,比如下面这个sql语句: $sql="select * from users order by id desc limit 0,3";其意思为:从用户表(users)中按降序排列取出从位置0开始的3条数据,...
PHP
+
MySQL
实现
数据
分页
显示
一、连接数据库 $connect =
mysql
i_connect('localhost', '用户名', '密码', '数据库名') or die('数据库连接失败');
mysql
i_set_charset($connect, 'utf8');
分页
其实利用的是
MySQL
中limit关键字来
实现
的,例如我们查询一个表中的前两条数据: select * from student limit 0, 2 limit后需要两个参数,第一个参数代表从第几条开始取;第二个参数代表一次取几条。 那么上述SQL语句
基础编程
21,890
社区成员
140,342
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章