2016-05-31 90 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