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存档,其中包含我的候选者
表: