无法访问多个html复选框中的值

时间:2017-08-07 18:44:31

标签: php html mysql laravel checkbox

我正在尝试从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
        }
    }
}

这不起作用,因为它只显示一个“选中的复选框字段”。 请问我做错了什么?

3 个答案:

答案 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){
...
}