$rs = mysql_query( ”SELECT hana, yomi FROM kadan WHERE tane = ’$abc’ ORDER BY yomi”, $conn );
echo ”<table border=1>”;
echo ”<tr><th>花</th><th>読み</th></tr>”;
while( $rec = mysql_fetch_array( $rs, MYSQL_ASSOC ) ){
echo ”<tr>”;
echo ”<td>” . $rec[’hana’] . ”</td>”;
echo ”<td>” . $rec[’yomi’] . ”</td>”;
echo ”</tr>”;
}
花の名前と読み方が100件程表示されるのですが、その表示結果を存在する五十音順で纏めたいです。
下のページの表示結果でOKです。
ttp://search.post.japanpost.jp/7zip/kanji2.cgi?ken=13
見出しがあって、結果が下に表示されている。
「う」から始まるものがない場合、「う」は表示されない。
どういった方法があるのかソースを書いてもらえるとありがたいです。
よろしくお願いします。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k02.htm
PHP 基礎編2 - 制御構造(判定、ループ) if、switch、for、while、foreach、do - SAK Streets
$yomi1 = ””;
while( $rec = mysql_fetch_array( $rs, MYSQL_ASSOC ) ){
$yomi_2 = mb_substr( $rec[’yomi’] ,1 ,1);
if ($yomi2 != $yomi1) {
echo ”<tr>”;
echo ”<td colspan=2>” . $yomi2 . ”</td>”;
echo ”</tr>”;
$yomi1 = $yomi2;
}
echo ”<tr>”;
echo ”<td>” . $rec[’hana’] . ”</td>”;
echo ”<td>” . $rec[’yomi’] . ”</td>”;
echo ”</tr>”;
}
走り書きのため動作確認していませんが、悪しからずご了承願います。
具体的名コードはちょっと専門外なのでご容赦いただいて考え方をお知らせいたします。
kadanテーブル
|アネモネ |アネモネ |
|朝顔 |アサガオ |
|アマリリス|アマリリス|
|梅 |ウメ |
|カスミソウ|カスミソウ|
|寒桜 |カンザクラ|
(1)読みの取り纏め一覧を生成して保持しておく
SELECT Left(kadan.yomi,1) AS keyword
FROM kadan
GROUP BY Left(kadan.yomi,1);
【結果】
|keyword|
|ア|
|ウ|
|カ|
(2)上記kadanのyomiでのソート一覧を取得する。
SELECT kadan.hana,kadan.yomi,Left(kadan.yomi,1) AS keyword
from kadan order by kadan.yomi
|アネモネ |アネモネ |ア|
|朝顔 |アサガオ |ア|
|アマリリス|アマリリス|ア|
|梅 |ウメ |ウ|
|カスミソウ|カスミソウ|カ|
|寒桜 |カンザクラ|カ|
(3)(1)の一覧を出力する(yomiの目次を生成)
[ア][ウ][カ]
(4)(2)の結果をkeyword毎に区切って出力
|アネモネ |アネモネ |ア|
|朝顔 |アサガオ |ア|
|アマリリス|アマリリス|ア|
<次のセクション>
|梅 |ウメ |ウ|
<次のセクション>
|カスミソウ|カスミソウ|カ|
|寒桜 |カンザクラ|カ|
iken_jpさん。何度もありがとうございます。
感謝です。参考にさせて頂きます。
なんとか出来そうなので、一旦〆ます。
うまく動きませんでした・・。
どこか間違っていますでしょうか?
$yomi1 = ””;
while( $rec = mysql_fetch_array( $rs, MYSQL_ASSOC ) ){
$yomi2 = mb_substr( $rec[’yomi’] ,0 ,1);
if ($yomi2 != $yomi1) {
echo ”
echo ”
echo ”
$yomi1 = $yomi2;
}
echo ”
echo ”
echo ”
echo ”
}
これが動いた場合、質問にあるページのようになるんでしょうか?