2011-08-27 34 views
9

Tôi đang xây dựng hệ thống ghi chú trên trang web của mình và tôi đã đến giai đoạn mà người dùng có thể đăng ghi chú vào cơ sở dữ liệu MySQL bằng PHP và sau đó PHP in chúng ra một trang. Tuy nhiên, khi họ in/echo ra, cái cũ nhất xuất hiện đầu tiên nhưng tôi muốn đầu tiên gần đây nhất. Tôi cũng muốn họ bị giới hạn ở mức 10, vì vậy chỉ có 10 người xuất hiện trên trang. Đây là mã PHP của tôi, giúp đỡ của bạn sẽ được nhiều đánh giá cao:PHP và MySQL: Sắp xếp theo ngày và giới hạn gần nhất 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 />'; 
} 

Trả lời

22

này nên làm điều đó:

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

Hãy thử

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

Đối với một lời giải thích chi tiết hơn về ORDERLIMIT, hãy truy cập bài viết của doc của MySQL về sorting rows và cơ bản select syntax (tìm một viên đạn mô tả LIMIT).

6

cho như

ORDER BY date_time DESC 

nếu không bạn đang sắp xếp chúng theo thứ tự tăng dần .. thats tại sao những người lớn tuổi đến trước

9

sử dụng:

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

DESC: thứ tự giảm dần (từ mới nhất đến cũ nhất) LIMIT 10: 10 bản ghi đầu tiên được tìm thấy.

5

Làm điều này

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

Nếu trong trường hợp bạn muốn LIMIT là một biến, ở đây tôi đặt tên nó là $ giới hạn:

"SELECT * FROM tbl ORDER BY input_date DESC LIMIT 0, $limit"; 
Các vấn đề liên quan