Php 使用下拉列表中的选定值而不使用表单进行排序

Php 使用下拉列表中的选定值而不使用表单进行排序,php,html,mysql,ajax,Php,Html,Mysql,Ajax,搜索了许多选项,找到了一些简单的解决方案,我可以对结果进行排序,但没有找到任何结果。 我想按所选下拉值对显示的结果进行排序。我不想用“形式”。我想用另一种方式来排序 <div class="col-lg-2"> <label class="margin-bottom:25px;" style="margin-left:75px;"> Sort by: <label> </div> <div class="col-lg-2"> &

搜索了许多选项,找到了一些简单的解决方案,我可以对结果进行排序,但没有找到任何结果。 我想按所选下拉值对显示的结果进行排序。我不想用“形式”。我想用另一种方式来排序

<div class="col-lg-2">
<label class="margin-bottom:25px;" style="margin-left:75px;"> Sort by: <label>
</div>
<div class="col-lg-2">
    <select class="form-control" id="sortby" name="sortby">
        <option selected value="ID">ID</option>
        <option value="Name">Name</option>
        <option value="Source">Source</option>
        <option value="Location">Location</option>
    </select>
</div>
到目前为止,我们已经尝试过这样做,但似乎有些地方出了问题

if($_POST['sortby']=="ID")
{
 $sql = " SELECT candidate.cand_number,candidate.cand_fname,candidate.cand_source,candidate_contact.cand_location FROM candidate ".$join.' where '.$condition." order by candidate.cand_number asc";
}

if($_POST['sortby']=="Name")
{
 $sql = " SELECT candidate.cand_number,candidate.cand_fname,candidate.cand_source,candidate_contact.cand_location FROM candidate ".$join.' where '.$condition." order by candidate.cand_fname asc";
}

if($_POST['sortby']=="Source")
{
 $sql = " SELECT candidate.cand_number,candidate.cand_fname,candidate.cand_source,candidate_contact.cand_source FROM candidate ".$join.' where '.$condition." order by candidate.cand_source asc";
}

if($_POST['sortby']=="Location")
{
 $sql = " SELECT candidate.cand_number,candidate.cand_fname,candidate.cand_source,candidate_contact.cand_source FROM candidate_contact ".$join.' where '.$condition." order by candidate.cand_location asc";
}
asc-用于按升序排序的Its

我的jquery/ajax脚本-

<script>
        $(document).ready(function(){
            // Each time you change your sort list, send AJAX request
            $("#sortby").change(function(){
                $.ajax({
                    method: "POST",
                    url: "viewcandidate.php",
                    data: { sortby:$("#sortby").val() }
                })
                // Copy the AJAX response in the table
                .done(function( msg ) {
                    $("#list").html(msg);
                });
            });
        });
    </script>
    //even tried with $(window).load(function){.....but no result.

