我有一个包含4个或更多复选框的表单。表单由while循环创建,并包含数据库表中的数据。每个复选框代表一个礼物,每个礼物都有唯一的ID(id1 = 1,id2 = 2,id3在数据库中,用户可以选择一个或多个礼物,然后单击提交按钮来存储他的选择。所以我需要php implode()
函数来获取用户选择的字符串。例如如果他选择第一个和第二个复选框/礼物,那么必须存储的值应该是1, 2
。而不是这个我总是有不同的存储数据并且与用户选择不匹配。任何想法?
表格:
<form method='post' action='insert.php'>
.
.
.
while($row_select4 = $stmt_select4->fetch(PDO::FETCH_ASSOC)){
if($form_points>=$row_select4['points']) {
$points = $row_select4['points'];
echo '
<div>
<div class="feed-activity-list"><div style="border: 0.5px solid green; border-right-style:none;" class="input-group m-b"><span class="input-group-addon">
<input type="checkbox" onclick="enable_form();" id="checkbox" name="opt[]" value="'.$points.'"></span>
<input type="hidden" name="opt2[]" value="'.$row_select4['id'].'">
<div class="feed-element">
<a href="profile.html" class="pull-left">
<img alt="image" class="img-circle" src="'. $row_select4['image_url']. '">
</a>';
?>
<button type="submit" id="submit" name="eksasrgirwsh" class="btn btn-w-m btn-primary">ΕΞΑΡΓΥΡΩΣΗ</button>
</form>
另外(在插入表格之前):
if(isset($_POST['opt2'])){
foreach ($_POST['opt2'] as $value) {
$gift = $_POST['opt2'];
$sliced = array_slice($gift, 0, -1);
$gift_id = implode(", ", $sliced);
}
这是我用来获取所选gift_ids并创建它们的字符串
表格更新:
<input type="hidden" disabled="disabled" name="opt2[]" value="'.$row_select4['id'].'">
获取gift_ids的代码:
foreach ($_POST['opt2'] as $value) {
$gift = $_POST['opt2'];
$gift_id = implode(", ", $gift);
}
答案 0 :(得分:0)
无需array_slice
在你的PHP代码中:
$gift = $_POST['opt2'];
$gift_id = implode(", ", $gift);
通过使用它,您可以获得您想要的结果。
修改强>
您获得全部1,2,3,4的原因是您使用hidden
作为礼物ID。
尝试将disabled="disabled"
添加到您不希望发送到服务器的隐藏标记中。在此之后,您可以使用$_POST['opt2']