Php 使用下拉列表对电影进行排序

Php 使用下拉列表对电影进行排序,php,mysql,sorting,dropdown,Php,Mysql,Sorting,Dropdown,我是PHP新手,在使用带有下拉列表的排序方式时遇到了一些问题 我已经有了一个按类型分类的电影页面,在该页面中,我希望能够按标题、评级和年份进行排序,但我不知道如何进行排序 在索引页面中,我可以很容易地对电影进行排序,因为它们还没有按类型进行排序,所以我只需在查询中按内容进行排序,它就会返回我想要的内容 现在的问题是,我必须检查那一刻选择了哪种类型,并将其与我从下拉列表中选择的内容关联起来,我不知道如何做 我不知道这是否足够明确,但如果你有任何疑问,请问我 我有下面的代码,我是从一个现有的问题复制

我是PHP新手,在使用带有下拉列表的排序方式时遇到了一些问题

我已经有了一个按类型分类的电影页面,在该页面中,我希望能够按标题、评级和年份进行排序,但我不知道如何进行排序

在索引页面中,我可以很容易地对电影进行排序,因为它们还没有按类型进行排序,所以我只需在查询中按内容进行排序,它就会返回我想要的内容

现在的问题是,我必须检查那一刻选择了哪种类型,并将其与我从下拉列表中选择的内容关联起来,我不知道如何做

我不知道这是否足够明确,但如果你有任何疑问,请问我

我有下面的代码,我是从一个现有的问题复制过来的:

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

value=“title”>标题
value=“评级”>评级
这是我的代码,它返回按类型排序的电影:

    <?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
}

?>

以下是当前网站的链接:

在出现的第一页中,可以毫无问题地进行排序。 问题是当你点击左列中的一种类型时。它们看起来是按流派排序的,然后我就不能按流派排序了

我最初尝试使用bootstrap下拉列表,但它使用
  • 而不是
    ,所以我不知道这是否可行


    提前感谢您的帮助。

    一旦用户更改了排序选项,您似乎只需要重新提交表单?如果是这样,您需要使用JavaScript在
    上添加
    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>
    
    
    addEventListener('DOMContentLoaded',函数(){
    var form=document.querySelector('form.sortby_form'),
    select=form.querySelector('select[name=“sort_by”]”);
    select.addEventListener('change',function(){
    表单提交();
    });
    });
    

    此外,如果这是针对生产网站的,则不应将原始用户输入用作SQL查询的一部分。请参阅:

    一旦用户更改排序选项,您似乎只需要重新提交表单?如果是这样,您需要使用JavaScript在
    上添加
    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>
    
    
    addEventListener('DOMContentLoaded',函数(){
    var form=document.querySelector('form.sortby_form'),
    select=form.querySelector('select[name=“sort_by”]”);
    select.addEventListener('change',function(){
    表单提交();
    });
    });
    
    此外,如果这是针对生产网站的,则不应将原始用户输入用作SQL查询的一部分。见: