$query = "SELECT time,body,id FROM book";
$rresult = mysql_query($query) or die("无法执行SQL:$query");
$rresult = mysql_query($query) or die("无法执行SQL:$query");
解决方案 »
- 请教php大师---phpnewnew
- 在PHP100教学视频里的13课有的一段代码,运行之后翻页一直显示第1页的内容。
- 附件调用问题
- JSP中关于页面转发标签<jsp:forward>中的参数问题
- 如何忽略插入数据错误,继续执行下一条语句。
- 特急,请教版主和各位高手,MySQL数据库最多能支持多少个连接,怎样提高网站的传输效率和安全性,在线等
- 有无patch好的gd2 gif for win或者帮偶patch一下?
- php和access连接
- 在PHP中如何获得英文和中文文字的UNICODE编码值?
- 关于模拟登陆的问题!__RequestVerificationToken值每次都会变!
- 请问有没有更好的办法解决路径问题?
- 觉得不错的无限目录代码分享,只放几天。
如果我在
$rresult = mysql_query(SELECT time,body,id FROM book limit 5) or die("无法执行SQL:$query");
那么一页会显示五条,但是翻页没有了,只会显示数据库中前五条记录。
如果我这么用:$rresult = mysql_query(SELECT time,body,id FROM book limit $page,5) or die("无法执行SQL:$query");就提示无法执行sql;
唠叨老大,怎么回事?
$rresult = mysql_query("SELECT time,body,id FROM book limit 5");
就只返回5条记录,你需要先
$rs = mysql_query("select count(*) from book");
取得总记录数
再用
$rresult = mysql_query("SELECT time,body,id FROM book limit $page,5");
取得从$page开始的5条记录
注意:
1、$page必须有值
2、一般$page是页号,而所在页的起始记录是($page-1)*$pagesize,这里$pagesize=5
$rresult = mysql_query("SELECT time,body,id FROM book limit $rs,5");
把$page改为$rs?
我用了if( mysql_data_seek($rresult,($page-1)*$gPageSize) ){ while ($data=mysql_fetch_array($rresult)) { printf("<tr><td nowrap width='200'><font color='#teal' size='2'>%s</font></td>",$data["time"]); printf("<td nowrap></td>"); printf("<td nowrap width='200'><font color='#teal' size='2'>%s</font></td>",$data["body"]);
printf("<td nowrap><input type='checkbox' name='select_id[]' onclick=chcolor(this,'#ffdddd')
value='%s'></td></tr>",$data["id"]);
关键还是不知道显示的时候怎么限制行数,你上面说要先计算总记录数,计算完后我不知道下面该怎么做,limit后面的第一个参数跟什么东西。 }
}
mysql_data_seek ( resource result_identifier, int row_number)
知道这个表示什么吗?
$page=该页数,假设$page=2
$gPageSize=5
换句话说($page-1)*$gPageSize=5
$sql="SELECT time,body,id FROM book limit ($page-1)*$gPageSize,5"
也就是limit 5,5 ——从第五条记录开始选五条
一共才五条啊,mysql_data_seek($rresult,($page-1)*$gPageSize)有意义吗?
mysql_data_seek($rresult,($page-1)*$gPageSize)一下子就从5开始了……limit是针对你前面的while ($data=mysql_fetch_array($rresult))来写的
你一下子换了个函数,limit就没有意义了,当然也就达不到你希望的那样子
去掉以后,会根据我的要求超过五行就自动分页,但是点任何一页也还是显示全部记录,我就是不知道limit的第一个参数该怎么定义,请教的就是这个啊。。
$b 就是你要显示几条的数但---数据库里第一个的数字不是1,是0,
所以,你要想从第一条开始,连接显示5条,就应该limit 0,5
第二页 limit 5,5
第三页 limit 10,5
第四页 limit 15,5
……每一页取出来的都是5条,不可能显示全部记录
呵呵,难道你没有写mysql_free_result($result)和mysql_close()吗?
然后:
$rresult = mysql_query(SELECT time,body,id FROM book limit ($page-1)*$gPageSize,5) or die("无法执行SQL:$query");
当page为1的时候是从0开始啊,为第二页时从5开始,但是说执行这条语句出错。
mysql_query(SELECT time,body,id FROM book limit ($page-1)*$gPageSize,5)mysql_query ( string query [, resource link_identifier])
php把“,5”当作“,resource link_identifier”同志,手册还是要看的啊
加上limit就不行
你应该在前面用$sql,然后mysql_query ($sql)才行
放在显示的前面,这样的话比如我有七条记录,按我要求每页五行,按道理第一页五行,第二页就是两行,我点下一页是两行没错,但是第一页还是有7条记录,就是说第一页还是显示全记录。
我把那函数拿掉以后,这下第一和第二页都显示全记录,7条记录了。
为什么??
mysql_data_seek($rresult,($page-1)*$gPageSize)就是:
mysql_data_seek($rresult,0)
共7条记录,从0 开始到6结束中间不停顿,所以共显示7条第二页 $page=2
mysql_data_seek($rresult,($page-1)*$gPageSize)就是:
mysql_data_seek($rresult,5)
共7条记录,从5 开始到6结束中间不停顿,所以显示5和6共两条记录
$num = 0;
while($row=mysql_fetch_array($rs) && $num<5) {
//输出数据
$num++;
}
<?
$gPageSize= 5; //每页显示的记录数$hostname = "localhost"; //mysql Server$dbuser = "root"; //用户名$dbpasswd = ""; //密码//连接数据库$id = mysql_connect($hostname,$dbuser,$dbpasswd) or die("无法连接数据库服务器!");//选择数据库$db = mysql_select_db("cm",$id) or die("无法连接数据库!");$query = "SELECT time,body,id FROM book"; //执行查询语句$rresult = mysql_query($query) or die("无法执行SQL:$query");//$page变量标示当前显示的页if(!isset($_GET['page'])) $page=1;
else $page=$_GET['page'];
if($page==0) $page=1;//得到当前查询到的纪录数 $nNumRowsif(($nNumRows= mysql_num_rows($rresult))<=0){echo "<p align=center>没有纪录";exit;};//得到最大页码数MaxPage$MaxPage = (int)ceil($nNumRows/$gPageSize);if((int)$page > $MaxPage)$page=$maxPage;?><table align="center" width="80%" border=0> <tr><td><? echo "<font size=2>第
$page 页,共 $MaxPage 页</font>";?></td><td></td></tr></table><table align="center" width="80%" border="1" cellspacing="0" cellpadding="4" bordercolorlight="#CC9966" bgcolor="#00F2EE" bordercolordark="#FFFFFF" class="LZH"><tr bgcolor="#F7F2ff" style="font-size:14.8px;font-weight:bold"><?//显示表格头for($iCnt = 0; $iCnt < mysql_num_fields($rresult); $iCnt++){echo "<td>".mysql_field_name($rresult,$iCnt)."</td>" ;}?></tr><?//根据偏移量($page - 1)*$gPageSize,运用mysql_data_seek函数得到要显示的页面if( mysql_data_seek($rresult,($page-1)*$gPageSize) ){ while ($data=mysql_fetch_array($rresult)) { printf("<tr><td nowrap width='200'><font color='#teal' size='2'>%s</font></td>",$data["time"]); printf("<td nowrap></td>"); printf("<td nowrap width='200'><font color='#teal' size='2'>%s</font></td>",$data["body"]);
printf("<td nowrap><input type='checkbox' name='select_id[]' onclick=chcolor(this,'#ffdddd')
value='%s'></td></tr>",$data["id"]); }
}
?></table><br/><hr size=1 width=80%><div align=center style="font-size:12px"><?
if( $nNumRows>1 && $page>1){$prevPage=$page-1;
echo " <a href=$PHP_SELF?page=1>首页</a> ";echo " <a href=$PHP_SELF?page=$prevPage >上一页</a> ";}//下一页和末页的链接if( $page>=1 && $page<$MaxPage){$nextPage= $page+1;echo " <a href=$PHP_SELF?page=$nextPage >下一页</a> ";echo " <a href=$PHP_SELF?page=$MaxPage >末页</a> ";}?>
$gPageSize= 5; //每页显示的记录数//$page变量标示当前显示的页if(!isset($_GET['page'])) $page=1;
else $page=$_GET['page'];
if($page==0) $page=1;$hostname = "localhost"; //mysql Server$dbuser = "root"; //用户名$dbpasswd = ""; //密码//连接数据库$id = mysql_connect($hostname,$dbuser,$dbpasswd) or die("无法连接数据库服务器!");//选择数据库$db = mysql_select_db("cm",$id) or die("无法连接数据库!");$query = "SELECT time,body,id FROM book"; //执行查询语句$rresult = mysql_query($query) or die("无法执行SQL:$query");
//得到当前查询到的纪录数 $nNumRows
$nNumRows= mysql_num_rows($rresult);if($nNumRows<=0){echo "<p align=center>没有纪录";exit;};//得到最大页码数MaxPage$MaxPage = (int)ceil($nNumRows/$gPageSize);if((int)$page > $MaxPage)$page=$maxPage;?><table align="center" width="80%" border=0> <tr><td><? echo "<font size=2>第
$page 页,共 $MaxPage 页</font>";?></td><td></td></tr></table><table align="center" width="80%" border="1" cellspacing="0" cellpadding="4" bordercolorlight="#CC9966" bgcolor="#00F2EE" bordercolordark="#FFFFFF" class="LZH"><tr bgcolor="#F7F2ff" style="font-size:14.8px;font-weight:bold"><?//显示表格头for($iCnt = 0; $iCnt < mysql_num_fields($rresult); $iCnt++){echo "<td>".mysql_field_name($rresult,$iCnt)."</td>" ;}?></tr><?//根据偏移量($page - 1)*$gPageSize,运用mysql_data_seek函数得到要显示的页面if( mysql_data_seek($rresult,($page-1)*$gPageSize) ){
$i=0;
while ($data=mysql_fetch_array($rresult) && $i<5) { printf("<tr><td nowrap width='200'><font color='#teal' size='2'>%s</font></td>",$data["time"]); printf("<td nowrap></td>"); printf("<td nowrap width='200'><font color='#teal' size='2'>%s</font></td>",$data["body"]);
printf("<td nowrap><input type='checkbox' name='select_id[]' onclick=chcolor(this,'#ffdddd')
value='%s'></td></tr>",$data["id"]);
$i++;
}
}
?></table><br/><hr size=1 width=80%><div align=center style="font-size:12px"><?
if( $nNumRows>1 && $page>1){$prevPage=$page-1;
echo " <a href=$PHP_SELF?page=1>首页</a> ";echo " <a href=$PHP_SELF?page=$prevPage >上一页</a> ";}//下一页和末页的链接if( $page>=1 && $page<$MaxPage){$nextPage= $page+1;echo " <a href=$PHP_SELF?page=$nextPage >下一页</a> ";echo " <a href=$PHP_SELF?page=$MaxPage >末页</a> ";}?>
试一下,可能还有错