创建 table rowspan php

creating table rowspan php

我的代码需要帮助..我如何获得如下图所示的输出,它会自动插入 rowspan..我当前的代码

$result = $cmsDB->query("SELECT * FROM ".$cmsDB->prefix("departments")."");

echo "<br /><br /><table class='table table-bordered table-striped'>
<tr>
<th>Bil</th>
<th>Department</th>
<th>Staff</th>
</tr>";

$count =1 ;

while($row = $cmsDB->fetchArray($result))
{
$deptid=$row['deptid']; 
$deptname=$row['deptname']; 
 
echo "<tr><td>".$count++."</td><td>".$deptname."</td><td>";
global $cmsDB;
  $result2 = $cmsDB->query("SELECT * FROM ".$cmsDB->prefix("staff")." WHERE deptid=$deptid");
  
while($row = $cmsDB->fetchArray($result2))
{

$name=$row['name']; 
echo "".$name." <br />";

}

}


echo "</td></tr></table>";

当前输出和期望的结果

请注意:通过设计执行两个查询这只是一个坏主意。仍然坚持下去。您需要做的就是在创建块之前执行第二个查询。记录结果数据的计数并将其用作 rowSpan。非常简单。

global $myDB;
$result2 = $myDB->query("SELECT * FROM ".$myDB->prefix("staff")." WHERE deptid=$deptid");

$rowSpan=$result2-num_rows;

echo "<tr>"
echo "<td rowspan=" . $rowSpan . ">" . $count++ . "</td>";
echo "<td rowspan=" . $rowSpan . ">".$deptname."</td>";

第二个while循环必须输出

<td>$name</td></tr>

重要的是关闭 while 循环内的 table 行并开始一个新的 table 行,以防您为同一部门打印第二个名字。

$result = $cmsDB->query("SELECT * FROM ".$cmsDB->prefix("departments")."");

echo "<br /><br /><table class='table table-bordered table-striped'>
<tr>
<th>Bil</th>
<th>Department</th>
<th>Staff</th>
</tr>";

$count =1 ;

while($row = $cmsDB->fetchArray($result))
{
$deptid=$row['deptid']; 
$deptname=$row['deptname']; 

 global $cmsDB;
$result2 = $cmsDB->query("SELECT * FROM ".$cmsDB->prefix("staff")." WHERE deptid=$deptid");


$num_rows = $cmsDB->getRowsNum($result2);


$rowSpan=$num_rows;

echo "<tr>";
echo "<td rowspan=" . $rowSpan . ">" . $count++ . "</td>";
echo "<td rowspan=" . $rowSpan . ">".$deptname."</td>";

while($row = $cmsDB->fetchArray($result2))
{

$name=$row['name']; 
echo "<td>$name</td></tr>";
}

}


echo "</table>";

我使用了这个逻辑,而且效果很好。你可以试试这个。

$result = get_pending_sales_order_details(ST_SALESORDER, $_POST['customer_id'],null);

$order_count=0;
$array_ord=array();


while ($myrow = mysql_fetch_array($result)) 
{

 $result23 = get_pending_sales_order_details(ST_SALESORDER, $_POST['customer_id'],$myrow["order_no"]);

        $row_span = mysql_num_rows($result23);

        start_row();
        if($currentorg != $myrow["order_no"])

        {
        label_cell($myrow["order_no"], "rowspan='".$row_span."' align=center");
        }


    label_cell($myrow["stk_code"], "align=center");
    label_cell($myrow["description"], "align=left");
    label_cell($myrow["pending_quantity"], "align=center");

    end_row();
    $currentorg = $myrow["order_no"];
}