Php sort mysql table


Php sort mysql table

我想通过单击标题对表格进行排序。单击它后,表格将按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键一次又一次地对表进行排序)。

看起来您总是将$AZ_sorted设置为true。相反,您应该从请求中获取它,并仅在未设置时将其设置为true。详细信息取决于网站其余部分的结构。例如,如果您使用GET参数,则需要以下内容:

$AZ_sorted = $_GET['AZ_sorted'];

您在哪里将$AZ_sorted设置为true?我假设每次加载页面时都会执行此操作,并且每次都会将$AZ_sorted重置为true?

顺便说一句,全局变量从来都不是一个好主意。

因为当您重新加载页面时,$AZ_sorted会再次初始化为TRUE,所以它总是转到条件语句的其他部分。

我认为您不应该创建函数排序($column),因为它是php中的一个受限函数。

否则,您的setter似乎不起作用:

$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";
}
}