mysql分页的原理、php实现分页

2023-12-13 05:46:09
1、首先了解SQL语句中的limit用法
SELECT * FROM table …… limit 开始位置 , 操作条数 (其中开始位置是从0开始的)

取前20条记录:

SELECT * FROM table …… limit ? 0 , 20

从第11条开始取20条记录:

SELECT * FROM table …… limit ? 10 , 20??

LIMIT n 和 LIMIT 0,n的意思是一样的。

?如select * from table LIMIT 5; //返回前5行,和 select * from table LIMIT 0,5一样
2、分页原理

所谓分页显示,也就是将数据库中的结果集,一段一段显示出来。

怎么分段,当前在第几段 (每页有几条,当前再第几页)

前10条记录:select * from table limit 0,10

第11至20条记录:select * from table limit 10,20

第21至30条记录:select * from table limit 20,30

分页公式:

(当前页数 - 1 )X 每页条数 , 每页条数

?Select * from table limit ($Page- 1) * $PageSize, $PageSize?
3.php原生代码:?
<?php
 include("conn.php");
$pagesize=2; //设置每页显示2个记录
$url=$_SERVER["REQUEST_URI"]; 
$url=parse_url($url);
$url=$url[path];
 
$numq=mysql_query("SELECT * FROM `message`");
$num = mysql_num_rows($numq);
if($_GET){
$pageval=$_GET;
$page=($pageval-1)*$pagesize;
$page.=',';
}
if($num > $pagesize){
 if($pageval<=1)$pageval=1;
 echo "共 $num 条".
 " <a href=$url?page=".($pageval-1).">上一页</a> <a href=$url?page=".($pageval+1).">下一页</a>";
}
$SQL="SELECT * FROM `message` limit $page $pagesize ";
 $query=mysql_query($SQL);
  
 while($row=mysql_fetch_array($query)){
?>
<table width=500 border="0" cellpadding="5" cellspacing="1" bgcolor="#add3ef">
 <tr bgcolor="#eff3ff">
 <td>标题:<?php echo $row[title]?></td> <td>时间:<?php echo $row[lastdate]?></td>
 </tr>
 <tr bgcolor="#eff3ff">
 <td> 用户:<?php echo $row[user]?></td><td></td>
 </tr>
 <tr>
 <td>内容:<?php echo htmtocode($row[content]);?></td>
 </tr>
 <br>
</table>
<?php
 }
?>
header("Content-Type:text/html;charset=GB2312"); 
$pagesize=10; 
//echo $_POST['page']; 
$result = mysql_query("Select count(DISTINCT hotelname) FROM ".TBL_HOTELS); 
$myrow = mysql_fetch_array($result); 
$numrows=$myrow[0]; 
 
$pages=intval($numrows/$pagesize); 
if ($numrows%$pagesize) 
$pages++; 
if (isset($_POST['page'])){ 
$page=intval($_POST['page']); 
} 
else{ 
//设置为第一页 
$page=1; 
} 
$first=1; 
$prev=$page-1; 
$next=$page+1; 
$last=$pages; 
//计算记录偏移量 
$offset=$pagesize*($page - 1); 
//读取指定记录数 
$result=mysql_query("select `hotelname` , count( * ) from ".TBL_HOTELS." GROUP BY `hotelname` order by id desc limit $offset,$pagesize"); 
$num = mysql_num_rows($result); 
while ($row = mysql_fetch_array($result,MYSQL_NUM)) { 
$hotelname[] = $row[0]; 
$countpeople[] = $row[1]; 
} 
for($a=0;$a<$num;$a++) 
{ 
//$result=mysql_query("select count(title) from " . TBL_Comments ." where `title`=\\"".$title[$a]."\\""); 
//$row = mysql_fetch_row($result); 
echo "<TABLE style=\\"MARGIN-BOTTOM: 20px\\" cellSpacing=0 cellPadding=0 width=100% border=0>\\n"; 
echo "<TBODY>\\n"; 
echo "<TR>\\n"; 
echo "<TD style=\\"PADDING-TOP: 5px\\" vAlign=top align=left width=80>\\n"; 
//rating_bar($title[$a],5); 
echo "</TD>\\n"; 
echo "<TD style=\\"PADDING-TOP: 5px\\" align=left width=100%><A title=$hotelname[$a] style=\\"FONT-SIZE: 14px\\" href=#>$hotelname[$a]</A>\\n"; 
echo "</TD></TR>\\n"; 
echo " <TR>\\n"; 
echo "<TD></TD>\\n"; 
echo "<TD style=\\"PADDING-LEFT: 0px\\">\\n"; 
echo "<IMG src=\\"images/comment.gif\\" border=0> 推荐人数:($countpeople[$a]) |\\n"; 
echo "<SPAN>平均分:<STRONG></STRONG> (".$count."票) | 评论数:()</SPAN>\\n"; 
echo "</TD></TR></TBODY></TABLE>\\n"; 
} 
echo "<TABLE style=\\"MARGIN-TOP: 30px\\" cellSpacing=0 cellPadding=0 width=\\"100%\\""; 
echo "border=0>"; 
echo "<TBODY><TR><TD colSpan=3 height=20>"; 
echo "<DIV align=center>"; 
echo "<P align=left><FONT color=red>第".$page."页/总".$pages."页 | 总".$numrows."条</FONT> | "; 
if ($page>1) echo "<a onclick=\\"viewpage(".$first.")\\" href='#'>首页</a> | "; 
if ($page>1) echo "<a onclick=\\"viewpage(".$prev.")\\" href='#'>上页</a> | "; 
if ($page<$pages) echo "<a onclick=\\"viewpage(".$next.")\\" href='#'>下页</a> | "; 
if ($page<$pages) echo "<a onclick=\\"viewpage(".$last.")\\" href='#'>尾页</a>"; 
echo "转到第 <INPUT maxLength=3 size=3 value=1 name=goto_page> 页 <INPUT hideFocus onclick=\\"viewpage(document.all.goto_page.value)\\" type=button value=Go name=cmd_goto>"; 
echo "</P></DIV></TD></TR></TBODY></TABLE>";

文章来源:https://blog.csdn.net/qq_32450471/article/details/134954210
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。