好吧,我意識到有很多方法可以完成評論。我選擇的方式是這樣設置的一張桌子。嵌套評論系統mysql訂購
id comment date time orig_comment
1 Hello 03-01-2013 10:10:10 0
2 Hello 03-02-2013 10:10:10 0
3 Hello 03-03-2013 10:10:10 1
因此,要清除有第一級,然後用戶可以回覆該評論(這是唯一的兩個級別)。我給每個唯一遞增的id,並指定orig_comment。如果orig_comment是「0」,那麼它是基本級別的評論,如果它是嵌套的,則orig_comment將是原始評論的ID。夠簡單。所以我當然需要評論。以下是我現在如何做到這一點。
mysql_query("SELECT Comments.* FROM Comments ORDER BY
IF(Comments.orig_comment = 0, Comments.id, Comments.orig_comment)DESC,Comments.id ASC")
此作品獲得第一檢索(這是我想要什麼)的最新評論,但是當涉及到嵌套評論它的最古老的預定他們第一個(不是我所需要)。我需要訂購從最新到最舊的主要評論,任何回覆也應從最新到最舊排序。我試圖沒有成功修改我的查詢來做到這一點,但無法弄清楚。
作爲一個側面的問題,從系統角度來看,這個系統是否有意義?你是否認爲以這種方式排列嵌套評論會令人困惑?我想這樣做是因爲我的回覆按鈕位於基本評論上,一旦點擊就在基本評論下面添加一個textarea。我只是認爲,如果它看起來好像比基本評論低,而不是一直拋到嵌套答覆的底部,那麼看到你的帖子會更容易。對此有何想法?
也想解決另一個問題,我用它來頁面評論。我可以用一個簡單的限制只得到評論的x個這樣的:
mysql_query("SELECT Comments.* FROM Comments ORDER BY
IF(Comments.orig_comment = 0, Comments.id, Comments.orig_comment)DESC,Comments.id ASC
LIMIT 0, $page")
這種方法顯然不注重回覆的數量,每個主要的意見。所以我最終要切斷對最後主要評論的回覆。我只想在orig_comment ='0'時強制執行限制,這樣無論評論有多少個回覆,它都會顯示所有這些回覆。我試過
mysql_query("SELECT Comments.* FROM Comments ORDER BY
IF(Comments.orig_comment = 0, Comments.id, Comments.orig_comment)DESC,Comments.id ASC
LIMIT 0, SELECT COUNT(id)FROM Comments WHERE orig_comment='0' LIMIT $page")
雖然這會引發語法錯誤。
它不應該是Comments.id DESC如果你想與最新的第一個排序? IF不是說按基準降序排列,而是按origin_comment降序排列。你可以使用case語句代替:http:// stackoverflow。com/questions/3550942/can-you-add-if-statement-in-php-mysql-order-by – apelsinapa 2013-03-21 02:35:07
這樣做最終將最新的答覆放在最前面,沒有任何基本評論。我也試圖整合來自那篇文章的查詢,但是最後我在最前面得到了一個沒有基礎評論的回覆。 – dminicrick1 2013-03-21 02:50:04