• 締切済み

ディレクトリ型検索の住所録(PHPとMYSQL)

 簡単なディレクトリ型検索式の住所録をPHPとMYSQLで作っています。 MYSQLにて以下のように、住所がまとまっています。(kenmei,shimei,machimei,namaeというフィールド名です)  A県 a市 (1)町 Aさん  A県 a市 (1)町 Bさん  A県 b市 (2)町 Cさん  B県 c市 (3)町 Dさん  C県 d市 (4)町 Eさん  C県 d市 (4)町 Fさん  ここで、データベースに載っている県名を選択肢として表示し、URLリンクで市名の選択をするページ(shi.php)へ送り出すプログラムをphp上で書きたいと思い、以下のように書いてみました。(A県・B県 というデータベース上に掲載されている県名が表示され、A県を選べばa市・b市とディレクトリ検索式に絞り込まれていくリンク付きを考えています) (データベース接続は省略) while($row = mysql_fetch_array($result)){ $kenmei = $row["kenmei"]; echo "県名を選んでください:"; echo "<a href=\"shi.php?shi="; echo "$kenmei\">"; echo "$kenmei</a><br>\n"; }   そうすると、「A県 A県 A県 B県 C県 C県」というように、総あたり表示なのでA県やC県が何度も表示されてしまいます。(何度もデータベース上に登録されているので、当たり前ですが)  これを、一度出てきた県名は、2度目は表示しないようにし、「A県 B県 C県」という表示をさせるには、どうすればいいのでしょうか。

みんなの回答

回答No.1

>while($row = mysql_fetch_array($result)){ の$resultがSELECT文なのなですよね? PHPでDBを動かす詳細は忘れてしまいましたが、この場合はSQL文がわかれば OKなようなのでお答えします。 SELECT DISTINCT kenmei FROM [テーブル名] がSQL文です。おそらくozaki100さんは「DISTINCT」を書いていないのでは? と思います。 DISTINCTは重複する行を1行にまとめるための単語です。 sql distinct で検索すれば詳細がわかります。 A県ならa市またはb市を表示するほうは大丈夫ですよね?

ozaki100
質問者

お礼

ありがとうございました。 ご指摘の通り、DISTINCTを書いていなかった・・・というか、DISTINCTという命令を知りませんでした(恥ずかしい)  

関連するQ&A

専門家に質問してみよう