PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了分页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,请注明来意。
标签: