我正在编写一段代码,为不同的分类系统进行分页。它适用于喜欢并正确输出,但不适用于标记的排序系统。
$sorting = $_GET["sorting"];
$per_page = 10;
$pages = $count_total->num_rows;
$total_pages = ceil($pages / $per_page);
if($sorting == "likes") {
$count_total = $db2->query("SELECT * FROM likes WHERE user='$user'");
}
if($sorting == "tag") {
$tag_name = $_GET["tag_name"];
$count_total = $db2->query("SELECT * FROM movie_tags WHERE tag_id='$tag_name'");
}
$pages = $count_total->num_rows;
$total_pages = ceil($pages / $per_page);
$start = (($page - 1) * $per_page);
for($number=1;$number<=$total_pages;$number++) {
if($page == $number) {
echo '<div class="complete_page">'.$number.'</div>';
} else {
$sorting = $_GET["sorting"];
echo '<a href="?page='.$number.'&sorting='.$sorting.'"> <div class="number_page">'.$number.'</div></a>';
}
}
}
这是我如何使用分页的一个例子:
$movie = $db2->query("SELECT * FROM movies ORDER BY likes DESC LIMIT $start, $per_page");
注意:当我回显$pages
时,两个排序系统都会生成值。实际上,标记的值为11.为什么此值不会创建分页系统。我知道这不是分页系统的问题,因为它适用于喜欢的分类系统。
答案 0 :(得分:1)
尝试将您的查询更改为:
$movie = $db2->query("SELECT *
FROM movies
ORDER BY likes DESC
LIMIT $per_page
OFFSET $start");
这应该将行数设置为$ per_page从$ start开始。
答案 1 :(得分:1)
您应该尝试删除SQL查询中$ tag_name周围的2个单引号。 我的意思是:
$count_total = $db2->query("SELECT * FROM movie_tags WHERE tag_id=".$tag_name);
由于您的标记值为11,我相信名为tag_id的数据库列是一个整数。使用这两个单引号,您将它与字符串/ varchar '11'
进行比较。