无法从多个 html 复选框访问值
Posted
技术标签:
【中文标题】无法从多个 html 复选框访问值【英文标题】:Unable to access values from multiple html checkboxes 【发布时间】:2018-01-15 03:55:28 【问题描述】:我正在尝试将 html 复选框中的值保存在 mysql 数据库表中,但我做得不对。我需要你的建议。
这是我的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
这不起作用,因为它只显示一个“选中的复选框字段”。 请问我做错了什么?
【问题讨论】:
您的数组名称之一是resources
,您也应该以$request->input('resources')
访问它。
您是否尝试保存以逗号 (,) 分隔的选定选项。例如:如果选择了 c 和 d,则数据库中的 c,d ?
【参考方案1】:
记住你的复选框是一个数组! 为了更好地了解发送到控制器的内容,只需编写
print_r($_POST);exit();
查看在你的框架方法中写入之后的确切内容,例如:
foreach($_POST['resources'] as $resources)
...
【讨论】:
【参考方案2】:如果您尝试保存以逗号分隔的选定值,例如:如果用户已通过 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
【讨论】:
【参考方案3】:查看您的 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"
]
【讨论】:
以上是关于无法从多个 html 复选框访问值的主要内容,如果未能解决你的问题,请参考以下文章