我正在尝试创建一个网站,任何人都可以在不创建帐户的情况下发布任何内容,只要它只是文本。我的问题是因为每次我启动网站并发布一些东西。它发送到底部,最旧的帖子位于顶部,新帖子发送到顶部。我希望看到新帖子在顶部。这是我第一次使用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>";
}
}
答案 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>";
}
}