PHP while循环动态rowspan

时间:2016-08-08 07:17:36

标签: php while-loop html-table

考虑一个表例如

enter image description here

使用这些表我只想通过将rowspan添加到项目ID 1002来打印这样的表。

enter image description here

这是我的PHP代码

$temp_val = '';
$counter = 1;
$sql_sel = mysqli_query($con,"select * from item_table");
while($res_sel = mysqli_fetch_array($sql_sel)){

    if($temp_val == $res_sel['item_id']){
        $counter++;
        echo "<tr></tr>";
    }
    else{
       echo "<tr><td rowspan='".$counter."'>".$res_sel['item_id']."</td></tr>"; 
    }

    $temp_val = $res_sel['item_id'];

}
echo "</table>";

它不正确,它将rowspan添加到商品ID 1003

2 个答案:

答案 0 :(得分:2)

你不能这样做,因为当你创建第一行时,你必须决定这个列可以跨越多少,所以你必须首先获得类似id的计数才能实现它。我只是给你并想知道它如何与数据库提供的数组一起工作。

<?php

// Array comming from database
$databaseValues = [
    [
        'item_id'=>'1001',
        'item_color'=>'black',
    ],
    [
        'item_id'=>'1002',
        'item_color'=>'blue',
    ],
    [
        'item_id'=>'1002',
        'item_color'=>'green',
    ],
    [
        'item_id'=>'1003',
        'item_color'=>'red',
    ]
];

// Creating an array as per the need for the table
$arrayForTable = [];
foreach ($databaseValues as $databaseValue) {
    $temp = [];
    $temp['item_color'] = $databaseValue['item_color'];
    if(!isset($arrayForTable[$databaseValue['item_id']])){
        $arrayForTable[$databaseValue['item_id']] = [];
    }
    $arrayForTable[$databaseValue['item_id']][] = $temp;
}

?>

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>

<table border="1">
    <?php foreach ($arrayForTable as $id=>$values) :
        foreach ($values as $key=>$value) :?>
    <tr>
        <?php if($key == 0) :?>
        <td rowspan="<?= count($values)?>"><?= $id?></td>
        <?php endif;?>
        <td><?= $value['item_color']?></td>
    </tr>
    <?php endforeach;
    endforeach; ?>
</table>

</body>
</html>

希望这对你有所帮助

答案 1 :(得分:0)

您应该在elseif声明

中切换代码