gpt4 book ai didi

php - 分页,第一页上的结果数量错误

转载 作者:行者123 更新时间:2023-11-30 21:40:53 24 4
gpt4 key购买 nike

我正在制作新闻网站,我的 mysql 数据库的“时间”字段为 1533074400

如果我只打印查询结果,一切都很好,但如果我只想打印早于今天的新闻,我在第一页上只得到 2 个而不是 5 个新闻。其余 3 个在第二页。

问题出在查询上,如果我收到假设我的数据库中有 10 个结果,其中只有 7 个是过去的新闻,所以当我按降序过滤它们时

if ($today > news_date)

我在第一页获得 2 个新闻(其余 3 个是不可见的 future 新闻,被上面的代码阻止),在第二页获得其余 5 个新闻。所以我的问题是,如何正确获取它:第一页有 5 个新闻,第二页有 2 个新闻?

$results_per_page = 5;


if (!isset($_GET['page'])) {
$page = 1;}
else {
$page = $_GET['page'];
}


$this_page_first_result = ($page-1)*$results_per_page;

$sql='SELECT * FROM news ORDER BY time DESC LIMIT ' . $this_page_first_result . ',' . $results_per_page;
$result = mysqli_query($con, $sql);
$number_of_results = mysqli_num_rows($result);

$today = strtotime("now");

while($row = mysqli_fetch_array($result))
{
$news_date = $row[1];

if ($today > $news_date) {
echo HTML;
}
}

$number_of_pages = ceil($number_of_results/$results_per_page);

for ($page=1;$page<=$number_of_pages;$page++) {
echo '<a href="index.php?page=' . $page . '">' . $page . '</a> ';
}

最佳答案

试试这个:

$sql='SELECT * FROM news WHERE time < '.time().' ORDER BY time DESC LIMIT ' . $this_page_first_result . ',' .  $results_per_page;
//Note: time() is an equivalent to strtotime("now")

如果您在 MySQL 中进行分页,您还应该在 MySQL 中进行过滤。

[编辑:附加解释] 如果您在 MySQL 中进行分页,然后在 PHP 中进行过滤,您会突然遇到像这样的奇怪实例,因为 MySQL 不知道您真正打算从哪里开始。在这个特定的示例中,如果您有很多 future 日期的项目,您实际上可能会在开始看到条目之前得到几页空白的结果页面。

[Edit edit:] 此外,如果您这样做,您将不再需要 if 检查您的 PHP 循环,因为 MySQL 已经这样做了。

关于php - 分页,第一页上的结果数量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51698589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com