请考虑以下事项。
我有一个关系表设置如下。一种层次结构,其中根与subRoot表具有1:1的关系,其中包含与Root相关的信息。 我可以使用查询和简单的while循环显示如图所示的表。
简化型号:
Father 1:n Child 1:n Root 1:1 subRoot
--- --- --- ---
1 S1 P1 yes
1 S1 P2 no
1 S2 P1 no
1 S2 P2 no
1 S3 P1 yes
1 S3 P2 yes
↓ ↓ ↓ ↓
我想要完成的是显示以下内容,而且我遇到了很多麻烦...
Father Root S1 S2 S3 →
--- --- -- -- --
1 P1 yes no yes
1 P2 no no yes
↓
编辑:我可以生成的表的代码(第一个)。这是一个改编的代码作为我工作的方式太长,无法发布在这里。 (对不起,如果有任何错误......)
<?
$q="SELECT * FROM
Child ,
Root,
subRoot
WHERE
Child.Father_ID = 1 AND Child.ID = Root.ID AND Root.ID2 = subRoot.ID2";
$r=mysql_query($q);
$num=mysql_num_rows($r);
?>
<table class="jl_tbl" id="hor-minimalist-b">
<tr>
<th width="20px">Child</th>
<th width="150px">Root</th>
<th width="3%">subRoot</th>
</tr>
<?
$i=0;
while ($i < $num) {
$Child=mysql_result($r,$i,"Sx");
$Root=mysql_result($r,$i,"Px");
$subRoot=mysql_result($r,$i,"YN");
?>
<tr>
<td><? echo $Child; ?></td>
<td><? echo $Root; ?></td>
<td><? echo $subRoot; ?></td>
</tr>
<?
$i++;
}
?>
编辑@verbumSapienti。
答案 0 :(得分:1)
<?php
$i=0;
while ($i < $num)
{
$Child=mysql_result($r,$i,"Sx");
$Root=mysql_result($r,$i,"Px");
$subRoot=mysql_result($r,$i,"YN");
$root[$Root] = array($Child => $subRoot);
$i++;
}
echo '<table>';
echo '<tr>';
echo '<th>Father</th><th>Root</th>';
foreach($root as $Root => $array)
{
foreach($array as $Child => $subRoot)
{
echo "<th>$Child</th>";
}
}
echo '</tr>';
foreach($root as $Root => $values)
{
echo '<tr>';
echo '<td>fatherSource</td>';
echo "<td>$Root</td>";
foreach($values as $subRoot)
{
echo "<td>$subRoot</td>";
}
echo '</tr>';
}
echo '</table>';
?>