- ベストアンサー
取り出したデータのソート方法
少し複雑な処理で行き詰ってしまいましたので、 お力を貸していただけると幸いですm(__)m 掲示板をLinux + Apache + PHP + MySQL環境で 作成しているのですが、最新投稿のソートがうまくいかず困っています。 現在、1ページに5件の記事を最新投稿が上部になるように表示しています。 クエリ:SELECT * FROM bbs ORDER BY no DESC LIMIT 5 例: ------------ (1ページ目) 投稿No.7 投稿No.6 投稿No.5 投稿No.4 投稿No.3 ------------ (2ページ目) 投稿No.2 投稿No.1 ------------ この表示を 希望例: ------------ 投稿No.3 投稿No.4 投稿No.5 投稿No.6 投稿No.7 ------------ (2ページ目) 投稿No.1 投稿No.2 ------------ のように表示したいのですが、 どのようにクエリを作成すればよいのでしょうか? よろしくお願いいたします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
PHPで処理する方が効率的です。 結果を配列で受けて、逆ソートをかけてから 表示するだけです。 $sql="SELECT ・・・"; $res=mysql_query($sql,$link); while($rows = mysql_fetch_array($res,MYSQL_ASSOC)){ foreach($rows as $key=>$val){ $data[][$key]=$val; } } arsort($data); foreach ($data as $val){ print $val["hoge1"].$val["hoge2"].$val["hoge3"]; }
その他の回答 (1)
- naochancom
- ベストアンサー率61% (41/67)
mysql 4.1 以降をお使いでしたら、サブクエリ で対応できると思います select * from (SELECT * FROM bbs ORDER BY no DESC LIMIT 5) hoge order by no asc または、プログラム上で表示順を変えてみてはいかがでしょうか? カーソル位置をlastに持って行き、previousで前行に カーソルを移動しながら記載しても同じ結果だと思います。
お礼
灯台下暗しでした^^ arsort($data); で対応できました ありがとうございます★