2017-08-07 32 views
2

我想將html複選框中的值保存在MySQL數據庫表中,但我沒有這樣做。我需要你的建議。無法訪問多個html複選框的值

這是我的HTML

@foreach($sql as $sql) 
<div class="form-group"> 
    <label class="control-label mb-10" for="">{{$sql->name}}</label> 
    <div class="input-group"> 
     <input type="hidden" name="resource[]" value="{{$sql->id}}"> 
     <input type="checkbox" name="resources[]" value="c">Create 
     <input type="checkbox" name="resources[]" value="r">Read 
     <input type="checkbox" name="resources[]" value="u">Update 
     <input type="checkbox" name="resources[]" value="d">Delete 
    </div> 
</div> 
@endforeach 

這是我的控制,我正在試圖保存到數據庫表

public function store(Request $request) { 
    foreach ($request->resource as $resource) { 
     # code... 
     foreach ($request->resources as $resources) { 
      $res[] = $resources; 
      $options = implode(',', $res); // Get selected options 
      $resource = $resource; // Get value of the resource 
     } 
    } 
} 

這不工作,因爲它只能說明只是一個「選擇複選框字段」。 請問我做錯了什麼?

+2

對於一個數組的名稱是'resources',你也應該可以像'$ request-> input('resources')那樣訪問它''。 –

+0

您是否嘗試保存用逗號(,)分隔的選定選項。如果c和d被選中,例如:c,d在數據庫中? – Vikash

回答

2

看着你的HTML代碼,看起來你將會遍歷可能有多個SQL語句來創建複選框。服務器將無法區分這些信息。你應該改變你的複選框的名字更像:

<input type="checkbox" name="resources[{{$sql->id}}][]" value="c">Create 
<input type="checkbox" name="resources[{{$sql->id}}][]" value="r">Read 

然後你的PHP代碼可能是這個樣子:

foreach ($request->input('resources') as $id => $resources) { 
    $options[$id] = implode(',', $resources); 
} 

每個SQL語句將是$ options數組由SQL ID鍵入的。該數組的值將被選中的複選框值以逗號分隔。

print_r($options) 

[ 
    1 => "c,r,u,d", 
    2 => "c,r,d" 
] 
+0

哇!謝謝你,兄弟!這太棒了 – radioactive

-1

記住你的複選框是一個數組! 你低估了更好的東西送到你的控制器只寫

print_r($_POST);exit(); 

,看看抵達究竟以後把它寫在喜歡你的架構方法:

foreach($_POST['resources'] as $resources){ 
... 
} 
0

如果你試圖保存選定的值以逗號分隔,例如:如果用戶已經通過c和d選擇,那麼您將以c,d?的形式保存在數據庫中。如果是這樣,那麼你可以在單行中得到所有選定的值。

public function store(Request $request) { 
    // get all values separated by comma 
    $selectedValues = implode(",", $request->input('resources')); 

    // save values in database here 

}