
http://okwave.jp/qa2460708.html
と同じようなテーブル構造で、同じようなhtmlへの書き出しを行っています。
No.1さんの回答の下記のスクリプトを参考にし、うまく表示することができました。
$sql="SELECT `ID`,`SHOPNAME` FROM `SHOP`";
$res = mysql_query($sql,$link);
while ($rows = mysql_fetch_assoc($res)) {
$SHOP[$rows["ID"]]=$rows["SHOPNAME"];
}
$sql="SELECT `ID`,`ITEMNAME` FROM `ITEM`";
$res = mysql_query($sql,$link);
while ($rows = mysql_fetch_assoc($res)) {
$ITEM[$rows["ID"]]=$rows["ITEMNAME"];
}
foreach($SHOP as $key1=>$val1){
foreach($ITEM as $key2=>$val2){
$LINK[$key1][$key2]="";
}
}
$sql="SELECT `SHOP`,`ITEM` FROM `LINK`";
$res = mysql_query($sql,$link);
while ($rows = mysql_fetch_assoc($res)) {
$LINK[$rows["SHOP"]][$rows["ITEM"]]="○";
}
print<<<eof
<table border>
<thead>
<tr>
<th></th>
eof;
foreach($ITEM as $key2=>$val2){
print "<th>$val2</th>";
}
print<<<eof
</tr>
</thead>
<tbody>
eof;
foreach($SHOP as $key1=>$val1){
print "<tr>";
print "<td>$val1</td>";
foreach($ITEM as $key2=>$val2){
print "<td>{$LINK[$key1][$key2]}</td>";
}
print "</tr>";
}
print<<<eof
</tbody>
</table>
eof;
しかし、下記のテーブルに項目が1つ追加され、それも表示できるようにして欲しいと依頼されました。
Table:SHOP
ID SHOPNAME STATION
------------------------
1 東京 | 表参道
2 大阪 | 梅田
3 福岡 | 天神
(略)
結果としては下記のように表示したいです。
NAME |STATION|化粧品|家具 |園芸 |食品 |家電 |
------------------------------------------------
東京 | 表参道| | | | ○ | |
大阪 | 梅田 | | | | | ○ |
福岡 | 天神 | ○ | ○ | | | |
(略)
配列をよく理解できていないため、スクリプトをそのまま真似して
$STATION[$rows["ID"]]=$rows["STATION"];
を作ったり
$SHOP[$rows["ID"]][$rows["STATION"]]=$rows["SHOPNAME"];
を作ったりして無理矢理展開してみようとしましたが
やはり表がぐちゃぐちゃになってしまいます。
どうすればうまく表示できるか、アドバイス頂けませんでしょうか。
No.1ベストアンサー
- 回答日時:
こんにちは。
はじめまして。ちょっと同環境を作ってやってみました。
コメントを参考にしていただければと思います。
$sql="SELECT `ID`,`SHOPNAME`, `STATION` FROM `SHOP`";
$res = mysql_query($sql,$link);
while ($rows = mysql_fetch_assoc($res)) {
// 多次元配列に格納する
$SHOP[$rows["ID"]]['SHOPNAME']=$rows["SHOPNAME"];
$SHOP[$rows["ID"]]['STATION']=$rows["STATION"];
}
$sql="SELECT `ID`,`ITEMNAME` FROM `ITEM`";
$res = mysql_query($sql,$link);
while ($rows = mysql_fetch_assoc($res)) {
$ITEM[$rows["ID"]]=$rows["ITEMNAME"];
}
foreach($SHOP as $key1=>$val1){
foreach($ITEM as $key2=>$val2){
$LINK[$key1][$key2]="";
}
}
$sql="SELECT `SHOP`,`ITEM` FROM `LINK`";
$res = mysql_query($sql,$link);
while ($rows = mysql_fetch_assoc($res)) {
$LINK[$rows["SHOP"]][$rows["ITEM"]]="○";
}
print<<<eof
<table border>
<thead>
<tr>
<th></th>
<th>STATION</th>
eof;
foreach($ITEM as $key2=>$val2){
print "<th>$val2</th>";
}
print<<<eof
</tr>
</thead>
<tbody>
eof;
foreach($SHOP as $key1=>$val1){
print "<tr>";
// ショップ名と駅名を表示する
print "<td>$val1[SHOPNAME]</td><td>$val1[STATION]</td>";
foreach($ITEM as $key2=>$val2){
print "<td>{$LINK[$key1][$key2]}</td>";
}
print "</tr>";
}
print<<<eof
</tbody>
</table>
eof;
はじめまして。
回答ありがとうございます!
無事依頼どおりのデータを表示することができました。
わかっているようでわかっていなかった、多次元配列の考え方を実感することができて感激です。
ほんとうに助かりました!!ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP8でWarning:Undefined varia...
-
composerをインストールしたい...
-
phpの問い合わせフォームを作っ...
-
phpでcookieがうまく保存されない
-
PHP8を使うと、大量のWarningが...
-
HTML PHP ラジオボタンのイベント
-
SplFileObject を利用したとき...
-
PHPの勉強してます。 配列のと...
-
BASIC認証のフォームをデザイン...
-
SFTPなどは使わないホームペー...
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
php でqiitaのサイトにあったフ...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
-
PHPについて。
-
phpのheader("Location:#pos")...
-
PHPからCSVをアップロード後、m...
-
[php初心者]サイトを見てデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpのエラーについてです
-
stringaddslashes 半角¥が消える
-
テーブルに入っているデータと...
-
sqlから多次元配列に要素を格納...
-
リストから詳細画面に遷移する...
-
PHPのSQLインジェクションはspr...
-
PHP+mysqlでSQL文に文字数制限...
-
PHPで絞り込み検索結果の件数を...
-
縦に長い<table>でなく横に長い...
-
MySQLにデータが書き込まれない
-
PDO_MYSQLを利用したDB接続がで...
-
ユーザーアカウンントの重複を...
-
XAMMPが起動しません。
-
検索表示について
-
sqlの検索結果件数を知りたい
-
html用とmysql用のエスケープ処...
-
DB(MySQL)から複数行のデータを...
-
mysql_queryが動かなくて困って...
-
phpからMySQLへ日本語insert
-
mysql_resultのエラー
おすすめ情報