【发布时间】:2014-04-26 04:53:11
【问题描述】:
我有一个表,其中有一列名为 extension_list,其中包含逗号分隔值
200,201,202,203,204等
如果我有一个从数据库中选择这些的循环:
$stmt = $pbx01_pdoconn->prepare("SELECT * from client where parent_client_id = :parent_client_id ");
$stmt->execute(array(':parent_client_id' => $customerid));
$records = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($records as $result) {
$stmt = $pbx01_pdoconn->prepare("SELECT * from extension where client_id = :client_id ");
$stmt->execute(array(':client_id' => $result["id"]));
$extension = $stmt->fetch();
if($extension["type"] == 'term') {
echo '<tr>
<td>'.$result["name"].' ('.$extension["number"].')</a></td>
</tr>';
}
}
如何在每个值旁边显示复选框,如果 $extension["number"] 值在 extension_list 列中,请勾选复选框。
此外,当勾选复选框并按下提交按钮时,它将更新 extension_list 列并将该值添加到逗号分隔列表中
【问题讨论】:
-
请注意,如果您需要使用查询来操作它们,那么在数据库中存储逗号分隔值几乎总是一个坏主意。适当规范化的结构会更好。
-
在单列中使用逗号分隔的列表通常是不好的设计。最好使用关系表来存储该信息。所以你可能会有
clients、extensions和clients_x_extensions的表,而后者会有client_id和extension_id的列。