将ID添加到动态创建的表中

时间:2014-03-12 13:20:42

标签: php html-table

在另一个Stack Overflow帖子的帮助下,我现在已经让动态表正常工作了。 我正在循环一个数组并创建多个表。这很有效。

这是我正在使用的代码:

foreach ($id as $k => $v) {
    $maxcols = $cols[$unit[$k]]; 
    $maxid = $cells[$unit[$k]]; 
    $startid = 1;

// maxcols = 4 // maxid = 8

echo "<table id='table$v'><tr>\n";
for ($i = 1;$i<=ceil($maxid/$maxcols);$i++) {

    echo "<tr>\n";
    for ($j=1;$j<=$maxcols;$j++) {
        if ($startid <= $maxid)
            echo "  <td class='mark'>ID".$startid++."</td>\n";
        else
            echo "  <td class='mark'> </td>\n";
    }

    echo "</tr>\n<tr>\n";
    for ($j=1;$j<=$maxcols;$j++) {
        $p = ($i==1) ? $j : ($j+$maxcols);
        echo "<td id='$p'></td>\n";
    }
    echo "</tr>\n";
}

echo "</table>\n";
}

如果maxcols = 4且maxid = 8,我会得到一个如下所示的表:

enter image description here

查看该表的代码我可以看到每个TD都有一个与标题ID值匹配的ID。例如:第1行第2列TD ID = 2标头= ID2

使用以下方法创建ID值:

    $p = ($i==1) ? $j : ($j+$maxcols);

如果我更改maxcols = 2,那么我会得到一个如下所示的表:

enter image description here

但是,TD ID值与标头ID不匹配。他们去了

1,2
3,4
3,4
3,4

如何让每个单元格都具有正确的TD ID?

1 个答案:

答案 0 :(得分:1)

简单的解决方案:

$maxcols = $cols[$unit[$k]]; 
$maxid = $cells[$unit[$k]]; 
$startid = 1;
$idCounter = 1;
…
…
for ($j=1;$j<=$maxcols;$j++) {
    echo "<td id='$idCounter'></td>\n";
    $idCounter++;
}

使用$j$i$maxcols可能是一种方法,但为什么会让事情变得复杂。

如果您真的只想将id分配给具有值的单元格,则可以进行此更改

echo "<td id='".($idCounter<=$maxid ? $idCounter : "")."'></td>\n";