基于数据库字段的动态表

时间:2018-11-26 20:29:11

标签: php codeigniter

帮帮我,当我要创建动态表时,我就得到了堆栈

所以程序的想法是我们可以容纳一个数据库的选择字段并显示它。  因此,如果我们在数据库的表上有此字段:

  1. 名称
  2. 年龄
  3. 地址

    我们只想显示名称和地址,所以我将规则保存在数据库中(选择名称,地址)

    但是问题出在我显示动态表时,当字段总是变化时如何制作动态表(例如:也许该字段仅是Age或Name和age,或者我们仅显示我配置的所有#it)

我试图将查询结果放入一个数组并像这样显示。

<table>
    <?php for($x=0;$x<$length_array;$x++){ ?>
        <tr>
            <?php for($y=0;$y<$width_array;$y++){ ?>
                <td><?php $result[$length_array][$width_array] ?></td>
            <?php } ?>  
        </tr>
    <?php } ?>
</table>

注意:变量$ result来自结果查询,我将其更改为数组,但是问题是我无法在此代码中计算数组的长度和宽度。

1 个答案:

答案 0 :(得分:1)

这取决于您的结果集如何返回,但是根据上面的代码,我将假设您的结果是一个数组数组。

首先考虑一下您想要什么:您想要一个html表,该表的标头给出每一列的名称,然后为结果集中的每条记录提供一行。

我非常不喜欢混合使用php和html,因此我将使用不同的语法样式,但是无论使用哪种样式,步骤都是相同的。这种方式使逻辑更容易阅读。

首先,制作桌子。

<?php
$html = '<table>';

现在,您要向表中添加标题,并为结果中的每一列创建一个单元格。在此之前,您需要回答:您将在哪里获取列的名称?有两个可能的答案; 1)直接从您的查询结果中获取,或2)对它们进行硬编码。

直接从查询结果中获取它们要灵活得多,但是您为数据库列指定的名称可能并不总是友好的。

$columnNames = ['Name', 'Address'];

----或----

$firstRow = $result[0]; // of course we have checked that the result set is not empty!
$columnNames = array_keys($firstRow); // adjust if rows are objects instead of arrays

现在输出标题:

$html .= '<thead>';
foreach($columnNames as $columnName) {
    $html .= '<th>' . $columnName . '</th>';
}
$html .= '</thead>';

现在,就像您对上一个问题的回答一样,我们可以继续进行操作,在表中为结果集中的每个项目创建一行。对于每一行,您都有一个内部循环,可以为每个单元格创建标记。

$html .= '<tbody>';

foreach($result as $row) {
    $html .= '<tr>';
    foreach($row as $cell) {
        $html .= '<td>' . $cell . '</td>';
    }
    $html .= '</tr>';
}

$html .= '</tbody>';
$html .= '</table>';

print $html;