2011-08-27 14 views
9

Buduję system notatek na mojej stronie i doszedłem do etapu, w którym użytkownicy mogą umieszczać notatki w bazie danych MySQL za pomocą PHP, a następnie PHP wypisuje je na Strona. Jednakże, gdy drukują/echo, najstarszy pojawia się jako pierwszy, ale najbardziej chcę jako pierwszy. Chcę również, aby były ograniczone do 10, więc na stronie pojawi się tylko 10. Tu jest mój kodu PHP, Twoja pomoc będzie mile widziane:PHP i MySQL: Zamówienie według najnowszej daty i limitu 10

// initialize some variables 
$notedisplaylist = ""; 
$myObject = ""; 
$result = mysql_query("SELECT * FROM notes WHERE note_author_id='$u_id' ORDER BY   date_time"); 

while($row = mysql_fetch_array($result)){ 
    $note_title = $row["note_title"]; 
    $note_body = $row["note_body"]; 
    $date = $row["date_time"]; 
    $notedisplaylist .= '<h2>' . $note_title . '</h2><br /><p>' . $note_body . '</p><hr /><p>Noted: ' . $date . '</p><hr /><br />'; 
} 

Odpowiedz

22

ten powinien zrobić:

$result = mysql_query("SELECT * FROM notes WHERE note_author_id='$u_id' ORDER BY date_time DESC LIMIT 0, 10"); 
7

Spróbuj

$result = mysql_query("SELECT * FROM notes WHERE note_author_id='$u_id' ORDER BY date_time DESC LIMIT 10"); 

Dla bardziej szczegółowych wyjaśnień na ORDER i LIMIT znaleźć artykuły doc MySQL o sorting rows a podstawowym select syntax (poszukaj kuli opisującej LIMIT).

6

dać jak

ORDER BY date_time DESC 

inaczej są sortując je w kolejności rosnącej .. to dlaczego starsi przychodzą pierwszy

9

zastosowanie:

SELECT * FROM notes WHERE note_author_id='$u_id' ORDER BY date_time DESC LIMIT 10 

DESC: kolejność malejąca (od najnowszego do najstarszego) LIMIT 10: pierwsze 10 rekordów znalezionych.

5

Wykonaj

$result = mysql_query("SELECT * FROM notes WHERE note_author_id='$u_id' ORDER BY date_time DESC LIMIT 0, 10"); 
0

Jeżeli w przypadku, gdy chcesz limit być zmienną, tutaj nazwałem to $ limitu:

"SELECT * FROM tbl ORDER BY input_date DESC LIMIT 0, $limit"; 
Powiązane problemy