我正在尝试从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
}
}
}
这不起作用,因为它只显示一个“选中的复选框字段”。 请问我做错了什么?
答案 0 :(得分: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语句都位于由SQL id键入的$ options数组中。数组值将是以逗号分隔的已选中复选框值。
print_r($options)
[
1 => "c,r,u,d",
2 => "c,r,d"
]
答案 1 :(得分: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
}
答案 2 :(得分:-1)
记住你的复选框是一个数组! 为了你的低估更好的发送给你的控制器只是写
print_r($_POST);exit();
看看之后到底是什么,在你的框架方法中写下它:
foreach($_POST['resources'] as $resources){
...
}