用于更新数据库的Laravel复选框实现

时间:2017-07-03 09:53:44

标签: laravel laravel-5 laravel-5.2 laravel-5.1 laravel-5.3

我一直在努力在Laravel建立一个考勤管理系统。 在考勤视图中,当选中复选框时,控制器功能应该增加相应的数据库列。

我遇到了一些问题。这是我的代码: 的观点:

<div class="container">
<!--<div class="row">-->
    <div class="col-md-8 col-md-offset-2">
       <div class="panel panel-default">

            <div class="panel-heading">Take Attendance</div>
            <h4><center>Teacher: {{ auth()->user()->name}}</center></h4>
            <div class="form-inline">

             @foreach ($second as $sec)
                            <br>
                          <div class = "form-group">

                            {{$sec->Roll }}
                            &nbsp&nbsp&nbsp&nbsp
                            {{ $sec->Name}}
                            </div>
                            <div class = "form-group">
                            <!--{{Form::checkbox('agree') }}-->
                            <input tabindex="1" type="checkbox" value="{{$sec->Roll}}"  name=""  />
                            </div>
             @endforeach

             </div>
             <br>
            <form action ="report_generate&<?php echo $name ?>" method = "post" enctype = "multipart/form-data" >
            <!--<input type = "hidden" name = "_token" value = "{{{ csrf_token() }}}"/>-->
             <div class = "form-group">
             <input type="submit" value= "Submit">
            <center><a href ="/home/report&<?php echo $name ?>">Report</a></center>
             </div>
            </form>

            </div>
    </div>
</div>

控制器(用于提交按钮):

public function report_generate($tabu)

{

$year = DB::table('sub')->select('Year')-
>where('sub.Subject_Name','=',$tabu)->get();

$sub_id = DB::table('sub')->select('Subject_Id')-
>where('sub.Subject_Name','=',$tabu)->get();

        ob_start();
        echo $year;
        $output=ob_get_contents();
        ob_end_clean();

        if ( $output=='[{"Year":1}]')
        {

                $req = "first";
        }
        elseif ( $output=='[{"Year":2}]')
        {

                $req = "second";
        }
        elseif ( $output=='[{"Year":3}]')
        {

                $req = "third";
        }
        elseif ( $output=='[{"Year":4}]')
        {

                $req = "fourth";
        }

        $final = DB::table($req)->get();
        //dd($final);
        //$columns = Schema::getColumnListing($req);
        //dd($sub_id);
        ob_start();
        echo $sub_id;
        //dd($sub_id);
        $va=ob_get_clean();
        $va = stripslashes($va);
        $txt = rtrim($va,"}]");
        $txt = ltrim($txt,"[{Subject_Id:");
        $txt = ltrim($txt,"Subject_Id:");
        $txt = explode(":",$txt);
        $txt = str_replace('"','', $txt);
        //dd($txt[1]);

        $columns = Schema::getColumnListing($req);
        //dd($columns);
        //dd($txt);
        foreach ($columns as $col)
        {
                //dd("Y");
                if($col == $txt[1])
                {
                        $got=DB::table($req)->select($col)->get();
                        //dd($got);
                        foreach($got as $g)
                                {

                                        //want to increment that cell value

                                }
                }
        }
}

1 个答案:

答案 0 :(得分:0)

看起来您的复选框位于表单div之外,这是一个问题。您似乎也跳过了Laravel功能,例如,您可以调用Sub Model,或使用Request facade。也不确定为什么你使用ob来进行那些字符串比较(可能实际上想要查看那个long elseif块的Switch)最后,你可能想要使用原始DB语句在SQL查询中进行增量

DB::statement("UPDATE " . $table . " set " . $column . " to " . $column . " + 1 WHERE id IN (" implode(', ', $ids) . ')")