我想允许网站用户更改现有查询返回的结果的排序顺序。 该查询目前是
$searchList = 'select distinct pa.products_id, pd.products_name,
p.products_model
FROM ' . TABLE_PRODUCTS_ATTRIBUTES . ' pa
left join ' . TABLE_PRODUCTS_DESCRIPTION . ' pd on (pa.products_id = pd.products_id)
left join ' . TABLE_PRODUCTS . ' p on (pa.products_id = p.products_id)
WHERE pd.language_id = ' . $language_id . '
order by products_model';
我已添加以下代码以生成下拉列表
<select id = "SortBy">
<option value ="">Please Choose<br>
<option value ="products_model;">Model (asc)<br>
<option value ="products_model DESC;">Model (desc)<br>
<option value ="products_name;">Name (asc)<br>
<option value ="products_name DESC;">Name (desc)<br>
<option value ="products_id;">Product ID (asc)<br>
<option value ="products_id DESC;">Product ID (desc)
</select>
并将查询更新为
$searchList = 'select distinct pa.products_id, pd.products_name,
p.products_model
FROM ' . TABLE_PRODUCTS_ATTRIBUTES . ' pa
left join ' . TABLE_PRODUCTS_DESCRIPTION . ' pd on (pa.products_id = pd.products_id)
left join ' . TABLE_PRODUCTS . ' p on (pa.products_id = p.products_id)
WHERE pd.language_id = ' . $language_id . '
order by ".mysql_real_escape_string($sort)."';
在选择选项之后和sql查询之前我已添加
$sort=$_POST["SortBy"]
我认为应该包含一旦提交后做出的选择。
这是我有点卡住的地方。我希望用户能够从下拉列表中选择他们的选项并让它自动提交并存储选项,以便后面的查询使用他们的选择,但我不知道如何执行此操作。我假设某种类型的jQuery,但说实话,我在这方面的编码时已经迷失了。
根据Jeff的评论,我已将选择列表更改为此
<select id = "SortBy" name="SortBy>
<option value ="">Please Choose<br>
<option value ="model+">Model (asc)<br>
<option value ="model-">Model (desc)<br>
<option value ="name+">Name (asc)<br>
<option value ="name-">Name (desc)<br>
<option value ="prodid+">Product ID (asc)<br>
<option value ="prodid-">Product ID (desc)
</select>
并添加以下代码
switch ($_SESSION ['sba_sort_order']) {
case 'model+' :
$order_by = ' products_model; ';
break;
case 'model-' :
$order_by = ' products_model DESC; ';
break;
case 'name+' :
$order_by = ' products_name; ';
break;
case 'name-' :
$order_by = ' products_name DESC; ';
break;
case 'prodid+' :
$order_by = ' products_id; ';
break;
case 'prodid-' :
$order_by = ' products_id DESC; ';
break;
仍然失去了如何让它自动触发并将sql查询的结果存储在选择下拉列表中。
答案 0 :(得分:-1)
首先,如果你想要某种“自动提交”,你需要处理onChange事件,所以你的选择可能如下所示:
<select id = "SortBy" name="SortBy" onchange="submitForm()">
jQuery样式
$("#SortBy" ).change(function() {
//submit the form
});
当然,各种各样的工具包,比如Dojo,jQuery和其他(你提到过jQuery - IMO总是很好用的,至少对于跨浏览器的支持)会帮助你解决这个问题。
另外,请考虑如何将数据发布到服务器:异步或非异步。
查看MVC并尝试以这种方式实现它。创建一个将处理请求的控制器(它也可以验证它,有些人更喜欢在模型级别上验证),创建一个模型,如果你想要它保持持久性并准备一个视图与用户交互,它将保存所选择的选项。它可能只是“你的选择得到了成功的保存”,但这实际上取决于你的实际需要。