dポイントプレゼントキャンペーン実施中!

MySQLからデータ取得して五十音表示させたいのですが、「SQL」「PHP」、どちらをメインでやれば良いか分かりません

■やりたいこと
・「あ行」「か行」ではなく、単純に「あ」「い」「う」毎に分けて、取得結果を1ページに表示させたいです

■思いついた方法
1.「あ」「い」「う」… と、それぞれ50回selectして、表示
2.1度SELECTした後、if文で、ひたすら条件分岐して表示

・どちらが良いでしょうか?
・他に何か良い方法はあるでしょうか?

A 回答 (2件)

僕の場合は一旦全部取得してから


substr()で1文字目をkeyとして取得しながら
array('あ'=>array(....),'い'=>array(....));
ってカンジの二次配列に格納していき
それを回して出力するってやり方します

理由はデータをオブジェクト化しとくと使い回しやすい
バグが起きた時にデータ取得でつまづいたか出力でつまづいたか調べやすい
出力形態変更するとき変更しやすいからです
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

>理由はデータをオブジェクト化しとくと使い回しやすい
>バグが起きた時にデータ取得でつまづいたか出力でつまづいたか調べやすい
>出力形態変更するとき変更しやすい
質問した時点ではあまり気にしていなかったのですが、なるほどと思いましたー

お礼日時:2013/02/23 11:55

>単純に「あ」「い」「う」毎に分けて



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 />';// 前の文字のフッタ処理
}
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

質問した時点で一番知りたかった回答だったのですが、
今後のことも考え、今回は、No1.さんのやり方でコーディングしました。

アプローチとしては、自分的には目から鱗のやり方で、こういう風にもやれるのかとびっくりしました。
勉強になりましたー

お礼日時:2013/02/23 11:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!