2017-10-14 1 views
0

Ich versuche eine Website zu erstellen, auf der jeder etwas veröffentlichen kann, ohne ein Konto zu erstellen, solange es nur Text ist. Mein Problem ist, dass ich jedes Mal, wenn ich die Website starte und etwas poste. Es wird nach unten gesendet, wo sich die ältesten Posts an der Spitze befinden und neue Posts an die Spitze gesendet werden. Ich möchte stattdessen die neuen Beiträge oben sehen. Dies ist das erste Mal, dass ich mit PHP, mySQL und Datenbanken im Allgemeinen arbeite, damit mein Code schlecht aussieht. Sag mir, ob mehr Informationen/Code benötigt wird. Vielen Dank für Ihre Zeit.PHP mySQL Post nach Datum sortieren

<?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

Typ "mysql sort" in Google zu sortieren, und Sie haben die Antwort ... – CBroe

+0

Wenn eine Antwort Ihr Problem gelöst hat, sollten Sie die Antwort akzeptieren. Hier erfahren Sie, wie [meta.stackexchange.com/questions/5234/...](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) dann hierher zurückkehrt und das gleiche tut das Häkchen/Häkchen, bis es grün wird. Dies informiert die Community, eine Lösung wurde gefunden. Sonst denken andere vielleicht, dass die Frage noch offen ist und möchten vielleicht (mehr) Antworten posten. Sie erhalten Punkte und andere werden ermutigt, Ihnen zu helfen. * Willkommen bei Stack! –

Antwort

2

Sie müssen unter ODRER BY Klausel wie verwenden: -

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

Referenz: - ODRER BY clause

Hinweis: - Ihr Insersion Code ist weit offen für SQL Injection. Verwenden Sie mysqli prepared statements, um davon abzuhalten.

Referenz: - mysqli::prepare

+0

Wow, das macht mich wirklich dumm. Aber danke, dass du dir die Zeit genommen hast, dies zu lesen und meine Frage zu beantworten. –

+0

@SpaceOctopus oder Sie können das Array in PHP bestellen, oder, meine bevorzugte Methode, behandeln die Anzeigereihenfolge mit ein bisschen JavaScript. – Strawberry

+0

@SpaceOctopus froh, Ihnen zu helfen :) :). Bitte beachten Sie auch den Hinweisteil –

1

Sie müssen "ORDER BY" zu Ihrem "SELECT" hinzuzufügen es zu sortieren.

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

Die "DESC" ist es so, dass neue Beiträge oben sein wird. Wir würden "ASC" verwenden, wenn wir ältere Beiträge an der Spitze wollten.

+0

das stimmt auch. + 1 –

1

Sie benötigen mysql Ergebnis nach Datum und um sie in absteigender order.replace mysql Abfrage dieser

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

das stimmt auch. + 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>"; 
    } 
}