2016-06-07 25 views
0

我有一個帶有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

回答

0

無需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