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

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>";

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Bootstrap Table 是一款基于 Bootstrap 的可扩展的表格插件,它具有强大的功能和丰富的 API,可以用于展示数据、排序、筛选、分页等。在 Bootstrap Table 中,分页查询是一种常用的查询方式,下面是具体用法: 1. 引入 Bootstrap Table 插件和相关资源文件 ``` <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/bootstrap-table/1.18.3/bootstrap-table.min.css"> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/bootstrap-table/1.18.3/bootstrap-table.min.js"></script> ``` 2. 创建表格 ``` <table id="table" data-url="data.php" data-pagination="true" data-page-size="10"> <thead> <tr> <th data-field="id">ID</th> <th data-field="name">Name</th> <th data-field="age">Age</th> </tr> </thead> </table> ``` 3. 初始化表格 ``` <script> $(function() { $('#table').bootstrapTable(); }); </script> ``` 4. 创建后台数据接口 ``` <?php // 连接数据库 $conn = mysqli_connect('localhost', 'root', '123456', 'test'); if (!$conn) { die('Could not connect: ' . mysqli_error($conn)); } // 查询数据 $sql = "SELECT * FROM users"; $result = mysqli_query($conn, $sql); // 将查询结果转换为 JSON 格式 $rows = array(); while($row = mysqli_fetch_assoc($result)) { $rows[] = $row; } echo json_encode($rows); // 关闭数据库连接 mysqli_close($conn); ?> ``` 5. 在数据接口中实现分页查询 ``` <?php // 连接数据库 $conn = mysqli_connect('localhost', 'root', '123456', 'test'); if (!$conn) { die('Could not connect: ' . mysqli_error($conn)); } // 获取分页参数 $offset = isset($_GET['offset']) ? $_GET['offset'] : 0; $limit = isset($_GET['limit']) ? $_GET['limit'] : 10; // 查询数据 $sql = "SELECT * FROM users LIMIT $offset, $limit"; $result = mysqli_query($conn, $sql); // 获取数据总数 $total = mysqli_num_rows(mysqli_query($conn, "SELECT * FROM users")); // 将查询结果转换为 JSON 格式 $rows = array(); while($row = mysqli_fetch_assoc($result)) { $rows[] = $row; } $data = array( 'total' => $total, 'rows' => $rows ); echo json_encode($data); // 关闭数据库连接 mysqli_close($conn); ?> ``` 通过以上步骤,就可以实现 Bootstrap Table 的分页查询功能了。其中,关键的步骤是创建后台数据接口并实现分页查询,这里采用了 PHPMySQL 进行演示,具体实现方式可以根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值