私は3つのテーブルを持っています。 Apls、Hulls、およびAplsHulls。PHPでグリッドを表示する多次元配列のループ
AplsはID、名前、日付で構成されます ハルスはid、production_nameで構成されます AplsHullsはid、apl_id、hull_id、statusで構成されています。
各ハルが各Aplに関連付けられているわけではありません。
次の列ヘッダを持つテーブル/グリッドにレポートを表示する必要があります:Apl名、Apl_Date、次に船体残りの列のタイトルとしての制作名。 (船体7が結果セット内にない場合は、列を取得しない場合もあります。)
データの場合は、apl名、apl dateをリストし、残りの列をループしてステータスを記入する必要があります結合表のレコードの場合は、結合表にaplとhullが関連付けられていない場合は、セルに「NA」を入力してください。
これはさまざまな方法で試しましたが、現在入手できます船体のための列ヘッダーの動的リスト、私は正確に渡ってループにデータを得ることができるように見えることはありません
Sample Data:
Apls Table
Id: 1, Name: X1-0000, Date: 1/1/2009
Id: 2, Name: BG-5480, Date: 2/22/2009
Id: 3, Name: HG-0000, Date: 2/27/2009
Hulls Table
Id: 1, Production_name: ProdA
Id: 2, Production_name: ProdB
Id: 3, Production_name: ProdC
Id: 4, Production_name: ProdD
AplsHulls Table
Id: 1, Apl_id: 1, Hull_id: 1, Status:Delivered
Id: 2, Apl_id: 1, Hull_id: 3, Status:Ordered
Id: 3, Apl_id: 2, Hull_id: 4, Status:Delivered
私はこのように表示するためのテーブルが必要になります。
APL | Date | ProdA | ProdC | ProdD
X1-0000 | 01/01/2009 | Delivered | Ordered | NA
BG-5480 | 02/22/2009 | NA | NA | Delivered
列ヘッダーはProdBを無視します。これは、レコードが結合テーブルにまったくないためです。また、結合テーブルにある列に対してはNAが入力されますが、結合テーブルには関連付けられていない可能性があります。
非常に混乱しています。
select h.id, pname from hulls h join aplshulls on (h.id=hull_id)
あなたに:あなたはこのようなクエリで気に船体のリストを取得することができます
<?php
$aplToHullMap = array();
foreach($AplsHulls as $row)
{
$aplID = $row[ 'apl_id' ];
$hullID = $row[ 'hull_id' ];
$status = $row[ 'status' ];
if(isset($aplToHullMap[ $aplID ]))
$aplToHullMap[ $aplID ][ $hullID ] = $status;
else
$aplToHullMap[ $aplID ] = array($hullID => $status);
}
?>
<table>
<tr>
<th>Apl Name</th>
<th>Apl Date</th>
<?php
foreach($Hulls as $row)
echo("<th>" . $row[ 'production_name' ] . "</th>\r\n");
?>
</tr>
<?php
foreach($Apls as $row)
{
?>
<tr>
<td><?php echo($row[ 'name' ]); ?></td>
<td><?php echo($row[ 'date' ]); ?></td>
<?php
$map = $aplToHullMap[ $row[ 'id' ] ];
foreach($Hulls as $hull)
{
if(isset($map[ $hull[ 'id' ] ]))
$status = $map[ $hull[ 'id' ] ];
else
$status = 'NA';
echo("<td>" . $status . "</td>\r\n");
}
?>
</tr>
<?php
}
?>
</table>
いくつかのサンプルコードは、おそらくテーブルのデータを参考にしてくれるでしょう。 – jcuenod
データに関する詳細を入力してください。あなたのタイトルが示唆するような配列か、質問自体が示唆するようなDBテーブルにありますか?言葉のついた説明ではなく表の例が役立ちます。 – defines
サンプルデータ: APLS表 番号1、名前:X1-0000、日付:2009年1月1日 イド:2、名称:BG-5480、日:2009年2月22日 イド:3、名:HG-0000、日:2009年2月27日 ハル表 番号1、Production_name:ProdA イド:2、Production_name:ProdB イド:3、Production_name:ProdC イド:4、Production_name:ProdD AplsHulls表 番号1、Apl_id:1、Hull_id:1、状態:配信 イド:2、Apl_id:1、Hull_id:3、ステータス:順序ID:3、Apl_id:2、Hull_id:4、ステータス:配信済み – SonnyBurnette