我需要根据所选的选择选项更改 sql 的 ORDER 值 我有一个 action.php,我从数据库中获取值。我想放置一个排序选择选项,其中可以根据所选选项更改循环获取值的顺序。
action.php
if (isset($_POST["fetchValue"])) {
echo '
form name="sort" id="sort" action="" method="post">
<div class="form-group">
<label for="sort_item">Sort by: </label>
<select name="sort_item" id="sort_item" class="form-control">
<option value="age">Date of birth</option>
<option value="last_name">Last Name</option>
</select>
</div>
</form>';
$fieldNameMapping = array(
'age' => 'dob',
'last_name' => 'user_lastname');
$sql = "SELECT * FROM test_field_tb tf
INNER JOIN users u ON tf.user_id = u.user_id
WHERE tf.user_id = 5
ORDER BY '".$fieldNameMapping[$_POST['sort_item']]."' "; // need to change that value base on the selected option
$run_query = $conn->query($sql);
while ($row = $run_query->fetch(PDO::FETCH_ASSOC)) {
...
}
JQuery - js 文件
$(document).ready(function() {
$("#sort_item").change(function() {
//get the selected value
var selectedValue = this.value;
//make the ajax call
$.ajax({
url: 'action.php',
type: 'POST',
data: {sort_item : selectedValue},
success: function(data) {
//how to i change the sql value here
}
});
});
function getFetch(){
$.ajax({
url : "action.php",
method: "POST",
data : {fetchValue:1},
success : function(data){
$("#get_display").html(data);
}
})
}
});
显示.php
<div id="get_display"></div>
获取错误: 未定义索引:sort_display $fieldNameMapping[$_POST['sort_item']]
最佳答案
需要有条件地添加ORDER BY
$sql = 'SELECT * FROM test_field_tb tf
INNER JOIN users u ON tf.user_id = u.user_id
WHERE tf.user_id = 5 ';
if (!empty($_POST['sort_item']))
$sql .= "ORDER BY '".$fieldNameMapping[$_POST['sort_item']]."' ";
然后在 ajax 调用的 success
处理程序中,像这样填充框:
success: function(data) {
$('#get_display').html(data);
}
关于javascript - 如何使用 php 和 jquery 更改带有选择选项的 sql 顺序值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48437105/