【问题标题】:How to make next, previous links for data fetched from database in PHP? [closed]如何在 PHP 中为从数据库中获取的数据创建下一个、上一个链接? [关闭]
【发布时间】:2013-09-18 21:25:27
【问题描述】:

我已经创建了一个页面来从 mysql 数据库中获取数据。我想每页只显示 10 个结果,其他结果使用下一个按钮,上一个结果使用上一个按钮。

我使用以下代码获取数据:

$item=$_POST('item');
$query=mysql_query("select name,address,contact from info_tb where keyword='$item'");

while($row=mysql_fetch_array('$query'))
{
echo "Name : row[0]":
echo "Address : row[1]":
echo "Contact : row[2]":
}

【问题讨论】:

    标签: php mysql database next


    【解决方案1】:

    在您的 mySQL 查询中使用 LIMIT 关键字。

    SELECT * FROM `your_table` LIMIT 0, 10 
    

    好像你想浏览记录,所以..

     SELECT * FROM `your_table` LIMIT 5, 10 
    

    这些记录将显示为 6、7、8、9、10、11、12、13、14、15

    如果你想导航,你需要控制这个参数,如图所示。

    SELECT * FROM `your_table` LIMIT 5, 10
                                     ^  
    

    好像你最近发布了代码,在你的代码上试试这样的东西。

    $item=$_POST['item'];
    $page=$_POST['pno'];
    $query=mysql_query("select name,address,contact from info_tb where keyword='$item' limit '$page',10");
    

    【讨论】:

    • 但这不是他要问的。他不想将查询结果限制为前 10 个匹配行。他希望每页显示 10 个结果,并使用“下一个”和“上一个”按钮来翻阅它们。他希望其他人从头开始为他编写代码。
    • 如果你愿意,请告诉我逻辑,我已经为此尝试了很多东西。
    • 我们可以看出 OP 显然还不知道如何分页查询结果,因此这个答案是一个很好的答案。
    • 谢谢我试试这个。
    【解决方案2】:

    对于您的第一页,您必须从数据库中检索前 10 个结果,即 1、2、3 ... 9、10 行:

    SELECT * FROM `table` LIMIT 0, 10
    

    并打印出您的结果。 如果,假设用户在第 4 页,您将不得不从 31、32、33.. 39、40 行中检索。在 PHP 等服务器脚本中计算偏移量和 row_count:

    $page_no = 4;
    $row_count = 10; 
    $offset = ($page_no - 1) * $row_count; // results 30
    

    现在您的 SQL 将是:

    SELECT * FROM `table` LIMIT 30, 10;
    

    因此您将拥有可以打印出来的 31、32、33... 行。 页码可以通过 GET 或 POST 参数获取。

    【讨论】:

    • 谢谢,我想这个肯定会帮助我。
    【解决方案3】:

    您当然可以打印出整个结果并使用 jQuery 对其进行分页:

    <!-- Download jquery and link locally.  Directlinking to jQuery should only be used for testing purposes. -->
    <script type='text/javascript' src='http://code.jquery.com/jquery-git2.js'></script>
    <script type="text/javascript">
        var pageno = 0;
        var maxpageno = 0;
        function show(){
            if (pageno < 0) { pageno = 0}
            if (pageno > maxpageno) { pageno = maxpageno}
            $('#results tbody tr').hide();
            $('#results tbody tr.page'+pageno).show();
        }
    </script>
    <body onload="show();">
    <?php
        $sql = "SELECT * FROM books";   
        //result is boolean for query other than SELECT, SHOW, DESCRIBE and EXPLAIN
        $result = $short_connect->query($sql);
        if (($result) && ($result->num_rows > 0))
        {
            $results = array();
            print "<table id=\"results\">\n<thead>\n<tr><th>id</th><th>title</th><th>isbn</th><th>ean</th><th>year</th></tr>\n
            <tr><td colspan=5>
            <a href=\"#null\" onclick=\"pageno = 0; show();\">&lt;&lt;</a>
            <a href=\"#null\" onclick=\"pageno--; show();\">&lt;</a>
            <a href=\"#null\" onclick=\"pageno++; show();\">&gt;</a>
            <a href=\"#null\" onclick=\"pageno = maxpageno; show();\">&gt;&gt;</a>
            </th></tr>\n
            </thead>\n<tbody>\n";  //table starter and header
            $i = 0;                       //start count
            $ipp = 10;                        //items per page
            while ($row = $result->fetch_array())
            {
                $rop = $i % $ipp;           //result on page
                $pno = floor($i / $ipp);        //page number
                $i++;                         //increase count
                print "<tr class=\"page$pno\"><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td><td>$row[3]</td><td>$row[4]</td></tr>\n";
            }
            print "</tbody>\n<tfoot><tr><td colspan=5>
            <a href=\"#null\" onclick=\"pageno = 0; show();\">&lt;&lt;</a>
            <a href=\"#null\" onclick=\"pageno--; show();\">&lt;</a>
            <a href=\"#null\" onclick=\"pageno++; show();\">&gt;</a>
            <a href=\"#null\" onclick=\"pageno = maxpageno; show();\">&gt;&gt;</a>
            </td></tr>\n</tfoot>\n</table>\n"; // footer
            $result->free();
        }
        $short_connect->close();
        print "<script type=\"text/javascript\"> maxpageno = $pno;</script>";
    ?>
    </body>
    

    【讨论】:

    • 感谢您的回答。
    猜你喜欢
    • 2014-10-21
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多