使用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); 
       } 
+0

您为什么使用foreach处理implode? –

+0

对不起,我没有注意到你的问题。我需要implode获得字符串的礼物ID并将字符串存储到表格中 – platanas20

无需array_slice 在你的PHP代码:

$gift = $_POST['opt2']; 
$gift_id = implode(", ", $gift); 

利用这一点,你可以得到你想要的结果。

编辑:

你得到所有1,2,3,4的原因是,您使用hidden礼品ID。

尝试将disabled="disabled"添加到您不希望发送到服务器的隐藏标记。在此之后,您可以使用$_POST['opt2']

+0

每个复选框代表一个礼物,每个礼物都有一个唯一的id。使用此代码的结果是' 1,2,3,4'虽然我选择了4个复选框中的2个(第1和第2)。所以我用切片去除最后一个复选框.. – platanas20

+0

对不起!你用什么'opt []'来使用? – weigreen

+0

如果我使用'opt'我什么也没有得到。 – platanas20