你好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个可以显示,其余部分显示在其他页面(自动)
如何将此页面转换为只有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);
-
调用
Pagination
类的getResult()
方法,根据URL查询?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 '« '; } 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 '»'; }
注意:不要忘记修改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 '« ';
}
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 '»';
}
?>
脚注:查看Usage文档,如果您需要进一步说明这个脚本的用法。