我的网站(感谢你们这里的许多人提供的帮助)设置为显示固定数量的更新(52),其中每个星期五,一个旋转,一个新的旋转。显示52个更新每页4页,共13页。它完美地运作。
但是,新更新显示在显示的更新的END处。我希望新的更新成为第一个人们会看到的。
这是我的问题:
$conn = dbConnect('query');
$updates = "SELECT update_id, update_title, update_desc, path
FROM updates
WHERE flag_live = ?
ORDER BY update_id DESC
LIMIT ?, ?";
$stmt = $conn->prepare($updates);
$stmt->bind_param('sii', $uLive, $offset, $limit);
$stmt->bind_result($uId, $uTitle, $uDesc, $uPath);
$stmt->execute();
$stmt->store_result();
$stmt->fetch();
我希望这些项目按照当前相反的顺序显示。如果我将ORDER BY
从DESC
更改为ASC
,则会选择一组我不想要的数据。因此,根据我的研究,我看到array_reverse()
或rsort
可以做到这一点。我需要知道在这里正确使用array_reverse()
的语法是正确的。
答案 0 :(得分:0)
也许尝试这样的事情:
$results = $stmt->fetchAll();
$results = array_reverse( $results );
下一部分可以通过几种不同的方式完成,因此它实际上取决于您将如何使用结果并对它们进行分页。
您可以使用for
循环:http://us3.php.net/manual/en/control-structures.for.php
或foreach
:http://us3.php.net/manual/en/control-structures.foreach.php
答案 1 :(得分:0)
我不能与PHP相处,但这样的事情呢?
$results = $stmt->fetchAll();
$results = array_reverse( $results );
foreach ($results as $row)
{
/* $row will contain each row in the reversed array one at a time. do your usual process-one-row logic here */
}
顺便说一句,如果你不知道PHP函数在调用它时会返回什么,那么有一个非常有用的调试函数var_dump。你可以在任何东西上调用它,它会以递归方式打印它所组成的内容。
答案 2 :(得分:0)
好的,经过大量的轰动,我能够完成这项任务,虽然不是我在发布这个问题时考虑过的方式。我最后做的是编写一个子查询,它允许我颠倒每个页面上显示的更新的顺序,正如您所知,这只会颠倒页面上可见的四个更新的顺序,而不是整个顺序。选择了52个(见原始问题)。
下一步是“反转”我的分页系统......不是小任务......重写逻辑,测试代码等等。所以通过使用子查询反转事物并颠倒我的分页,我实现了我的目标。
她的所有建议都有助于最终结果,但不是预期的方式。如果这不像回答我自己的问题那样简洁,我会事先道歉。