人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP+MYSQLで質問です。

$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

見出しがあって、結果が下に表示されている。
「う」から始まるものがない場合、「う」は表示されない。

どういった方法があるのかソースを書いてもらえるとありがたいです。
よろしくお願いします。

●質問者: haring
●カテゴリ:ウェブ制作
✍キーワード:.jp ABC CGI echo HANA
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kn1967
●10ポイント

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>”;

}

走り書きのため動作確認していませんが、悪しからずご了承願います。

◎質問者からの返答

うまく動きませんでした・・。

どこか間違っていますでしょうか?

$yomi1 = ””;

while( $rec = mysql_fetch_array( $rs, MYSQL_ASSOC ) ){

$yomi2 = mb_substr( $rec[’yomi’] ,0 ,1);

if ($yomi2 != $yomi1) {

echo ””;

echo ”” . $yomi2 . ””;

echo ””;

$yomi1 = $yomi2;

}

echo ””;

echo ”” . $rec[’hana’] . ””;

echo ”” . $rec[’yomi’] . ””;

echo ””;

}

これが動いた場合、質問にあるページのようになるんでしょうか?


2 ● iken_jp
●50ポイント

具体的名コードはちょっと専門外なのでご容赦いただいて考え方をお知らせいたします。


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さん。何度もありがとうございます。

感謝です。参考にさせて頂きます。

なんとか出来そうなので、一旦〆ます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