如何按单击状态对表进行升序和降序排序?MYSQL/ColdFusion

如何按单击状态对表进行升序和降序排序?MYSQL/ColdFusion,mysql,coldfusion,html-table,click,Mysql,Coldfusion,Html Table,Click,我有一个表格,我可以点击标题,按不同的列对整个表格进行排序。 我想合并一些布尔状态,这样我就可以单击一次以按该列升序对表进行排序,然后再次单击以使其降序 这是我的密码: <th><A HREF="thispage.cfm?sorter=creationDate">Creation Date</A> </th> <cfif IsDefined("URL.sorter")> <cfquery datasource="Pad"

我有一个表格,我可以点击标题,按不同的列对整个表格进行排序。 我想合并一些布尔状态,这样我就可以单击一次以按该列升序对表进行排序,然后再次单击以使其降序

这是我的密码:

 <th><A HREF="thispage.cfm?sorter=creationDate">Creation Date</A> </th>

 <cfif IsDefined("URL.sorter")>

 <cfquery datasource="Pad"  name="One">
 select * from meeting
 ORDER BY #URL.sorter# DESC
 </cfquery>

<cfelse>
 <cfquery datasource="Pad" name="One">
select * from meeting
 ORDER BY contactName
 </cfquery>
</cfif>

我相信它可以通过使用cfset创建一个布尔变量来实现,然后在单击表头并在第一次查询中将一个变量状态分配给ASC,另一个变量状态分配给DESC时改变该变量状态。我只是不知道如何实现它。

如果您愿意,可以使用jQuery插件/javascript很好地实现它。见:

但是要用老式的方式来做,你需要在你的网页中添加网址的方向。 如果您只处理一个标题,您可以简单地执行以下操作:

<cfif structKeyExists(url, "sortOrder") and url.sortOrder eq "ASC">
    <url.sortOrder = "DESC"> 
<cfelse>
    <url.sortOrder = "ASC"> 
</cfif> 
<cfoutput>
    <A HREF="thispage.cfm?sorter=creationDate&sortOrder=#url.sortOrder#">Creation Date</A>
</cfoutput>
如果使用多个标题,还需要检查当前列的方向

<cfif (structKeyExists(url,"sorter") and url.sorter eq "{thisColumn}")>
  and (structKeyExists(url, "sortOrder") and url.sortOrder eq "ASC")>
    <url.sortOrder = "DESC">
<cfelse>
    <url.sortOrder = "ASC">
</cfif>
你可能应该把它放进一个函数中,传递你正在检查的列的值,这样你就不会在每次检查之前一遍又一遍地做同样的事情,不要重复你自己

<A HREF="thispage.cfm?sorter=creationDate&sortOrder=#sortMe({thisColumn})#">{thisColumn}</A>
最后,将方向添加到查询中

<cfquery datasource="Pad"  name="One">
    select 
        columnName1
        , columnName2
        , columnName3
    from 
        meeting
    ORDER BY 
        #URL.sorter# <cfif structKeyExists(url,"sortOrder")>#url.sortOrder#</cfif>
 </cfquery>

我认为您最好使用javascript或jquery来实现这一点。事实上,看看cfgrid。它可能已经具有此功能。我不确定,因为我从未使用过它。ORDER BY URL.sorter这是一个sql注入风险。在sql查询中直接使用任何用户提供的输入之前,请始终验证该输入。