2011-10-03 25 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