- ベストアンサー
五十音表示したいのですが、SQL、PHP、どっち?
MySQLからデータ取得して五十音表示させたいのですが、「SQL」「PHP」、どちらをメインでやれば良いか分かりません ■やりたいこと ・「あ行」「か行」ではなく、単純に「あ」「い」「う」毎に分けて、取得結果を1ページに表示させたいです ■思いついた方法 1.「あ」「い」「う」… と、それぞれ50回selectして、表示 2.1度SELECTした後、if文で、ひたすら条件分岐して表示 ・どちらが良いでしょうか? ・他に何か良い方法はあるでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
僕の場合は一旦全部取得してから substr()で1文字目をkeyとして取得しながら array('あ'=>array(....),'い'=>array(....)); ってカンジの二次配列に格納していき それを回して出力するってやり方します 理由はデータをオブジェクト化しとくと使い回しやすい バグが起きた時にデータ取得でつまづいたか出力でつまづいたか調べやすい 出力形態変更するとき変更しやすいからです
その他の回答 (1)
- agunuz
- ベストアンサー率65% (288/438)
>単純に「あ」「い」「う」毎に分けて MySQLからorder by で「あ」「い」「う」の順に取得出来るなら、単純なキーブレーク処理で書けると思う(前行の「かな一文字」と同じかどうかだけ判断出来ればいい)。 $fwd_kana = ''; while( fetch) { // どういう手順かわからないがとりあえずfetchはするだろう・・・ $this_kana = // この行のかな文字(mb_substrで一文字目を切り出すとか) if ($this_kana !== #fwd_kana) { if ($fwd_kana !== '') { print '<hr />';// 前の文字のフッタ処理 } print $this_kana; // 新しい文字のヘッダ処理 } print $this_data; // 読み込んだ行の処理 $fwd_kana = $this_kana; } // whileはここまで if ($fwd_kana !== '') { print '<hr />';// 前の文字のフッタ処理 }
お礼
回答ありがとうございました。 質問した時点で一番知りたかった回答だったのですが、 今後のことも考え、今回は、No1.さんのやり方でコーディングしました。 アプローチとしては、自分的には目から鱗のやり方で、こういう風にもやれるのかとびっくりしました。 勉強になりましたー
お礼
回答ありがとうございました。 >理由はデータをオブジェクト化しとくと使い回しやすい >バグが起きた時にデータ取得でつまづいたか出力でつまづいたか調べやすい >出力形態変更するとき変更しやすい 質問した時点ではあまり気にしていなかったのですが、なるほどと思いましたー