2017-08-03 1 views
0

Ich habe ein Formular, wo ich nach Produkten zu einigen Themen suchen, ich habe auch eine HTML-Auswahl mit einem PHP-Schalter arbeiten, um die Möglichkeit, die Reihenfolge der Ergebnisse zu sortieren. Dies funktioniert derzeit in der Suchmaske, und ich möchte die Sortierung nach HTML aktivieren, ohne auf die Suchschaltfläche zu klicken und die korrekte Auswahloption bei jeder Änderung auszuführen und die Reihenfolge der Produkte sofort der Auswahloption anzupassen . HierTrennen einer Sortierung nach Filter/wählen

ist die 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> 

Hier ist die 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); 

} 
+0

Was ist das Problem? was erwartest du? –

+0

Ich möchte die Auswahl als Stand-Alone und nicht in der Form, die es auf Tastendruck in der Minute sucht. Ich möchte in der Lage sein, auf eine Auswahloption zu klicken und die Seite antwortet sofort mit den Ergebnissen der Suche. Wenn Sie ein Beispiel benötigen, denken Sie an die meisten Warenkorb-Website haben sie eine Sortierung von A-Z usw. Ich möchte in der Lage sein, eine Sortierung nach separaten wie diese zu haben. – detinu20

Antwort

0

Wenn ich richtig verstanden habe, wollen Sie die Reihenfolge ändern, ohne einen Klick auf den Absenden-Button (und so, ohne Ändern/Neuladen der Seite)?

PHP kann Ihre Seite nicht dynamisch aktualisieren, aber Javascript kann.

+0

Wie würde ich das tun? Beispiele? – detinu20

+0

Ich fand ein nettes kleines Beispiel: http://jsfiddle.net/kohenkatz/RT7J4/ – iArcadia