大佬教程收集整理的这篇文章主要介绍了分页MySQL PHP,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用PHP,MysqL&的客户表使用分页引导程序.我写了这段代码:
<div class="container mx-auto">
<!--Add class table-responsive for responsive table -->
<table class="table mx-auto">
<thead>
<tr>
<th>Name</th>
<th>Surname</th>
<th>Email</th>
<th>Phone</th>
<th>Address</th>
<th>Zipcode</th>
<th>City</th>
<th>Company</th>
</tr>
</thead>
<tbody>
<ul class="pagination">
<?PHP
if(isset($_GET['page'])){
$prevIoUs = $_GET['page'] - 1;
if($prevIoUs = -1 ){
$prevIoUs = 0;
}
if($prevIoUs = 0){
echo '<li class="page-item"><a class="page-link" href="#">PrevIoUs</a></li>';
}
else{
echo '<li class="page-item"><a class="page-link" href="?page='. $prevIoUs.'">PrevIoUs</a></li>';
}
}
$page_max = 10;
$entriesInDatabase = $database->getData("SELECT count(id) FROM customers");
$numberOfPages = ceil($entriesInDatabase['count(id)']/$page_maX);
for($i = 0; $i < $numberOfPages; $i++){
echo '<li class="page-item"><a class="page-link" href="?page='. $i . '">'. $i. '</a></li>';
}
if(isset($_GET['page'])) {
$page = $_GET['page'];
$start = $page * 10;
$end = ($page + 1) * 10;
var_dump($start);
var_dump($end);
}
else{
$page = 0;
$start = $page * 10;
$end = 10;
}
$customers = $database->getUsers("SELECT * FROM customers LIMIT $start, $end");
?>
<li class="page-item"><a class="page-link" href="#">Next</a></li>
</ul>
<?PHP
foreach($customers as $customer){
$name = $customer ['name'];
$surname = $customer['surname'];
$email = $customer['email'];
$phone = $customer['phone'];
$address = $customer['address'];
$zipcode = $customer['zipcode'];
$city = $customer['city'];
$company = $customer['company'];
$id = $customer['id'];
echo "<tr>
<td>$name</td>
<td>$surname</td>
<td>$email</td>
<td>$phone</td>
<td>$address</td>
<td>$zipcode</td>
<td>$city</td>
<td>$company</td>
</tr>";
}
?>
我希望每个页面显示数据库中的10条记录,以便对我的SQL查询施加限制.现在发生的事情如下:第0页显示10条记录,第1页显示20条记录,第2页也显示20条记录,但第9页显示11条记录.
谁能帮我解决这个问题?
解决方法:
首先,您需要知道:
>表格中有多少条记录?您可以使用COUNT()
>每页显示多少个条目?您可以解决此问题,例如每页10个或任何数量.
然后,您需要了解LIMIT的工作原理.如果您执行诸如LIMIT 50,LIMIT 50之类的操作,则意味着使用50作为起始点(“从表中的第51条记录开始”-记住索引从0开始)并获得接下来的10行.后一个数字10是要在每页上显示的行数.
就构造链接而言,最简单的方法是使URL中的?page =参数成为LIMIT查询的第一个值,因为此值每页都会变化(例如,在上面的示例中为50),在此您知道另一个数字(10 )是常数.通过对表中的记录数除以每页的记录数,可以生成这些链接.这将为URL输出适当的数字.
假设您的数据库中有362条记录,并且希望每页显示10条记录.这将产生URL:
$per_page = 10;
$records_in_db_table = 362; // You must calculate this from a COUNT() query
$n = ceil($records_in_db_table / $per_pagE);
for ($x=0; $x<$n; $x++) {
$page = ($x * $per_pagE);
echo '?page=' . $page;
}
?page=0
?page=10
?page=20
?page=30
// ...
?page=360
然后,您只需将它们输入查询的LIMIT条件,例如
>?page = 10 == LIMIT 10,10
>?page = 20 == LIMIT 20,10
>?page = 30 == LIMIT 30,10
>等…
还值得注意的是,如果您尝试限制记录数超过现有记录数,则无需担心会发生什么.例如,最后一个URL(?page = 360)的大小为LIMIT 360(10).数据库中只有362条记录,因此您可能会认为这将不起作用,因为该查询只能返回2条记录.但是,它只会返回最后2个,没问题.
同样地,如果您尝试使用的数字超出记录总数(?page = 99999,给出LIMIT 99999,10),它将只返回一个空结果集,而不是一个错误.有些人将内容编码为简单检查,例如
if ((int)$_GET['page'] > $records_in_db_tablE) {
// Display error message
}
请记住,您应该清理$_GET [‘page’]或至少将其转换为整数.不要将$_GET中的任何内容直接注入查询中,并尽可能使用参数绑定(例如PDO).
您可能还需要查看DataTables(https://datatables.net/),因为它无需编写任何此类代码即可满足您的大量需求,并且可以与Bootstrap很好地配合使用.
以上是大佬教程为你收集整理的分页MySQL PHP全部内容,希望文章能够帮你解决分页MySQL PHP所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。