国外设计欣赏网站 - DOOOOR.com

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

[Drupal问题] 使用 tablesort_sql 要注意的问题

[复制链接]
发表于 1-14-2012 00:31 | 显示全部楼层 |阅读模式

如果你没用过tablesort_sql,那我就要解释下了,顾名思义,它是针对table结构的内容来排序的。

实际上,是和theme_table()函数配合使用的。

在使用它的时候,我们要了解以下问题:


1. 它最终实现的结果,实际上是给SQL语句加上 ORDER BY ... ,这样来实现所谓的排序。
正因为如此,你的原sql语句不能有 ORDER BY语句。


2. 因为SQL里只能使用一次 ORDER BY,所以每次排序只能按照某一字段来排序,不会叠加上次的排序选择条件,因此在规定默认排序方式时,也只能指定某一个字段啦,注意在规定默认排序时,排序方式要小写,如 “desc” 形式见后面的代码。


3. 如果不指定默认的排序,那么内容将按默认的查询顺序排序,那样是老的节点排上的,当然不可以。实际上我要列出的字段中没有创建时间,也没有与时间相关的可 排序的字段。因此,想了一个不知是否会被成为下策的方法:我在$head取出了nid,规定了它为默认排序方式,并且给它所在的th元素 class="hidden"属性。这样我就可以隐藏它了,并且也用它达到了排序目的。


示例代码:


01$head array(
02  array('data' => '号码'),
03  array('data' => '品牌'),
04  array('class' => 'sort''data' => '话费额''field' => 'field_spend_value'),
05  array('class' => 'sort''data' => '售价''field' => 'field_price_value'),
06  array('data' => '新旧'),
07  array('data' => '操作'),
08  array('class' => 'hidden''field' => 'nid''sort' => 'desc'),
09);
10$sql "SELECT n.title, n.nid, num.field_brand_value, num.field_spend_value, num.field_price_value, num.field_newold_value FROM {node} n INNER JOIN {content_type_num} num ON n.nid = num.nid WHERE n.uid = %d".tablesort_sql($head);


型动视觉摘自似水流云的博客,谢谢!




|2011-2026-版权声明|平台(网站)公约|DOOOOR 设计网 ( 吉ICP备2022003869号 )

GMT+8, 2-13-2025 00:48 , Processed in 3.011678 second(s), 92 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表