2016-05-31 93 views
1

我是PHP新手,並且在排序時遇到了一些麻煩。用下拉菜單對電影進行排序

我有一個電影頁面已經按流派排序,並在該頁面內我希望能夠按標題,評分和年份排序,我不知道該怎麼做。

在索引頁面中,我能夠輕鬆地對影片進行排序,因爲它們尚未按流派排序,所以我只需在查詢中放入ORDER BY something,並且它返回了我想要的內容。

現在的問題是,我要檢查選擇在那一刻,其風格,並與我從下拉列表中選擇,我不知道該怎麼做...關聯

我不知道這是不是足夠明確的,但如果你有任何疑問,請向我...

我有我從現有的問題在這裏複製下面的代碼:

<form class="sortby_form" action=""> 
        <div class="sortby" method="POST"> 
        <select name="sort_by" class="drop-box"> 
         <option selected hidden <?php if(isset($_POST['sort_by']) && $_POST['sort_by'] == 'option') echo 'selected="selected"'; ?> value="option">Sort by</option> 
         <option <?php if(isset($_POST['sort_by']) && $_POST['sort_by'] == 'title') echo 'selected="selected"'; ?> value="title">Title</option> 
         <option <?php if(isset($_POST['sort_by']) && $_POST['sort_by'] == 'year') echo 'selected="selected"'; ?> value="year">Year</option> 
         <option <?php if(isset($_POST['sort_by']) && $_POST['sort_by'] == 'rating') echo 'selected="selected"'; ?> value="rating">Rating</option> 
        </select> 
        </div> 
       <form> 

這是代碼,我有它返回按流派排列的電影:

<?php 
if (isset($_REQUEST["g"])) { 
    $g = $_REQUEST["g"]; 
} else { 
    $g=0;} 

$q_sortg = "SELECT id_movie, title, image, plot, rating, id_genre, genre 
     FROM movie_genre AS mg 
     INNER JOIN movie AS m ON mg.movie_id_movie = m.id_movie 
     INNER JOIN genre AS g ON mg.genre_id_genre = g.id_genre 
     WHERE id_genre = '$g'"; 
$r_sortg = mysqli_query($dbc, $q_sortg); 

$i=0; 
echo '<div class="row row-eq-height">'; 

while ($row_sortg = mysqli_fetch_array($r_sortg)) { 

if($row_sortg['id_genre'] == $g) { 

    echo '<div class="col-sm-3 col-lg-3 col-md-3 column">'; 

       echo '<div class="thumbnail movie-box">'; 
        echo '<a href="movies_info.php?m='.$row_sortg['id_movie'].'"><img src="data:image/jpg;base64,'.base64_encode($row_sortg['image']).'" width="250px" height="300px" /></a>'; 
         echo '<div class="caption">'; 
          echo "<h4 class=\"title-subs\"><a href='movies_info.php?m=".$row_sortg['id_movie']."'>".$row_sortg['title']."</a></h4>"; 
          echo "<p class=\"title-subs\">".$row_sortg['plot']."</p>"; 
         echo "</div>"; 
         echo '<div class="ratings align-center">'; 
          echo '<p>'; 
           $ratings = $row_sortg['rating']; 

           $rates = array('$row_sortg' => $ratings); 

           foreach ($rates as $r => $value) { 
            if($value <= 1.0){ 
             echo '<p>'.$value.'</p>'; 
             echo '<i class="fa fa-star-half-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             } 
            else if($value <= 2.0){ 
             echo '<p>'.$value.'</p>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             } 
            else if($value <= 3.0){ 
             echo '<p>'.$value.'</p>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-half-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             } 
            else if($value <= 4.0){ 
             echo '<p>'.$value.'</p>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             } 
            else if($value <= 5.0){ 
             echo '<p>'.$value.'</p>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-half-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             } 
            else if($value <= 6.0){ 
             echo '<p>'.$value.'</p>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             } 
            else if($value <= 7.0){ 
             echo '<p>'.$value.'</p>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-half-o" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             } 
            else if($value <= 8.0){ 
             echo '<p>'.$value.'</p>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-o" aria-hidden="true"></i>'; 
             } 
            else if($value <= 9.0){ 
             echo '<p>'.$value.'</p>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star-half-o" aria-hidden="true"></i>'; 
             } 
            else if($value <= 10.0){ 
             echo '<p>'.$value.'</p>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             echo '<i class="fa fa-star" aria-hidden="true"></i>'; 
             } 
           }//fecha o foreach 
          echo '</p>'; 
         echo '</div>'; 
       echo "</div>"; 
      echo "</div>"; 


     $i++; 
     if ($i%4 == 0){ 
      echo '</div><div class="row row-eq-height">'; 
     } //fecha o if 

    } //fecha o While 
} 

?> 

這裏的鏈接到當前網站: http://www.zoomlab.pt/2016-web2/pub/grupo4/index.php

在顯示其可能沒有問題排序的第一頁。 問題在於當您點擊左列中的一個流派時。它們會按類型排序,然後我無法通過工作獲得的那種...

我最初嘗試使用引導下拉但它使用<li><a>代替<select><option>,所以我不知道是否有可能。

在此先感謝您的幫助。

回答

0

看起來您只需要在用戶更改排序選項後重新提交表單?如果是這樣,你需要使用JavaScript您<select>添加onchange事件,這將重新提交表單:

<script> 
window.addEventListener('DOMContentLoaded', function() { 
    var form = document.querySelector('form.sortby_form'), 
     select = form.querySelector('select[name="sort_by"]'); 

    select.addEventListener('change', function() { 
     form.submit(); 
    }); 
}); 
</script> 

此外,如果這是一個生產網站,你真的不應該使用原始用戶作爲SQL查詢的一部分輸入。參見:http://php.net/manual/en/mysqli-stmt.bind-param.php