• ベストアンサー

[MySQL+PHP] テーブルをPHPファイルに、出力したい。(カテゴリごとに)

以下のようなデータベースのテーブルデータを、ヤフーの検索結果のように、カテゴリごと出力したいのです。 <TABLE1> ---------------------- ken area name ---------------------- 栃木 日光 A 栃木 日光 B 千葉 鴨川 C 静岡 伊豆 D 静岡 伊豆 E 静岡 伊豆 F ---------------------- これを、phpファイルで、以下のように出力したいのです。 ---------------------- 栃木 > 日光 A 日光 B 千葉 > 鴨川 C 静岡 > 伊豆 D 伊豆 E 伊豆 F ---------------------- kenごとに、分けて出力することは可能でしょうか。 もし、可能であれば、select以下のクエリ文とその表示方法を教えていただければ、幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは。 質問者さん、もう見てないかなと 思ったんだけど、他の人が見てるようなんで 答えとく。 mysql_select_db("test"); $sql = "select * from test order by ken desc,area,name"; $rs = mysql_query($sql); $beforeken = ""; while ($row = mysql_fetch_array($rs)) {  if($beforeken != $row["ken"]){   if($beforeken != ""){    print "<br>";   }   print $row["ken"]." ><br>";  }  print $row["area"]." ".$row["name"]."<br>";  $beforeken = $row["ken"]; } mysql_close($dbHandle); 見栄えのため、半角スペース2個を全角1個に 置換してますんで。

wdwdwd
質問者

お礼

ご回答有難うございました! とても短いソースで、こんなこともできるんですね。 とても、勉強になりました! また、機会がありましたらよろしくお願いします!

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

もっとすっきりした答えがあるでしょうけど、以下の様に表示するだけのプログラムつくってみましたので、参考になればと思い回答してみました。 ↓表示結果↓ -------------------- 静岡 > 伊豆 D 伊豆 F 伊豆 E 千葉 > 鴨川 C 栃木 > 日光 B 日光 A -------------------- 使用したテーブルデータは下記です。県名をバラバラにして登録しました。 <TABLE1> ------------------- ken area name ------------------- 静岡 伊豆 D 静岡 伊豆 F 栃木 日光 B 千葉 鴨川 C 静岡 伊豆 E 栃木 日光 A ------------------- 以下プログラムです。 <?php mysql_connect("localhost"); $db= "okweb"; $sql = "select ken from table1 order by ken;"; $rs = mysql_db_query($db,$sql); $rows = mysql_num_rows($rs); $field = mysql_num_fields($rs); while($row=mysql_fetch_row($rs)){ $ken[$j]=$row[0]; $j++; } $l=0; for($i=0;$i<$rows;$i++){ if($ken[$i] != $ken[$i-1]){ $kenmei[$l]=$ken[$i]; $l++; } } for($m=0;$m<$l;$m++){ $sql2 = "select area,name from table1 where ken=\"$kenmei[$m]\""; print("$kenmei[$m] ><br>"); $rs2 = mysql_db_query($db,$sql2); $field2 = mysql_num_fields($rs2); while($row2=mysql_fetch_row($rs2)){ for($j=0;$j<$field2;$j++){ print("$row2[$j]&nbsp "); } print("<br>"); } print("<br>"); } ?> 僕の知識ではこれが限界でした。

wdwdwd
質問者

お礼

ご回答有難うございました! 勉強になりました!

すると、全ての回答が全文表示されます。

関連するQ&A