【问题标题】:How to get multiple values from checkbox如何从复选框中获取多个值
【发布时间】:2021-11-21 20:20:16
【问题描述】:

我正在使用 Laravel 8 框架。

使用查询从表中获取值并将其显示在复选框中,但是当我选择多个时,它只显示单个,而不是多个。

这是带有查询功能的 Blade PHP 代码。

<div class="row">
        <div class="col-xs-12 col-sm-12 col-md-12">
        <div class="form-group">
        <strong>Students:</strong>
        <div style="margin-top: 5px" >
        
        <?php  $conn = new mysqli('localhost', 'root', '', 'rp') or die ('Cannot connect to db');

$result = $conn->query("select users.id, users.name from users, model_has_roles where model_has_roles.model_id=users.id and model_has_roles.role_id=14;
");

echo "<html>";
echo "<body>";
while ($row = $result->fetch_assoc()) {
              unset($id, $name);
              $id = $row['id'];
              $name = $row['name']; 
              echo '<form><input type=checkbox name="student_id[]"  value="'.$id.'">'.$name.'</form>'; }

//echo "</select>";
echo "</body>";
echo "</html>";?>

他是我在Controller中的功能码

public function update(Request $request, Ticket $ticket){
     request()->validate([
        'gpname' => 'required',
        'detail' => 'required',
        'semester' => 'required',
        'gender' => 'required',
        
       // 'status',
       // 'Assigned',
        ]);

      $users= Auth::user();
      $rr= $users->roles->pluck('name')->toArray();
        // dd($users->id);
   // $data= $request->all();
     //$ticket = new Ticket;
     if($rr[0]=='Admin'){ 

        $data= $request->all();
       //dd($data['Assigned'])    ;
       $ticket->gpname=$data['gpname'];
        $ticket->detail=$data['detail'];
        $ticket->semester=$data['semester'];
        $ticket->gender=$data['gender'];
        //dd("hhh");
        $student_id = array("student_id");
        if(isset($_POST['submit'])){
            if(!empty($_POST['student_id'])){
                $student_id = $_POST['student_id'];
                foreach($student_id as $id){
                   // echo $id.'<br/>';
                   dd($data['student_id']);
                }
            }
        }
      dd($data['student_id']);



       //dd( $data['student_id[]']);
        //$ticket->studentnames=$users->empid;
        $ticket->user_id=$users->id;
        
        
        //$ticket->Assigned=$data['Assigned'];
        $ticket->save();

如你所见,如果我将dd($data['student_id']); 作为评论,它永远不会出现在foreach() 中的前一个

如何从复选框中获取多个值?

【问题讨论】:

  • 你为什么在 Laravel 中使用 mysqli?
  • 因为我使用的是 localhost xampp 服务器
  • 这不是我的问题的答案。您正在使用的服务器堆栈与它无关。使用 Laravel 时不要使用 mysqli。

标签: php html mysql laravel


【解决方案1】:

dd();正在杀死循环并仅返回您应该回显结果而不是 dd() 的第一个值;他们或使用。

if(!empty($_POST['student_id'])){
    $student_id = $_POST['student_id'];
    $array_test = []
    foreach($student_id as $id){
       if($id == $data['student_id']){
            array_push($id, $array_test)
        } 
    }
    dd($array_test);
}

因为我不知道你想做什么,所以我会放弃第二个想法

if(!empty($_POST['student_id'])){
    $student_id = $_POST['student_id'];
    $array_test = []
    foreach($student_id as $id){
        array_push($id, $array_test)
    }
    dd($array_test);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2015-02-11
    • 2023-03-22
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多