php排序mysql表

时间:2012-02-06 16:40:09

标签: php mysql

我想通过点击标题对表格进行排序。点击它后,表格按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反复对表进行排序)。

4 个答案:

答案 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";
}
}