Hello stackoverflow成员。
我在这里有一点问题我有广告网站我想按最近日期,最高,最低价格对广告进行排序。在广告排序时效果很好,但如果再次点击分页链接,广告会默认排序为最近的广告。
<select name="Sort_Ads" id="Sort_Ads" onchange="document.getElementById('formName').submit()">
<option>Most Recent Ads</option>
<option>Price: High to Low</option>
<option>Price: Low to High</option>
</select>
if(isset($_POST['Sort_Ads']))
{
$sortit = $_POST['Sort_Ads'];
if($sortit == "Most Recent Ads") $sort = "ad_id DESC";
else if($sortit == "Price: Low to High") $sort = "ad_price ASC";
else if($sortit == "Price: High to Low") $sort = "ad_price DESC";
}
这个我的查询是"SELECT * FROM ads ORDER BY $sort $limit"
,效果很好。
唯一的问题是分页会在分页时恢复,因此我们只看到在第一页中排序的广告。
另一件事是,在页面刷新后,下拉菜单设置为第一个选项,但项目排序正常。请问如何在重新加载页面之前设置下拉值?因为如果用户在重新加载页面后点击从高到低排序,则会选择最近的广告选项,如果他/她想要按最近的广告对其进行排序,那么因为它已经被选中但项目按最高价格排序或以前选择过什么选项。
我认为可以用JavaScript完成,所以请我有足够的JavaScript技能,如果有人这样做,我会非常高兴。 先感谢您!
答案 0 :(得分:0)
您必须记住php会话中的排序顺序。 例如:
$_SESSION['sortorder'] = $sortit;
现在您已经记住了会话变量中的排序顺序,因此下一步将是:
if(isset($_POST['Sort_Ads']))
{
$sortit = $_POST['Sort_Ads'];
$_SESSION['sortorder'] = $sortit;
if($sortit == "Most Recent Ads") $sort = "ad_id DESC";
else if($sortit == "Price: Low to High") $sort = "ad_price ASC";
else if($sortit == "Price: High to Low") $sort = "ad_price DESC";
}
elseif(isset($_SESSION['sortorder']))
{
$sortit = $_SESSION['sortorder'];
if($sortit == "Most Recent Ads") $sort = "ad_id DESC";
else if($sortit == "Price: Low to High") $sort = "ad_price ASC";
else if($sortit == "Price: High to Low") $sort = "ad_price DESC";
}
<强> 强>
unset($_SESSION['variableName']);
删除所有会话变量:
session_destroy();
现在取决于您在什么条件下要取消设置会话变量。