【问题标题】:Unable to access values from multiple html checkboxes无法从多个 html 复选框访问值
【发布时间】: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-&gt;input('resources') 访问它。
  • 您是否尝试保存以逗号 (,) 分隔的选定选项。例如:如果选择了 c 和 d,则数据库中的 c,d ?

标签: php html mysql laravel checkbox


【解决方案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"
      ]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-06
        • 2016-08-02
        • 1970-01-01
        • 2016-04-25
        • 2019-03-14
        • 1970-01-01
        • 1970-01-01
        • 2018-10-14
        相关资源
        最近更新 更多