一部のデータを表示する効率的な方法を考え出そうとしていますが、まったく成功していません。
テーブルはいくつかのテーブルから動的に構築され、サイトごとの結果を示す列が入力されたヘッダーの行を表示します。例:
Site name | Column A | Column B | Column C => column headers continue from DB query
Site A | Result A | Result B | Result C
Site B | Result C | Result B | Result C
Site C | Result C | Result B | Result C
Results keep going vertically.
これが私が使用しているクエリです
$risk_section=$row_risk_category['risksectid'];
mysql_select_db($database_auditing, $auditing);
$qry_selfsites = sprintf("SELECT
tblself.siteid AS selfsite,
tblsite.sitename AS sitename,
tblsite.address AS address,
tblpct.pctname AS pctname,
tblresultsnew.total,
tblresultsnew.auditid AS auditid,
tblriskcategories.risksectid AS risksectid,
tblriskcategories.risksection AS risksection
FROM tblself
LEFT JOIN tblresultsnew ON tblself.auditid = tblresultsnew.auditid
LEFT JOIN tblsite ON tblself.siteid = tblsite.siteid
LEFT JOIN tblpct ON tblsite.pctid = tblpct.pctid
LEFT JOIN tblriskcategories ON
tblresultsnew.risksectid=tblriskcategories.risksectid
WHERE tblsite.pctid IN (SELECT pctid FROM tblreportpcts WHERE
pctreportid='$pctreportid')
AND tblsite.sitetypeid IN (SELECT sitetypeid FROM tblreportsites WHERE
pctreportid='$pctreportid')
AND tblself.year = %s
ORDER BY tblsite.pctid,tblsite.sitename",
GetSQLValueString($yearofrpt, "int"));
$selfsites = mysql_query($qry_selfsites, $auditing) or die(mysql_error());
$totalRows_selfsites = mysql_num_rows($selfsites);
問題は、上記のクエリ (またはその適合バージョン) からデータを取得して、すべての結果が正しく整列するようにテーブルを動的に構築する方法があるかどうかです。これまでのところ、私はそれを垂直に構築することしかできません。
申し訳ありませんが、時間を編集してください(以下の回答で作業した後、質問の言葉遣いがうまくいかなかったことに気付きました)
私が取得しようとしているのは、クエリからの列ヘッダーの行です ( tblriskcategories.risksection AS risksection
) これらは、列名を与えるために水平方向に入力されます。
次に、その下にサイト名が表示され、上の列ヘッダーに対応する結果が表示されます。
<table>
<tr>
<th>Sitename</th>
<?php while($row_selfsites=mysql_fetch_assoc($selfsites){
//loop through the section headers pulled from the DB (tblriskcategories)
<th><?php echo $row_selfsites['risksection'];//show the section headers?></th>
<?php }
//end header loop then start another loop to show a row for each site pulled
//out by the query and show the relevant results in the correct column
while($row_selfsites=mysql_fetch_assoc($selfsites)) {
//do the vertical drop matching the header rows with the sitenames from tblsite
//and the results from tblresultsnew
?>
<tr>
<td><?php echo $row_selfsites['sitename'];?></td>
<td><?php echo $row_selfsites['total'];
//these need to grow to fit the headers and each site?></td>
<tr>
<?php } //end displayed data loop?>
</table>
以下の関連するテーブル構造:
tblresultsnew resultsid,auditid
,risksectid,total
tblriskcategories
riskectid, risksection
したがって、tblself はデータが必要なサイトのリストと関連する auditid を
保持し、tblresultsnew は結果 (合計列) を各 risksectid と各 auditid に
保持します。
tblsite はサイト データを保持して何かを意味するよう
にします。これで質問がもう少し詳しく説明されることを願っています。
すべての助けをありがとう。
デイブ