我想通过点击标题对表格进行排序。点击它后,表格按A-> Z排序。下次单击它时,应将其分类为Z-> A。我不知道出了什么问题。每次单击标题时,条件的第二部分都会被激活。
我删除了以前的代码并使用$ _SESSION粘贴了几乎所有的解决方案。
if (isset($_SESSION['sorted']))
{
if($_SESSION['sorted']== 1)
{
$result = mysql_query("SELECT filename, address, id FROM $tablename order by ".$column." DESC");
$_SESSION['sorted'] = 0;
echo "sorted = ". $_SESSION['sorted'];
}
else
{
$result = mysql_query("SELECT filename, address, id FROM $tablename order by ".$column);
$_SESSION['sorted'] = 1;
echo "sorted = ". $_SESSION['sorted'];
}
}
else
{
$result = mysql_query("SELECT filename, address, id FROM $tablename order by ".$column);
$_SESSION['sorted'] = 1;
echo "isnotset.sorted = ". $_SESSION['sorted'];
}
现在它正在运作,但有一个问题。当用户刷新页面时,$ _SESSION变量设置为另一个值,就像用户再次单击标题一样(按F5反复对表进行排序)。
答案 0 :(得分:0)
您似乎始终将$AZ_sorted
设置为true
。您应该从请求中获取它,并且只有在未设置时才将其设置为true
。详细信息取决于您网站的其余部分的结构。例如,如果您使用GET参数,则需要以下内容:
$AZ_sorted = $_GET['AZ_sorted'];
答案 1 :(得分:0)
您将$ AZ_sorted设置为true在哪里?我假设每次加载页面时都会执行此操作,并且每次都将$ AZ_sorted重置为true?
顺便说一句,全局变量从来都不是一个好主意。
答案 2 :(得分:0)
因为当你重新加载页面时,$ AZ_sorted再次初始化为TRUE,因此它总是转到条件语句的else部分。
答案 3 :(得分:0)
我认为你不应该创建函数sort($ column),因为它是php中的限制函数。
否则,您的二传手似乎无法正常工作:
$AZ_sorted = false;
尝试用0/1替换true / false,如下所示:
$AZ_sorted = 1;
function new_sort($column="") {
global $AZ_sorted;
if ($AZ_sorted == 0)
{
$result = mysql_query("SELECT filename, address, id FROM $tablename order by ".$column);
$AZ_sorted = 1;
echo "$AZ_sorted = true";
}
else
{
$result = mysql_query("SELECT filename, address, id FROM $tablename order by ".$column." DESC");
$AZ_sorted = 0;
echo "$AZ_sorted = false";
}
}