我正在寻找一种方法来创建一个过滤器(选择下拉菜单),根据价格选择我的产品。
我知道使用这样的查询完全可以:
SELECT * FROM products ORDER BY price ASC
SELECT * FROM products ORDER BY price DESC
但问题是我不想将GETS传递给url来选择查询。
是否可以执行jquery命令来填充结果?
这是我的选择:
<select name="filter">
<option value="lowHigh">Price: low - High</option>
<option value="highLow">Price: High - Low</option>
</select>
提前致谢。
答案 0 :(得分:1)
如果我理解正确,您需要在不使用get参数的情况下下拉更改时在表格或页面中的某处填充数据。
如果那样你需要一些叫做 ajax 的东西。由于您提到了 JQuery ,因此jquery中内置了 ajax 功能。
$.ajax({
type: 'post',
url: URL_TO_YOUR_PHP_SCRIPT,
data: {
priceFilter: $('#filter').val()
},
dataType: 'json',
success: function(result) {
if (result) {
$.each(result, function(i, item) {
$('#your_table').append('<tr><td>'+item+'</td></tr>');
}
}
}
});
你的php脚本:
$pricefilter = $_POST['priceFilter']; //assuming you testing if its set
$pricefilter = $pricefilter == 'lowHigh' ? 'ASC' : 'DESC';
$query = "SELECT * FROM products ORDER BY price $pricefilter";
$data = $query->fetchAll();
//Or whatever you are using MySQL or PDO (please dont use MySQL_* functions)
echo json_encode($data);
答案 1 :(得分:1)
我认为没有理由不通过GET传递这种查询。 注入/ XSS仍然是不可能的,因为只有两个选项,用户无法添加他/她自己的信息。这正是eBay,亚马逊等网站所做的。只需像其他响应者建议的那样定义一个get变量。它非常安全,我推荐它。 如果您希望使用它来保存用户不刷新,请使用ajax - 默认情况下在jQuery中实现。
来自html:
<select id="filter">
<option value="lowHigh">Price: low - High</option>
<option value="highLow">Price: High - Low</option>
</select>
使用jQuery:
$("#filter").change(function() {
//Whatever ajax you wish to use
});
答案 2 :(得分:1)
由于我收到了你们的帮助,我成功地完成了我的脚本! (特别感谢FunKy)
看看这段javascript,我完全理解它现在的功能。谢谢你的教训!
这是最后的脚本:
$("#filter").change(function() {
//Whatever ajax you wish to use
location.href = URL + 'index.php?action=over-ons&filter=' + $("#filter option:selected").val();
});
答案 3 :(得分:0)
jQuery脚本仍然必须将某些内容传递给服务器端脚本以执行SELECT
。没有什么可以阻止你做以下事情:
<?php
$sort_dir = (isset($_GET['sort']) && $_GET['sort'] == 'desc') ? 'desc' : 'asc';
$sql = "SELECT * FROM products ORDER BY price $sort_dir";