2009-05-13 3 views
0

PHPとMySQLを使って簡単なニュースシステムを作りたいと思っていますが、今は作業ポストとシステムを読んでいますが、問題は1つしかありません。それは10の最も古いニュースを示します。

私の質問は、MySQLがテーブルの一番下から結果を返す方法はありますか、最初に投稿の数を取得して最後の10個に制限する必要がありますか?ここで

は、インサート(タイトルとテキストが脱出し、時間が時間()、ポスターはまだ行われていないです)です。MySQLがテーブルを後ろに返すようにする

mysql_query("INSERT INTO news (title, poster, text, time) VALUES ('$newstitle', '1', '$newstext', '$time')") or die(mysql_error()); 


そして、それをretriveする(addnewsエコーそれ):

$myqr = mysql_query('SELECT * FROM news LIMIT 10') or die("Error running news query: ". mysql_error()); 
while($myres = mysql_fetch_array($myqr)) 
{ 
addnews($myres['id'], $myres['title'], "admin", date('l jS F Y - H:i:s', $myres['time']), $myres['text']); 
} 

だから、短く:データベースを後ろ向きに読みたいのですか?

+0

Um ... ORDER BY? – Matt

答えて

11

ORDER BY節を参照してください。列を昇順または降順に並べ替えることができます。次の問合せでは、時間の降順でソートされた10個のニュース項目が戻されます。

SELECT * FROM news ORDER BY time DESC LIMIT 10 
+0

ありがとうございました – user106546

2

シンプルで、SQLに「ORDER BY」節を追加するだけです。

SELECT * FROM news ORDER BY time DESC LIMIT 10 
+0

「時間」を後で編集すると、IDソートに最新のニュースメッセージが表示されなくなります... – Ropstah

1

作成した日付順に並べ替える必要があります。たとえば

SELECT * FROM news order by time DESC LIMIT 10 

のようになります。 Order by句を指定しないと、結果が返される順序は保証されないことに注意してください。今、昇順で挿入された時点でそれらを注文していることになりますが、常にそうなるとは思えません。

SELECT * FROM new ORDER BY id DESC LIMIT 10 
+1

IDの列がテーブルにある場合は、実際にはID(昇順)暗黙のorder by節として。しかし、ええ、それは善意ではありません。 – Jeff

0

ORDER BY句を使用します。そのIDが主キーであると仮定すると、

+0

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 – Jon

+0

それは_precisely_質問への答えを提供します。 –

+0

解決策の実装方法についての説明はありません。 – Jon

0

単純に注文することはできません時間の降順LIMIT 10の前に?

+0

これを入力すると、5つの他の投稿と3つのバンプアップが発生しました... – Nate

+0

私が知っているのは、私の最初の投稿であり、私は返信のスピードにショックを受けました。 – user106546

0

使用

SELECT * FROM news ORDER BY time DESC LIMIT 10 
0

また、私は信じて

SELECT TOP 10 FROM news ORDER BY time DESC 

を使用することができます。ただし、 'top'句がSQL Serverのみであるかどうかはわかりません。

関連する問題