通过过滤/选择排序/选择

时间:2017-08-03 22:18:35

标签: php laravel

我有一个表单,我在几个主题上搜索产品,我也有一个html选择使用PHP开关,以便能够对结果的顺序进行排序。这当前在搜索表单中工作,我希望通过html选择进行排序,而无需单击搜索按钮,并在每次更改时运行正确的选择选项,并立即更改产品的顺序以匹配选择选项

这是HTML:

{!! Form::open(['route' => 's.index', 'method' => 'GET']) !!}
                <div class="form-group">

                    {!! Form::label('productsname', 'Search By Name:') !!}
                    {!! Form::text('productsname', null, array('class' => 'form-control')) !!}
                </div>
                </div>
        <div class="col-md-6">
            <div class="form-group">
                {!! Form::label('categories_id', 'Search By Category:') !!}
                <select class="form-control" name="categories_id" >
                    <option value=""></option>

                    @foreach($types as $type)

                        <option value="{{$type->id}}">{{$type->name}}</option>
                    @endforeach
                </select>

            </div>
        </div>
        <div class = col-md-6>

        <div class="form-group">




                </div>
                </div>

                <div class="form-group">
                    <select class="form-control" name="SortbyList" >
                        <option value="1">Highest Avg</option>
                        <option value="2">Lowest Avg</option>
                        <option value="3">Another Sort option</option>
                        <option value="2">another sort option</option>
                    </select>
                    {!! Form::submit('Find Products', array('class' => ' btn-lg btn-block')) !!}

                    {!! Form::close() !!}
                </div>

这是PHP:

 public function index(Request $request)
{
    //

    $productsQuery = Product::where('approved', '=', 1)->leftJoin('reviews', 'reviews.products_id', '=', 'products.id')->select('products.*', DB::raw('AVG(ratings) as ratings_average' ))->groupBy('products.id');

    switch ($request->SortbyList) {
        case 1:
            $productsQuery = $productsQuery->orderBy('ratings_average', 'DESC');
            break;
        case 2:
            $productsQuery = $productsQuery->orderBy('ratings_average', 'ASC');
            break;
        case 3:
            $productsQuery = $productsQuery->orderBy('ratings_average', 'ASC');
            break;
        case 4:
            $productsQuery = $productsQuery->orderBy('ratings_average', 'ASC');
            break;
            default:
                $productsQuery = $productsQuery->orderBy('ratings_average', 'DESC');


    }



    $name=$request->input('productname');
    $location=$request->input('categories_id');



    if(!empty($name)){
        $sightsQuery->where('productname', 'LIKE', '%'.$name.'%')->get();
    }
    if(!empty($location)){
        $sightsQuery->where('categories_id', $request->input('categories_id') )->get();
    }

    $products= $productsQuery->paginate(8);



    return view('p.search')->withproducts($products);

}

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您想要更改订单而不点击提交按钮(所以,不更改/重新加载页面)?

PHP无法动态更新您的网页,但Javascript可以。