2011-10-03 67 views
0

我有一個頁面(index.php),從MySQL數據庫拉帖子。帖子分頁,每頁限5個。每篇文章都有一個單選按鈕對(喜歡/不喜歡)。索引頁面還允許用戶通過複選框顯示或隱藏所有喜歡/不喜歡的帖子。jQuery隱藏帖子和顯示下一篇文章

我不想重新加載頁面,所有的ajax或不。我想要的是下一個帖子排在列表的底部,因爲帖子已經隱藏了。我們假設每個頁面有5個帖子(l =喜歡/ d =不喜歡/ NA =未決定): 第1頁:帖子1(l),帖子2(d),帖子3(d),帖子4 (NA),後7(NA),後8(1),後9(NA),後10(NA)

如果用戶決定(1),後5(d) 如果用戶決定隱藏所有不喜歡的 - 所有不喜歡的帖子將隱藏,但我現在得到的結果是: 第2頁:Post 6(NA),Post 7(NA),Post 1(l),Post 4(l) 我想要的是: 第1頁:Post 1(l),Post 4(l),Post 6(Post)9 (NA),Post 7(NA),Post 8(l) Page 2:Post 9(NA),Post 10(NA)

此外,出現在第1頁的NEW帖子應該淡入,而舊的帖子(1 & 4)應該沒有這樣的效果(除了因爲它們之間的div已經「消失」而滑落)。

我想知道現在的問題是,這是可能的嗎?如果是這樣,我可以從哪裏開始?

我會更新代碼,因爲我瞭解更多,但現在我只需要有人指點我在正確的方向,因爲谷歌在這方面沒有幫助我。

回答

0

的死簡單的方式做這將是每一個用戶改變他們的過濾器設置時發出的AJAX電話。在你的MySQL查詢中進行篩選,並返回應該顯示的完整列表。然後,它只是一個完全replacing用新的當前職位的問題。

有改善這一點,喜歡養先前看到的帖子左右,但隱藏的人數減少的DB調用你需要的方式,但我絕對不與理會,如果你剛剛起步的頁面。即使當你接近完成時,我也不知道是否會有麻煩 - 對於相對較小的優化來說,這是相當複雜的代碼。

希望這會有所幫助!

編輯:一些示例SQL - 這個特殊的例子會給你所喜歡的帖子的第一頁,假設你顯示,每頁10帖:

SELECT * FROM posts WHERE liked = 1 LIMIT 10 

只是調整了不同的過濾器的WHERE子句,並針對不同的數字每頁職位的LIMIT子句(你可能需要在那裏過一個JOIN,如果喜歡是在每個用戶的基礎上,但我不包括)。

然後更換所有當前與選定文章的所有顯示的帖子,使用jQuery/AJAX。

+0

這似乎相當複雜,沒有理由......我必須找出哪些帖子實際上被隱藏,用他們下面的帖子取代他們,然後用下一個帖子的帖子替換這些帖子...... doesn' t似乎很實用.. 我想沿着這個網站的行:http://www.win-free-stuff.ca/new-contests這個想法是,即使我每頁顯示10篇文章,如果帖子1被隱藏,我希望帖子11繼續發送到第1頁。因此,如果有5帖被喜歡,我選擇隱藏它們,帖子11-14應該轉到第1頁。 – Sweepster

+0

@Jonathan - 這其實並不複雜。我添加了一些示例SQL - 這是篩選/計數將發生的唯一地方。如果讓數據庫完成所有這些工作,那麼只需要一些非常簡單的JS來替換當前顯示的所有帖子(全部)由最新查詢返回的帖子。 –

0

最簡單的方法可能是做大部分過濾和分頁客戶端。There's even a jQuery plugin for pagination,而過濾和$('.liked').hide()一樣簡單。

當然,您必須向客戶返回2個以上的帖子。

+0

我想沿着這個網站的一些東西:http://www.win-free-stuff.ca/new-contests這個想法是,即使我每頁顯示10篇文章,如果帖子1是隱藏的,我因此,如果有5個帖子是我喜歡的,我選擇隱藏他們,帖子11-14應該轉到第1頁。 – Sweepster

0

因此,每當您單擊「喜歡/不喜歡」或「顯示/隱藏全部」時,您都會撥打數據庫,您只需返回重要的結果......即,你在後端篩選你的結果,而不是前端

如果你想在前端完成這一切,你將不得不返回更多的帖子,然後兩個。也許5或10,然後隱藏和顯示正確的帖子基於類和點擊頁面上的事件。

+0

我想沿着這個網站的行:http:///www.win-free-stuff.ca/new-contests 這個想法是,即使我每頁顯示10篇文章,如果帖子1是隱藏的,我希望帖子11繼續轉到第1頁。所以如果5帖子喜歡,我選擇隱藏他們,帖子11-14應該繼續到第1頁。 – Sweepster