查看完整版本: 「額外篩選條件」與「排序方式」詳解(基於Discuz)

rengo 2005-9-12 06:21

「額外篩選條件」與「排序方式」詳解(基於Discuz)

[b][size=4]注意:此文章為本章原創,嚴禁任何商業網站轉載,個人網站轉載必須註明出處和原文鏈接,謝謝合作。



前言

很多用戶對DiY-Page編輯器使用中出現的「額外篩選條件」與「排序方式」表示困惑不解,特著此文,以饗讀者。本文可能有錯漏之處,歡迎大家給本文留言,並指正。



在DiY-Page編輯器中,「額外篩選條件」與「排序方式」是兩個重要的項目,是DIYPAGE的DIY能力的主要體現。學會和精通這兩項參數,對於您熟練地使用DIYPAGE,發揮出DIYPAGE的威力,有著重要的意義。



預備知識

一、您應該瞭解SQL語句中的一些判斷字和關鍵字:

等於  =

不等於  !=  註:DIYPAGE中請不要使用<>的格式描述「不等於」

大於  >

小於  <

大於等於  >=

小於等於  <=

從小到大的順序  asc

從大到小的順序  desc



二、您應該對DISCUZ的部分重要的數據表結構有一個清楚的瞭解:

(原著:FreeDiscuz版主Freddy,在此表示感謝)

cdb_threads 表:論壇所有主題信息表。

各屬性組介紹

格式:字段名--字段屬性--字段介紹

tid--mediumint(8)--主題的ID

fid--smallint(6)--主題所在版塊的版塊ID

creditsrequire--smallint(6)--需設置多少積分才能瀏覽該主題

iconid--smallint(6)--主題圖標

author--char(15)--主題的會員名稱

authorid--mediumint(8)--主題的會員UID編號

subject--char(80)--主題的標題

dateline--int(10)--發表日期

lastpost--int(10)--最後發表日期

lastposter--char(15)--最後發表的會員名稱

views--mediumint(8)--人氣值(即瀏覽數)

replies--smallint(6)--回複數

displayorder--tinyint(1)--顯示順序

highlight--tinyint(1)--是否為高亮

digest--tinyint(1)--是否為精華貼 還有精華級別 1 2 3

poll--tinyint(1)--是否為投票貼

attachment--tinyint(1)--是否為有附件的主題

closed--mediumint(8)--主題是否關閉。事實上除了關閉以外,當主題被移動,並保留移動標記時,closed中會存放移動後的目標tid。即當>1時,為被移動,=1時為被關閉,=0時普通帖子



cdb_forums 表:論壇版塊信息表 

各屬性組介紹

格式:字段名--字段屬性--字段介紹

fid--smallint(6)--版塊的ID

fup--smallint(6)--所在上級版塊的ID

type--enum('group', 'forum', 'sub')--版塊的類型,即:group(分類)、forum(默認版塊)、sub(下級子版)

icon--varchar(50)--版塊圖標

name--varchar(255)--版塊名稱

description--varchar(255)--版塊簡介

status--tinyint(1)--是否在論壇上顯示

displayorder--tinyint(3)--各版塊顯示順序

moderator--varchar(255)--版主名單

styleid--smallint(6)--所用的風格ID

threads--mediumint(8)--共有多少主題的統計

posts--mediumint(8)--共有多少貼子的統計

lastpost--varchar(110)--最後發帖用戶名,發帖時間,標題這三個信息組成的字串

allowsmilies--tinyint(1)--是否允許使用表情\r

allowhtml--tinyint(1)--是否允許使用HTML

allowbbcode--tinyint(1)--是否允許使用Discuz!代碼

allowimgcode--tinyint(1)--是否允許使用IMG代碼

postcredits--tinyint(3)--發新貼加積分的數目

replycredits--tinyint(3)--回復加積分的數目

password--varchar(12)--論壇版塊的訪問密碼

viewperm--varchar(100)--瀏覽版塊許可\r

postperm--varchar(100)--發貼子許可\r

replyperm--varchar(100)--回復主題許可\r

getattachperm--varchar(100)--下載附件許可\r



瞭解完這些信息,您應該記住一些您感興趣的字段的名稱,以及他所代表的意思。



基礎概念

「額外篩選條件」 實際上是SQL語句中的Where Clause部分,即要求查詢的結果必須符合的條件。

額外篩選條件的格式是:字段名 判斷字 值(字符串,即非數字型,請加單引號)



「排序方式」實際上則是SQL語句中的Order Clause部分,即查詢結果的排序方法。

它通常由兩部分組成,即「排序字段」和「正序/倒序」,中間由空格隔開。



正文

第一節 貼子列表中的「額外篩選條件」與「排序方式」

本節請參照之前的cdb_threads表結構說明閱讀。\r



額外篩選條件篇

這裡,我們用實例進行教學:

1、要求顯示的貼子回復大於10條:

replies>10

2、要求顯示的貼子必須是精華貼:

digest>0

3、不能為投票貼

poll=0

4、只顯示用戶名為「Admin」的用戶發表的貼子

author='Admin'  注意:這裡有一個字符串值(即非數字值),要使用單引號括起來;DIYPAGE中請不要使用雙引號

5、顯示回復大於10條的精華貼

replies>10 and digest>0  注意:這裡用了一個「and」關鍵字。不同的條件可以任意組合,只要他們互相不矛盾,都可以用「 and 」來連接,就像英文一樣。

更多字段名,您可以參考前文的cdb_threads表結構說明。



排序方式篇

實例教學:

1、按最後回復時間排序

lastpost desc

2、按最後發表時間排序

dateline desc

3、按主題ID排序

tid asc

註:desc和asc是SQL語句的排序關鍵字,預備知識之已經講過。

更多的字段,您可以參考前文的cdb_threads表結構說明。



第二節 論壇列表中的「額外篩選條件」與「排序方式」

本節請參照之前的cdb_forums表結構說明閱讀。\r



額外篩選條件篇

實例:

1、只顯示有論壇圖標的論壇

icon!=''

2、只顯示指定ID的論壇(如只顯示ID為1、3、5的三個論壇)

fid=1 or fid=3 or fid=5  註:這裡的條件要用「 or 」連接,因為他們是互相矛盾,彼此無法共存的。用此示例的方法,您可以有效地控制首頁上的論壇列表顯示的內容,真正讓首頁的導航符合您的心意。

3、不顯示指定ID的論壇

fid!=1 and fid!=3 and fid!=5  註:這裡的條件要用「 and 」連接,因為他們是必須共存的。用此示例的方法,您可以有效地控制首頁上的論壇列表顯示的內容,隨心所欲地讓您不想顯示的論壇在首頁上消失。

4、顯示指定上級論壇ID(此處為5)的論壇

fup=5

好了,常用的我想就是這些,更多的東西,您還得參考之前的cdb_forums表結構說明。



排序方式篇

實例教學:

1、按論壇ID,順序排列(最common的方式)

fid asc

2、按論壇擁有的貼子數排列

posts desc

更多的東西,還是得說,請您參考之前的cdb_forums表結構說明。[/size][/b]
頁: [1]
查看完整版本: 「額外篩選條件」與「排序方式」詳解(基於Discuz)