首页 > 解决方案 > php中使用ajax创建基于数据库数组元素的html表

问题描述

我有一个网站,您可以在其中选择表格的一行,然后在不刷新页面的情况下显示另一个表格。新表基于转换为数组并以逗号分隔的字符串。

该表是在服务器端生成的,而不是在带有 php 元素的 html 中生成的。我似乎无法让表格显示原始字符串的所有元素,现在作为一个数组,并将它们作为行动态添加。

这是服务器端代码:

if (isset($_GET['query'])) {
    $id = $_GET['query'];
    $query = "SELECT * FROM samples_database WHERE sample_id=$id;";


    $result = mysqli_query($connect, $query);

    $input = mysqli_fetch_array($result);

    $input1 = $input['micro_analysis'];

    $rows = var_dump(explode(',', $input1));

    if (count($rows) > 0) {
        $output .= 
        '<thead>
        <tr>
        <th>Tests</th>                      
        </tr>                                   
        </thead>
        <tbody>';
        foreach ($rows as $row): array_map('htmlentities', $row);
            '<tr>
            <td>'; echo implode('</td><td>', $row); 
            '</td>                
            </tr>';
        endforeach;  
        '</tbody>';
    }
    echo $output;
}

为了更好地理解,变量$input1将如下所示:

$input1 = "1,2,44,67";

使用var_dump(explode(',', $input1));它时会产生这样的数组:

array(4) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(2) "44" [3]=> string(2) "67" }

所以现在我需要在列测试下创建一个带有“1”的行,然后是一个带有“2”的新行,依此类推......

有人可以帮忙吗?

标签: phphtmlarrays

解决方案


如果$input1是一个用逗号分隔的简单字符串,那么这样的内容就足够了:

$input1 = "1,2,44,67";

$rows = explode(',', $input1);
$output = "";
if (count($rows) > 0) {
    $output .= '<thead><tr><th>Tests</th></tr></thead><tbody>';
    foreach ($rows as $row){
        $output .= '<tr><td>' . $row . '</td></tr>';
    }
    $output .= '</tbody>';
}
echo $output;

无需再次使用array_mapexplode只需遍历内部的每个结果$rows并使用字符串连接即可。


推荐阅读