【问题标题】:How to do an HTML 'upward' rowspan如何进行 HTML“向上”行跨度
【发布时间】:2014-06-17 07:01:26
【问题描述】:

问题来了:

我需要知道是否有办法在表单上的 <th> 元素上进行向上的行跨度。

我正在读取数据库中的一些行,我需要将它们放入 html 表中。 我正在做类似的事情:

echo "<table>";
while($result = $resultSet->fetch())
{
    echo "<tr>";
        echo "<td>$result['Name']</td>";
        echo "<td>$result['Job']</td>";
    echo "</tr>";
}
ehco "</table>";

在我需要将两个包含相同值的相邻单元格“跨越”在一起之前,第一步很容易。

例如,如果有人同名但有两份工作,我希望他们有类似的工作:

echo "<tr>";
    echo "<td rowspan='2'>$result['Name']</td>";
    echo "<td>$result['Job']</td>";
echo "</tr>";

但我无法预测某人有多少工作(除非他们都至少有一份工作,而且他们都井井有条)。 MySQL表中的记录示例

姓名/**/职位

保罗/**/乔布斯1

西蒙/**/Jobs23

西蒙/**/乔布斯45

罗杰/**/Jobs67

(所有 simon 的工作都“相互落后”,它们被分组。如果 Paul 有第二份工作,那将是表中的第二条记录“推倒”simons 工作)。

所以我需要更改第一个元素的 rowspan 值以适应该人拥有的工作数量。

这就是为什么我需要知道是否可以进行向上跨度的原因,因为我可以只显示它们中的每一个并计算每个人有多少工作并执行一个行跨度来向上合并表格单元格。

获取数据库中的每一行然后循环遍历它们并检查一个人现在必须“跨越”单元格的工作量,然后将它们全部显示然后跳过它们,这肯定会更容易。等等。

谢谢

【问题讨论】:

    标签: php html mysql html-table


    【解决方案1】:

    不使用行跨度,只需在第二列中嵌套一个表格,其中包含该人的所有工作。

    echo "<tr>";
    echo "<td>$result['Name']</td>";
    echo "<td>";
    echo "<table>"
    foreach($jobs as $job): //$jobs holds the job values for the current name
      echo "<tr><td>";
      echo $job;
      echo "</td></tr>";
    endforeach;
    echo "</table>";
    echo "</td>";
    echo "</tr>";
    

    注意:您需要预处理结果集以获取此方法的二维数组(请参阅 Niet the Dark Absol 的回答)。

    【讨论】:

      【解决方案2】:

      您要查找的内容在 HTML 中不存在。但你可以这样做:

      $currName =  $result['Name'];
      echo "<tr>";
          if($currName==$prevName)
          {
            echo "<td>&nbsp;</td>";
          }
          else
          {
            echo "<td>$result['Name']</td>";
          }
          echo "<td>$result['Job']</td>";
      echo "</tr>";
      $prevName = $currName;
      

      【讨论】:

        【解决方案3】:

        这样的情况需要预处理。像这样:

        $people = array();
        while($result = $resultSet->fetch())
        {
            if( !isset($people[$result['Name']])) $people[$result['Name']] = array();
            $people[$result['Name']][] = $result['Job'];
        }
        
        echo "<table>";
        foreach($people as $name=>$jobs)
        {
            echo "<tr>";
                echo "<td rowspan=\"".count($jobs)."\">".$name."</td>";
                echo "<td>".array_shift($jobs)."</td>";
            echo "</tr>";
            foreach( $jobs as $otherjob)
            {
                echo "<tr><td>".$otherjob."</td></tr>";
            }
        }
        echo "</table>";
        

        完成!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-06
          • 2013-03-12
          • 1970-01-01
          • 1970-01-01
          • 2018-04-01
          相关资源
          最近更新 更多