度々お世話になってます。
table1
【ID|フィールド1】
[1|AAA]
[1|BBB]
[2|CCC]
[3|DDD]
[3|EEE]
[3|FFF]
というようなテーブルがあるとして、クエリでは
<table>
<tr><td>1</td><td>AAA<br>BBB</td></tr>
<tr><td>2</td><td>CCC</td></tr>
<tr><td>3</td><td>DDD<br>EEE<br>FFF</td></tr>
</table>
…という形で表示したいのです。(理想です)
今までいろいろ試してみて、
$sql = " SELECT ID,フィールド FROM table1 GROUP BY ID ";
に行き着きましたが、これだと
<table>
<tr><td>1</td><td>AAA</td></tr>
<tr><td>2</td><td>CCC</td></tr>
<tr><td>3</td><td>DDD</td></tr>
</table>
というように表示され、表示されないレコードが出来てしまいます。
GROUP BYが余計!と言われそうですが、同じIDが複数並ぶのを避けたいのです。
ソースコードは、
print "<table>\n";
print "<tr><th>ID</th><th>フィールド</th></tr>\n";
while( $row = mysql_fetch_array($result) ) {
print "<tr><td>$row[ID]</td><td>$row[フィールド]</td></tr>\n";
}
print "</table>\n";
になっている状態です。
$row[フィールド]を書き換えればいいのかな?と思いますが、検索してもそれらしいものは見当たらなかったので質問させていただきました。
心当たりのある方、よろしくおねがいします。
No.1
- 回答日時:
SQLはGROUP BYなしで普通に取得
あとはテーブルを書き出すときにちょい工夫を
$query = mysql_query($sql);
$rows = array();
//同じIDのDB行を配列にまとめます
while ($row = mysql_fetch_assoc($query))
{
if ( !isset( $rows[$row['ID']] ) ) {
$rows[$row['ID']] = array();
}
$rows[$row['ID']][] = $row;
}
print_r($rows);//1回中身を確認すると勉強になると思います。
//テーブル書き出し
print "<table>\n";
print "<tr><th>ID</th><th>フィールド</th></tr>\n";
foreach ($rows as $id => $row)
{
print '<tr><td>'.$id.'</td><td>'.implode('<br>', $row).'</td></tr>'."\n";
}
print "</table>\n";
この回答への補足
返事が遅れて申し訳ありません。
自分のデータに当てはめてみましたが、'.implode('<br>', $row).'の部分が全て
Array
と表示されてしまいます。(複数のデータがあるべきレコードでも、1行でArrayになっています)
自分がおかしなことをしているだけかもしれませんが、一応意見をお聞きしたいです。お願いします。
No.2ベストアンサー
- 回答日時:
ですよね
ごめんなさい
implode('<br>', $row)
の$rowも2次元の配列になっちゃっているので
以下を修正
while ($row = mysql_fetch_assoc($query))
{
if ( !isset( $rows[$row['ID']] ) ) {
$rows[$row['ID']] = array();
}
//ここに表示するデータを文字列として入れる。
$rows[$row['ID']][] = $row['表示するフィールド名'];
}
でどうでしょうか。。
早速ご返答ありがとうございます。本当に助かります。
無事、理想の形に成りました。
今後のためにもこの文法の意味(?)もきちんと勉強しておこうと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- Perl PERL 1 2022/04/26 14:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAについて
-
VBA初心者です。
-
PHPでMySQLデータを呼び出し、w...
-
checkboxクリック時、SQLを実行...
-
検索結果($_POST)が2ページ目...
-
python pandas 行ごとに列名(...
-
htmlとphpの分離
-
mysql_fetch_objectのエラー
-
MySQLでデータベースにデータin...
-
アポストロフィを含む文字列の追加
-
実行時エラー3131 FROM 句の構...
-
stringaddslashes 半角¥が消える
-
JAVA SQLServerException 列名 ...
-
MySQL5のデータを、SQL文を使い...
-
<VB.NET>INSERT文でDBにデータ...
-
ASP.net データベース操作について
-
PHPでフォームからデータDBに書...
-
MySQLのUPDATE実行結果を受け取...
-
VBA ACCESS SQL...
-
mysql_query等でレコード数を変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPで[]の使い方について
-
php テーブルが作成できない
-
dbに登録したデータをphpのプル...
-
アラートでyes noを作りたいです。
-
phpでmysqlを使ってデータベー...
-
DBで検索結果に該当するデータ...
-
文字化けが解決できません。お...
-
SELECT結果から動的にコンボボ...
-
checkboxクリック時、SQLを実行...
-
PHPでMySQLデータを呼び出し、w...
-
while文の中にwhile文を書きた...
-
sortable ギブアップです…助け...
-
重複レコードをグループ化した...
-
PHP と MySQL でテーブルの行数...
-
PHPでMySQLのデータを2次元配...
-
mysql>PHPにデータ表示、10件ご...
-
PHPについてなのですが未定義の...
-
VBA初心者です。
-
ラジオボタンをループすること...
-
PHP+MySQLでの配列のinsert文に...
おすすめ情報