2017-10-14 45 views
0

我想創建一個網站,任何人都可以發佈任何它不創建一個帳戶,只要它只是文字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>"; 
    } 
} 
+0

類型「MySQL的排序」到谷歌排序的MySQL結果,你得到的答案... – CBroe

+0

如果答案解決了您的問題,請考慮接受答案。以下是如何[meta.stackexchange.com/questions/5234/...](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work),然後回到這裏並做相同的勾號/複選標記直到它變成綠色。這告知社區,找到了解決方案。否則,其他人可能會認爲這個問題仍然存在,並且可能需要發佈(更多)答案。您將獲得積分,其他人將被鼓勵幫助您。 *歡迎來到Stack! –

回答

2

您需要使用ODRER BY條款如下圖所示: -

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

參考: - ODRER BY clause

注: -你insersion代碼是敞開的SQL Injection。使用mysqli prepared statements來防止它。

參考: - mysqli::prepare

+0

哇,這讓我感覺真的很蠢。但是,感謝您花時間閱讀本文並回答我的問題。 –

+0

@SpaceOctopus或您可以訂購在PHP陣列,或我的優選方法中,處理與位的JavaScript的顯示順序。 – Strawberry

+0

@SpaceOctopus樂意幫助你:) :)。請小心注意到部分太 –

1

您需要添加"ORDER BY""SELECT"對它進行排序。

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

"DESC"有這樣新的職位將在最前面。我們會用"ASC"如果我們想在上面舊帖子。

+0

這也是正確的。+ 1 –

1

你需要按日期,並責令降序order.replace MySQL查詢此

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

這也是正確的。+ 1 –

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>"; 
    } 
}