如何创建一个自动分割' PHP中的记录与SQL?

时间:2016-09-24 19:37:41

标签: php mysql sql mysqli

Hello StackOverflow社区,

我正在开发一个PHP论坛,我想知道如何在用户输入的情况下将我的记录分成几个不同页面或网页的部分,以便当用户输入“口袋妖怪”时。他/她将像1000条记录一样检索我如何能够自动将这些记录分成网页中的几个页面或部分?

现在我有了这段代码:

 <?php
    $query = $_POST['query'];

    $selected = mysqli_connect("localhost","root","","forumdb") or die("");

    $result = mysqli_query($selected, "SELECT * FROM threads WHERE name LIKE '%$query%' ORDER BY name");
<table> 
   <tr>
      <td><center><p>{$row['name']}</p></center></td>
   </tr>
</table>
?>

如何将此页面转换为只能显示25页而其余页面显示在其他页面上的页面(自动)

1 个答案:

答案 0 :(得分:1)

  

如何将此页面转换为只能显示25页而其余页面显示在其他页面上的页面(自动)

分页是您在此尝试实现的目标。正如@jeroen所说,它不会自动发生,你必须编写代码来实现它。我已经就这个主题回答了几个问题,甚至为此写了一个通用的脚本。对您的问题解决方案是这样的:

  • 转到https://github.com/rajdeeppaul/Pagination,下载pagination.php文件并将其包含在项目目录中,如下所示:

    require_once('pagination.php');
    
  • 使用适当的驱动程序创建Pagination类的实例,如下所示:

    $pg = new Pagination('mysqli', 'localhost', 'root', '', 'forumdb');
    
  • 使用setPaginationParameters()方法设置分页参数,如下所示,

    $pg->setPaginationParameters(25, 5);
    
  • 调用getResult()类的Pagination方法,根据网址?page=X显示行,如下所示,

    $param = '%' . $query . '%';
    $resultSet = $pg->getResult('SELECT * FROM threads WHERE name LIKE ? ORDER BY name', array($param), $_GET, 'page');
    
    echo '<table>';
    foreach($resultSet as $row){
        ?>
        <tr>
            <td><center><p><?php echo $row['name']; ?></p></center></td>
        </tr>
       <?
    }
    echo '</table>';
    
  • 最后,使用getPaginationLinks()方法显示分页链接,如下所示,

    $pgLinks = $pg->getPaginationLinks();
    if(is_array($pgLinks) && count($pgLinks) && $pgLinks['prev']){
        /* previous pages are available */
        echo '&laquo; ';
    }
    if(is_array($pgLinks) && count($pgLinks) && count($pgLinks['links'])){
        /* show pagination links */
        foreach($pgLinks['links'] as $link){
            echo '<a href="yourPage.php?page='.$link.'">'.$link.'</a> ';
        }
    }
    if(is_array($pgLinks) && count($pgLinks) && $pgLinks['next']){
        /* next pages are available */
        echo '&raquo;';
    }
    

注意:不要忘记将 yourPage.php 更改为您的网页。

这是完整代码

<?php

    require_once('pagination.php');

    $pg = new Pagination('mysqli', 'localhost', 'root', '', 'forumdb');
    $pg->setPaginationParameters(25, 5);

    $param = '%' . $query . '%';
    $resultSet = $pg->getResult('SELECT * FROM threads WHERE name LIKE ? ORDER BY name', array($param), $_GET, 'page');

    echo '<table>';
    foreach($resultSet as $row){
        ?>
        <tr>
            <td><center><p><?php echo $row['name']; ?></p></center></td>
        </tr>
       <?
    }
    echo '</table>';

    $pgLinks = $pg->getPaginationLinks();
    if(is_array($pgLinks) && count($pgLinks) && $pgLinks['prev']){
        /* previous pages are available */
        echo '&laquo; ';
    }
    if(is_array($pgLinks) && count($pgLinks) && count($pgLinks['links'])){
        /* show pagination links */
        foreach($pgLinks['links'] as $link){
            echo '<a href="yourPage.php?page='.$link.'">'.$link.'</a> ';
        }
    }
    if(is_array($pgLinks) && count($pgLinks) && $pgLinks['next']){
        /* next pages are available */
        echo '&raquo;';
    }
?>

脚注:如果您需要进一步说明此脚本的使用情况,请浏览使用文档。