使用php爆炸函数将数据存储在数据库表中
我有一个带有4个或更多复选框的表单。表单由while循环创建并具有数据库表中的数据。每个复选框代表一个礼物,每个礼物都有一个唯一的id id1 = 1,id2 = 2,id3 = 3,...)在数据库中。所以用户可以选择一个或多个礼物,然后点击提交按钮来存储他的选择。所以我需要php implode()
函数来获取字符串的选择例如,如果他选择第一个和第二个复选框/礼物,则必须存储的值应该是1, 2
。而不是我总是有不同的存储数据,并且与用户选择不匹配。任何想法?使用php爆炸函数将数据存储在数据库表中
形式:
<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);
}
无需array_slice
在你的PHP代码:
$gift = $_POST['opt2'];
$gift_id = implode(", ", $gift);
利用这一点,你可以得到你想要的结果。
编辑:
你得到所有1,2,3,4的原因是,您使用hidden
礼品ID。
尝试将disabled="disabled"
添加到您不希望发送到服务器的隐藏标记。在此之后,您可以使用$_POST['opt2']
每个复选框代表一个礼物,每个礼物都有一个唯一的id。使用此代码的结果是' 1,2,3,4'虽然我选择了4个复选框中的2个(第1和第2)。所以我用切片去除最后一个复选框.. – platanas20
对不起!你用什么'opt []'来使用? – weigreen
如果我使用'opt'我什么也没有得到。 – platanas20
您为什么使用foreach处理implode? –
对不起,我没有注意到你的问题。我需要implode获得字符串的礼物ID并将字符串存储到表格中 – platanas20