$(文档).ready(函数(){
//每次更改排序列表时,发送AJAX请求
$(“#sortby”).change(函数(){
$.ajax({
方法:“张贴”,
url:“viewcandidate.php”,
数据:{sortby:$(“#sortby”).val()}
})
//将AJAX响应复制到表中
.done(函数(msg){
$(“#列表”).html(msg);
});
});
});
//甚至尝试使用$(window).load(函数){….但没有结果。

有什么不对,因为这对我不起作用?我不想使用表单。建议我一些简单的解决方案。

尝试在订单之前添加一个空格

$sql = " SELECT candidate.cand_number,candidate.cand_fname,candidate.cand_source 
FROM candidate ".$join.' where '.$condition." order by candidate.cand_number" ;

您的下拉列表如下所示:

<select class="form-control" id="sortby" name="sortby">
    <option selected value="ID">ID</option>
    <option value="Relevance">Name</option>
    <option value="Name">Source</option>
</select>

首先这里有点不对劲

<select class="form-control" id="sortby" name="sortby">
    <option selected value="ID">ID</option>
    <option value="Relevance">Name</option><!-- Value ???-->
    <option value="Name">Source</option><!-- Value ???-->
</select>

身份证件
名称
来源
就像

<select class="form-control" id="sortby" name="sortby">
    <option selected value="ID">ID</option>
    <option value="Name">Name</option>
    <option value="Source">Source</option>
</select>

身份证件
名称
来源

当你比较像$\u POST['sortby']==“Name”和$\u POST['sortby']==“Source”

@CodeSniper..试着检查一些空格。我相信你会得到解决方案。

我举了一个小例子,向你展示如何使用jQuery动态地重新加载数据。当然,你必须根据自己的情况调整它

对于本例,我使用的是localhost,数据库为'test',表名为'candidate',有三列:ID、Name和Source

有两个文件:index.php和request.php(在同一文件夹中)

index.php文件:

<?php
    // Database connection
    $db = mysqli_connect('localhost', 'root', '', 'test');
    // First request, on load
    $sql = "SELECT ID, Name, Source FROM candidate";
    $exe = $db->query($sql);
?>
<html>
    <head>
        <!-- Including jQuery -->
        <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
        <script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
    </head>
    <body>
        <div>
            <!-- Generate table on load -->
            <table border="1">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Name</th>
                        <th>Source</th>
                    </tr>
                </thead>
                <tbody id="list">
                    <?php
                        while($row = mysqli_fetch_assoc($exe)) {
                            echo "
                                <tr>
                                    <td>".$row['ID']."</td>
                                    <td>".$row['Name']."</td>
                                    <td>".$row['Source']."</td>
                                </tr>";
                        }
                    ?>
                </tbody>
            </table>
            Sort by :
            <select class="form-control" id="sortby" name="sortby">
                <option selected value="ID">ID</option>
                <option value="Name">Name</option>
                <option value="Source">Source</option>
            </select>
        </div>
        <script>
            $(document).ready(function(){
                // Each time you change your sort list, send AJAX request
                $("#sortby").change(function(){
                    $.ajax({
                        method: "POST",
                        url: "request.php",
                        data: { sortby:$("#sortby").val() }
                    })
                    // Copy the AJAX response in the table
                    .done(function( msg ) {
                        $("#list").html(msg);
                    });
                });
            });
        </script>
    </body>
</html>
<?php

$db = mysqli_connect('localhost', 'root', '', 'test');

if(isset($_POST['sortby'])) {
    if($_POST['sortby'] == "ID") {
        $sql = "SELECT ID, Name, Source FROM candidate ORDER BY ID";
    } else if($_POST['sortby'] == "Name") {
        $sql = "SELECT ID, Name, Source FROM candidate ORDER BY Name";
    } else if($_POST['sortby'] == "Source") {
        $sql = "SELECT ID, Name, Source FROM candidate ORDER BY Source";
    }
} else {
    $sql = "SELECT ID, Name, Source FROM candidate";
}

$exe = $db->query($sql);

while($row = mysqli_fetch_assoc($exe)) {
    echo "
        <tr>
            <td>".$row['ID']."</td>
            <td>".$row['Name']."</td>
            <td>".$row['Source']."</td>
        </tr>";
}

?>

身份证件
名称
来源
排序方式:
身份证件
名称
来源
$(文档).ready(函数(){
//每次更改排序列表时,发送AJAX请求
$(“#sortby”).change(函数(){
$.ajax({
方法:“张贴”,
url:“request.php”,
数据:{sortby:$(“#sortby”).val()}
})
//将AJAX响应复制到表中
.done(函数(msg){
$(“#列表”).html(msg);
});
});
});
request.php文件:

<?php
    // Database connection
    $db = mysqli_connect('localhost', 'root', '', 'test');
    // First request, on load
    $sql = "SELECT ID, Name, Source FROM candidate";
    $exe = $db->query($sql);
?>
<html>
    <head>
        <!-- Including jQuery -->
        <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
        <script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
    </head>
    <body>
        <div>
            <!-- Generate table on load -->
            <table border="1">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Name</th>
                        <th>Source</th>
                    </tr>
                </thead>
                <tbody id="list">
                    <?php
                        while($row = mysqli_fetch_assoc($exe)) {
                            echo "
                                <tr>
                                    <td>".$row['ID']."</td>
                                    <td>".$row['Name']."</td>
                                    <td>".$row['Source']."</td>
                                </tr>";
                        }
                    ?>
                </tbody>
            </table>
            Sort by :
            <select class="form-control" id="sortby" name="sortby">
                <option selected value="ID">ID</option>
                <option value="Name">Name</option>
                <option value="Source">Source</option>
            </select>
        </div>
        <script>
            $(document).ready(function(){
                // Each time you change your sort list, send AJAX request
                $("#sortby").change(function(){
                    $.ajax({
                        method: "POST",
                        url: "request.php",
                        data: { sortby:$("#sortby").val() }
                    })
                    // Copy the AJAX response in the table
                    .done(function( msg ) {
                        $("#list").html(msg);
                    });
                });
            });
        </script>
    </body>
</html>
<?php

$db = mysqli_connect('localhost', 'root', '', 'test');

if(isset($_POST['sortby'])) {
    if($_POST['sortby'] == "ID") {
        $sql = "SELECT ID, Name, Source FROM candidate ORDER BY ID";
    } else if($_POST['sortby'] == "Name") {
        $sql = "SELECT ID, Name, Source FROM candidate ORDER BY Name";
    } else if($_POST['sortby'] == "Source") {
        $sql = "SELECT ID, Name, Source FROM candidate ORDER BY Source";
    }
} else {
    $sql = "SELECT ID, Name, Source FROM candidate";
}

$exe = $db->query($sql);

while($row = mysqli_fetch_assoc($exe)) {
    echo "
        <tr>
            <td>".$row['ID']."</td>
            <td>".$row['Name']."</td>
            <td>".$row['Source']."</td>
        </tr>";
}

?>

演示:


下载文件:

您可以使用ajaxthis@saty.can你用一些骨架或代码来解释。非常感谢我!“有点不对劲”>有什么错误吗?你能再描述一下你看到的吗?@Cr3aHal0…我的第一个sql查询成功了,也就是说对我来说它成功了…我只想要解决方案或一些关于我的订单的建议,如果我已经使用了条件,请稍后再使用。谢谢。首先,如果
$condition
$query
来自用户输入(即使它是下拉列表中的值,用户仍然可以发送他们喜欢的任何帖子值)。此外,您的HTML
名称源代码
中似乎有错误,而您的PHP将
$\u POST['sortby']
查找为“ID”、“Name”或“Source”@user3419778…谢谢你。我做了更正。但它不起作用。@jpintor..我做了上面的以及你的更正..但没有成功。@maximettey..我按照你说的做了..但没有结果。@CodeSniper是你发布的下拉列表(使用AJAX或不使用AJAX)要刷新您的列表?@MaimeMettey..下拉菜单用于对搜索结果后显示的内容进行排序..例如:如果我按“名称”排序-内容应该按字母顺序排列。我没有使用AJAX或Jquery。你得到结果了吗?看,我已经对我的文章做了一些编辑。现在给我建议一些解决方案。我想我在AJAX/Jquery代码方面出了问题。@CodeSniper你需要有一个单独的PHP页面来处理AJAX请求,就像我在我的示例中所做的那样:你有e一个主页面上有HTML和jQuery代码,一个PHP页面上执行SQL请求并在主页面上打印/回显所需的结果。然后,打印的结果将插入到您在此处指定的块中:
$(“#list”).HTML(msg)
。它可以是
$(“#yourHtmlID”)
,其中
yourHtmlId
是要重新加载的HTML块的id属性。我将在几个小时后(下班后)尝试将我的示例联机为了向您展示它是如何制作的。我将我的示例放在这里:这是您想要做的吗?我制作了一个包含两个PHP文件和一个SQL文件的ZIP存档,其中包含我的
候选者
表: