2016-04-14 75 views
1

我有一個職位DB:如何通過熱/升帖訂購

post_id(int(7)) user_id(int(7)) post_txt(text) post_time(varchar(30)) likes_count(int(10)) 

(該post_time是這個樣子「2016年5月4日17:41」)

我想以「熱門帖子」爲例「likes_count/post_time」。

我該怎麼辦呢?

這是我要做的事現在:

$que_post=mysql_query("select * from user_post order by post_id desc"); 

PS。我知道這是不是你喜歡的保存一般,但我做的目的

編輯-示例數據:

97||25||Hello world||8-4-2016 14:19||19 

的算法我想用的是時間/喜歡。我知道它的錯誤算法,但我只是想了解基礎知識。 我想知道,如果你知道該

+5

提供:(1)樣本數據; (2)預期結果;和(3)您用於「熱門帖子」的規則。 –

+0

通過「likes_count/post_time」你是否字面意思是likes_count除以發佈時間?如果是這樣,那看起來就像是一個糟糕的算法,因爲這意味着新的內容會變得不那麼熱,而不是更熱。 – Chris

+1

不要使用'mysql_ *'它已被刪除,它將不再工作,使用'PDO' [link](http://php.net/manual/en/book.pdo.php)或'mysqli' [鏈接](http://php.net/manual/en/book.mysqli.php)。 – Tom

回答

1

您應更改爲DATETIMEpost_time場的類型好的算法(讀manual)。 您的所有行都必須通過腳本轉換爲格式YYYY-MM-DD HH:MM:SS。當你這樣做時,一切都會奏效。

您的問題似乎是按字母排序的原因。例如:01.01.2016由於文本少於31.01.1999。

+0

我得到了SQL已經建立,但我會改變它。讓我們假設它的DATATIME,我現在怎麼做? –

+0

您可以添加字段'new_post_time',並使用'STR_TO_DATE('8-4-2016 14:19','%m-%d-%Y%H:%i')進行更新 - 將日期糾正格式。 – Andrewus

0

假設您可以將post_time列轉換爲使用日期類型,您希望查找它與現在之間的秒數,例如,

Order By like_count/(unix_timestamp(now()) - unix_timestamp(post_time)) Desc; 

如果更改列類型不是一個選項,你可以將其轉換上即時使用STR_TO_DATE功能,但這樣做可能是相當緩慢的操作。