我正在使用搜索功能和分页。
继承我的搜索功能代码
if( isset($_POST['searchBut']) ) {
$name = $_POST['inputSearch'];
$pageSearch = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
//lets say there are 10 items selected with this query
$searchQuery = "SELECT name,image,price,description FROM image WHERE name LIKE '%".$name."%' ";
$result = $db->query($searchQuery);
//getting total rows
$fetchTotalRow = mysqli_num_rows($result);
//getting total pages
$totalPages = ceil($fetchTotalRow / $perPage);
$links = "";
for ($i = 1; $i <= $totalPages; $i++) {
$links .= ($i != $pageSearch ) ? "<li><a href='collections.php?page=$i'>Page $i</span></a></li> " : "<li class='active'><a href='collections.php?page=$i'>Page $pageSearch</a></li> ";
}
}
现在如何将我的页面限制为第一页中的9个项目,最后一个页面将位于第二页上。 我已成功将此应用于LIMIT($ start,$ offset)函数的正常分页,但这是针对数据库的,如何使用结果集执行此操作?
答案 0 :(得分:0)
您需要在查询中添加LIMIT
。
//page 1
$searchQuery = "SELECT name,image,price,description FROM image WHERE name LIKE '%".$name."%' LIMIT 0, 9";
//page 2
$searchQuery = "SELECT name,image,price,description FROM image WHERE name LIKE '%".$name."%' LIMIT 1, 9";
MySQL将首先搜索整个集合,然后仅返回指定的LIMIT。 LIMIT不会仅搜索前9个帖子......
答案 1 :(得分:0)
使用 LIMIT 0,9 或 LIMIT 9 OFFSET 0
在你的情况下,
$pageSearch = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
$pageOffset = $pageSearch - 1;
$limitQuery = "LIMIT $pageOffset , 9 ";
//lets say there are 10 items selected with this query
$searchQuery = "SELECT name,image,price,description FROM image WHERE name LIKE '%".$name."%' " . $limitQuery;
答案 2 :(得分:0)
你必须使用 LIMIT 。您必须使用像LIMIT ".($pageSearch-1).", ".$perPage
这样的LIMIT全部......如下所示:
$searchQuery = "SELECT name,image,price,description FROM image WHERE name LIKE '%".$name."%' LIMIT ".($pageSearch-1).", ".$perPage;