台灣最大程式設計社群網站
線上人數
1381
 
會員總數:245969
討論主題:189549
歡迎您免費加入會員
討論區列表 >> PHP >> PHP的分頁及置頂問題
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
PHP的分頁及置頂問題
價值 : 50 QP  點閱數:1882 回應數:18
樓主

Yall
門外漢
0 4
68 4
發送站內信

小的目前用一個PHP做了一個BBS,並與MySQL連動,
基本上都做完了,但是有一個我就是想不到該怎麼做。
就是:當一個已經發表的文章受到其他人回復時,文章會置頂
我試過用時間排序

這樣有做到跳搜索的方式,但是我遇到的問題是
用時間排序時,因為舊有文章遭到置頂,所以會導致ID不是倒序排列的情況。
舉例來說
第一頁的資料依照上方排列(ID)是
2
9
8
7
6...
但是換到第二頁就會變成
2
5
4
3..
原因是因為我使用了where id<=$offs的關係,請問我該怎麼改寫,才能使他排序是依照時間並且又能跳過搜索(讓資料庫不會搜索太多而拖慢效能)?
像這樣:
第一頁:
2
9
8
7
6..
第二頁:
5
4
3
2..
我想了老半天就是找不到解法!

搜尋相關Tags的文章: [ 分頁及置頂問題 ] ,
本篇文章發表於2016-11-14 20:16
16樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
DATETIME也是可以比較。但條件是你也要給對應的值才行

正常的datetime的格式是 YYYY/MM/DD HH:ii:ss

所以你只要在sql條件式下。利用date或是其它東西做判斷條件就行。
本篇文章回覆於2016-11-21 11:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
17樓
回應

可樂快跑
檢舉此回應
我覺得你要了解一下什麼是數值比較什麼是字串比較
舉個例子
1234 > 234

"1234" > "234"
這二個就是完全不同的結果。

數值比較就是按帳面上數值的大小來比較。
但是字串比較是「一個一個字元位置」來比較的。

前面的1234 > 234就不用說了,當然是正確的。

但是"1234" > "234"就是錯的
(註:在自動轉型的語言,這個結果不一定是會錯的,所以無論如何,要比較前一定要給予正確的型態)

他會先比較"1234"的"1"和"234"的"2",所以1 > 2,是錯的。
(我是有點忘了他正確比較的好像是ASCII還是unicode的內碼值,反正會有一個做為比較的值來比較字元)

所以你要注意的是你比較的東西是不是有符合正確的相對應的格式。
而不是胡亂的去比較內容。
本篇文章回覆於2016-11-21 12:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
18樓
不錯的參考

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
其實字串的比較,我常用比較白話的說法。
如果字串為純數值的話。
字串比較就是右補0來看。
數值比較就是左補0來看。

可能這樣說不清楚。用實例來說明

兩個字串值。
a = "123" b = "23"
依照我上面的說法。比較時,需先將位數補滿。
字串補0則是右補0

所以會變成
a = 123 b= 230

所以b>a

至於數值則是左補0
也就是
a = 123 b=023

所以a>b

當然啦~~~這是我用比較通俗的的說法。真的的比較方式其實並不一樣。

字串來講其實會從左至右的字元比較。如相等再看下一個字元。

位數不同時,也就是當a比對第三位,b無第三位的情況。b值比較則是依空值做為比較。(也就是ascii = 00)
只是這樣的說法很多人還是會搞不明白。

所以我都是用最簡單的上面說明。左補0跟右補0的說法。一目了然。



本篇文章回覆於2016-11-21 17:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.