2011-10-03 5 views
0

나는 mysql 데이터베이스에서 게시물을 가져 오는 페이지 (index.php)가 있습니다. 게시물의 페이지가 매겨지며 페이지 당 5 개로 제한됩니다. 각 게시물에는 라디오 버튼 쌍 (예 : 싫어함)이 있습니다. 색인 페이지는 사용자가 확인란을 통해 좋아요/싫어하는 모든 게시물을 표시하거나 숨길 수도 있습니다.jQuery 숨기기 게시 및 다음 게시물 표시

아약스 또는 전혀 페이지를 새로 고침하고 싶지 않습니다. 내가 원하는 것은 이미 숨겨진 게시물로 목록의 맨 아래에 나타나는 다음 게시물입니다.

페이지 1 : 게시물 1 (l), 게시물 2 (d), 게시물 3 (d), 게시물 4 ​​(d = 좋아요/d = 싫어함/(NA), 포스트 9 (NA), 포스트 10 (NA)

사용자가 다음을 결정하면 모든 싫어하는 것을 숨기기 - 싫어하는 모든 게시물을 숨기 겠지만 지금 당장 얻은 결과는 페이지 1 : 게시물 1 (l), 게시물 4 ​​(l) 페이지 2 : 게시물 6 (NA), 게시물 7 (NA), 포스트 8 (l), 포스트 9 (NA), 포스트 10 (NA)

내가 원하는 것은 : 페이지 1 : 포스트 1 (l), 포스트 4 (l), 포스트 6 (NA), 포스트 7 (NA), 포스트 8 (I) 페이지 2 : 포스트 9 (NA), 포스트 10 (NA)

페이지 1에 나타나는 새로운 게시물은 페이드 인해야합니다. posts (1 & 4)는 그러한 효과가 없어야합니다 (두 div 사이의 div가 "사라짐"때문에 슬라이드 업을 제외하고).

제가 지금 알고 싶은 것은, 이것이 가능합니까? 그렇다면 어디에서 시작할 수 있습니까?

나는 더 많은 것을 배우기 때문에 코드로 업데이트 할 예정이지만, 지금은 올바른 방향으로 나를 가리켜 줄 사람이 필요하다. 구글이이 점에 대해 나를 돕지 않는다.

답변

0

사용자가 필터 설정을 변경할 때마다 AJAX 호출을 보내면 간단합니다. MySQL 쿼리에서 필터링을 수행하고 표시되어야하는 게시물의 전체 목록을 반환하십시오. 그렇다면 그것은 단지 새로운 것의 현재 게시물 인 replacing의 문제 일뿐입니다.

앞서 개선 된 방법은 이전에 본 게시물을 유지하는 것과 같이 필요하지만 DB 호출 횟수를 줄이기 위해 숨겨져 있습니다.하지만 방금 페이지를 시작하는 경우에는 신경 쓰지 않을 것입니다. . 비록 당신이 더 가까이 다가 왔을지라도 나는 신경 쓰는지 모른다. 상대적으로 작은 최적화를위한 꽤 복잡한 코드 다.

희망이 도움이됩니다.

편집 : 몇 가지 예를 들어 SQL -이 특정 예제는 페이지 당 10 개 게시물을 표시 가정, 당신이 좋아하는 게시물의 첫 페이지를 줄 것이다는 :

SELECT * FROM posts WHERE liked = 1 LIMIT 10 

그냥 다른 필터에 대한 WHERE 절을 조정할 , 페이지마다 다른 수의 게시물에 대한 LIMIT 절 (선호도가 사용자별로 다르지만 여기에 JOIN이 필요할 수도 있지만 포함하지 않았습니다).

은 그럼 당신은 jQuery를/AJAX를 사용하여, 현재 선택한 모든 게시물으로 게재 된 게시물 모든를 교체하십시오.

+0

그건 아무 이유없이 다소 복잡해 보입니다 ... 어떤 게시물이 실제로 숨겨져 있는지 파악하고 그 아래의 게시물로 대체 한 다음 그 페이지를 다음 페이지의 게시물로 대체해야합니다 ... ' 매우 실용적인 것처럼 보입니다. 나는이 사이트의 라인을 따라 뭔가를하고 싶습니다. http://www.win-free-stuff.ca/new-contests 아이디어는 페이지 당 10 개의 게시물을 표시하더라도, Post 1이 숨겨져 있다면 Post 11을 Page 1 앞으로 가져 오십시오. 따라서 5 개의 게시물이 좋아서 숨길 경우 11-14 게시물은 1 페이지로 이어져야합니다. – Sweepster

+0

@Jonathan - 실제로 그렇게 복잡하지는 않습니다. . 몇 가지 샘플 SQL을 추가했습니다. 필터링/계산이 이루어지는 유일한 곳입니다. DB에서 모든 작업을 수행하도록하면 최신 쿼리에서 반환 된 게시물 (현재)과 함께 현재 게재중인 게시물을 (모두) 대체하는 매우 간단한 JS 만 필요합니다. –

0

가장 쉬운 방법은 대부분의 필터링과 페이지 매김 클라이언트 측을 수행하는 것입니다.There's even a jQuery plugin for pagination이고 필터링은 $('.liked').hide()과 같이 간단합니다.

물론 클라이언트에 2 개 이상의 게시물을 반환해야합니다.

+0

나는이 사이트의 라인을 따라 무언가를 만들고 싶다 : http://www.win-free-stuff.ca/new-contests 아이디어는 만약 내가 페이지 당 10 개의 게시물을 표시한다고해도, 포스트 1이 숨겨져 있다면, 나는 포스트 11을 1 페이지 앞으로 가져 오십시오. 5 개의 포스트가 마음에 들면 숨기려고한다면 포스트 11-14는 1 페이지 앞으로 이어져야합니다. – Sweepster

0

그래서 좋아요/싫어요 또는 모두 표시/숨기기를 클릭 할 때 데이터베이스에 전화 할 때마다 중요한 결과를 반환하기를 원합니다. 프런트 엔드에서이 작업을 모두 수행하려는 경우 프런트 엔드가 아닌 백 엔드에서 ur 결과를 필터링합니다.

이렇게하면 프런트 엔드에서이 작업을 모두 수행하려는 경우 더 많은 게시물을 반환해야합니다. 어쩌면 5 또는 10을 입력 한 다음 페이지의 클래스 및 클릭 이벤트를 기반으로 올바른 게시물을 숨기고 표시하십시오.

+0

나는이 사이트 라인을 따라 뭔가를하고 싶습니다. /www.win-free-stuff.ca/new-contests 아이디어는 페이지 당 10 개의 게시물을 표시하더라도 포스트 1이 숨겨져 있다면 포스트 11이 페이지 1로 이어지기를 바랍니다. 11-14 호는 1면으로 이어져야합니다. – Sweepster