0

ユーザーがさまざまな件名で返信を入力できるディスカッション タイプのページがあります。このために、私はテーブル名の返信をフィールドreplyID、topicID、userID、replybody、timeで持っています

結果を表示するページで、次の php コマンドを使用します。

$run = mysql_query("SELECT * FROM replies WHERE topicID = $topicnumber ORDER BY time DESC Limit 5");

while($data= mysql_fetch_array($run)){
// do formatting and display data 
}

ご覧のとおり、ページには最初、トピックに関する 5 つの返信のみが表示されます (その後、興味がある場合、ユーザーはクリックして、すべての返信が表示されているページにアクセスします)。

問題は、上記のコードは最近の 5 件の返信を正しく表示しますが、表示の順序を変更したいということです。一番上に最近の返信が表示され、下に行くほど古い返信が表示されますが、最近の最も返信が下に表示されるように、この順序を変更したいと思います。

ほとんどのウェブサイトには、最近のほとんどのコメントが下がるこの機能があるため、ここで非常に単純な点が欠けていると思いますが、「質問は小さくありません」.

4

2 に答える 2

2

SQLでそれが非常に簡単だとは思いません。

結果を配列にロードしarray_reverse()、順序を逆にするために使用します。次に、配列をループして、今と同じように値を表示できます。

それ以外の場合は、2 つのクエリを実行する必要があると思います。1 つは合計金額を取得するためのもので、もう 1 つは結果セットを最後のxアイテムに制限するためのものです。

于 2012-09-07T20:58:32.467 に答える
0

ネストされたクエリを使用して、SQL で順序を逆にします。

SELECT *
FROM (
    SELECT * FROM replies WHERE topicID = $topicnumber ORDER BY time DESC Limit 5
) AS a
ORDER BY time ASC

内側のクエリは最新の 5 つのレコードを返し、外側のクエリはそれら 5 つの並べ替え順序を逆にします。

于 2012-09-07T21:08:18.393 に答える