簡體   English   中英

使帖子在博客頁面上顯示最新到最舊

[英]Making post appear Newest to Oldest on a blog page

我有一個PHP代碼,可以張貼我撰寫的文章,但是從最早到最新,我需要從最新到最舊,所以順序是問題所在

我數據庫中“ posts”行的內部

這是我用來將帖子放入數組的函數:

function getPublishedPosts() {
    // use global $conn object in function
    global $conn;
    $sql = "SELECT * FROM posts WHERE published=true";
    $result = mysqli_query($conn, $sql);

    // fetch all posts as an associative array called $posts
    $posts = mysqli_fetch_all($result, MYSQLI_ASSOC);

    return $posts;
}

這是代碼的可視部分:

<?php foreach ($posts as $post): ?>
    <div class="post" style="margin-left: 0px;">
        <img src="<?php echo BASE_URL . '/static/' . $post['image']; ?>" class="post_image" alt="">
        <a href="single_post.php?post-slug=<?php echo $post['slug']; ?>">
            <div class="post_info">
                <h3><?php echo $post['title'] ?></h3>
                <div class="post-body-div">
                    <?php echo html_entity_decode($post['body']); ?>
                </div>
                <div class="info">
                    <span><?php echo date("F j, Y ", strtotime($post["created_at"])); ?></span>
                </div>
            </div>
        </a>
    </div>
<?php endforeach ?>

只需使用SQL查詢按created_at進行排序即可。 像這樣替換您的功能。

function getPublishedPosts() {
    // use global $conn object in function
    global $conn;
    $sql = "SELECT * FROM posts WHERE published=true order by created_at desc";
    $result = mysqli_query($conn, $sql);

    // fetch all posts as an associative array called $posts
    $posts = mysqli_fetch_all($result, MYSQLI_ASSOC);

    return $posts;
}

您可以使用array_reverse反轉包含帖子的數組

<?php foreach (array_reverse($posts) as $post): ?>

http://docs.php.net/manual/da/function.array-reverse.php

(當然,更好的方法是使用ORDER BY對SQL進行排序,但是我們需要有關可用數據庫字段的更多信息。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM