【问题标题】:creating table rowspan php创建表行跨度php
【发布时间】:2017-05-25 04:33:33
【问题描述】:

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

$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>";

当前输出和预期结果

【问题讨论】:

  • 为什么使用global $myDB;$myDB 已在该范围内可用。
  • 哎呀它应该是 mycms db
  • 在构建行之前计算返回值,然后在创建元素时使用它。您还需要在while 循环中创建更多单元格。
  • 我的观点仍然成立,为什么要使用global $cmsDB;$cmsDB 已在该范围内可用。
  • 我是新手...所以这是不必要的,可以删除吗?感谢您的提示

标签: php tablerow


【解决方案1】:

请注意:通过设计为此执行两个查询只是一个坏主意。还是这样。您需要做的就是在创建块之前执行第二个查询。记录结果数据的计数并将其用作 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 循环内的表格行,同时启动一个新的表格行,以防您为同一部门打印第二个名称。

【讨论】:

    【解决方案2】:
    $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>";
    

    【讨论】:

      【解决方案3】:

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

      $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"];
      }
      

      【讨论】:

        猜你喜欢
        • 2021-07-23
        • 2018-04-07
        • 2020-05-30
        • 2019-04-12
        • 1970-01-01
        • 1970-01-01
        • 2013-03-29
        • 2020-07-23
        • 1970-01-01
        相关资源
        最近更新 更多