PHP mySQL按日期排序

时间:2017-10-14 05:41:44

标签: php mysql

我正在尝试创建一个网站,任何人都可以在不创建帐户的情况下发布任何内容,只要它只是文本。我的问题是因为每次我启动网站并发布一些东西。它发送到底部,最旧的帖子位于顶部,新帖子发送到顶部。我希望看到新帖子在顶部。这是我第一次使用PHP,mySQL和数据库,因此我的代码可能看起来很糟糕。告诉我是否需要更多信息/代码。谢谢你的时间。

<?php
function setPosts($conn){
    if(isset($_POST['postSubmit'])){
        $pid = $_POST['pid'];
        $date = $_POST['date'];
        $message = $_POST['message'];

        $sql= "INSERT INTO post(pid, date ,message) VALUES ('$pid', '$date', '$message');";
        $result = mysqli_query($conn, $sql);
    }
}

function getPosts($conn){
    $sql = "SELECT * FROM post";
    $result = mysqli_query($conn, $sql);
    while($row = $result->fetch_assoc()){
        echo "<div class='post-box'>";
        echo $row['date']."<br>";
        echo nl2br($row['message'])."<br><br>";
        echo "</div>";
    }
}

4 个答案:

答案 0 :(得分:2)

您需要使用如下ODRER BY子句: -

$sql = "SELECT * FROM post ORDER BY date DESC";

参考: - ODRER BY clause

注意: - 您的隐藏代码对SQL Injection是敞开的。使用mysqli prepared statements来阻止它。

参考: - mysqli::prepare

答案 1 :(得分:1)

您需要将"ORDER BY"添加到"SELECT"进行排序。

$sql = "SELECT * FROM post ORDER BY date DESC";

"DESC"就在那里,以便新帖子排在最前面。如果我们想要较旧的帖子,我们会使用"ASC"

答案 2 :(得分:1)

您需要按日期对mysql结果进行排序,并按降序排序。将mysql查询替换为此

$sql = "SELECT * FROM post SORT BY date order BY DESC";

答案 3 :(得分:0)

function getPosts($conn){
    $sql = "SELECT date,message FROM post ORDER BY date DESC";
    $result = mysqli_query($conn, $sql);
    while($row = $result->fetch_assoc()){
        echo "<div class='post-box'>";
        echo $row['date']."<br>";
        echo nl2br($row['message'])."<br><br>";
        echo "</div>";
    }
}