【问题标题】:PHP while loop dynamic rowspanPHP while 循环动态行跨度
【发布时间】:2016-09-25 02:20:12
【问题描述】:

以表格为例

使用这些表我只是想通过将行跨度添加到项目 id 1002 来打印这样的表。

这是我的 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>";

这是不正确的,它将行跨度添加到项目 id 1003

【问题讨论】:

标签: php while-loop html-table


【解决方案1】:

您不能这样做,因为当您创建第一行时,您必须决定该列可以跨越多少,因此您必须首先获取相似 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>

希望对你有帮助

【讨论】:

    【解决方案2】:

    你应该在elseif语句中切换代码

    【讨论】:

    • 尝试将代码 &lt;td&gt;&lt;td rowspan=... 放在 if 语句中
    猜你喜欢
    • 1970-01-01
    • 2015-03-31
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 2011-06-02
    相关资源
    最近更新 更多