2009-04-21 5 views
1

사용자가 페이지에서 하나씩 볼 수있는 사진을 제출하는 사이트에서 작업하고 있습니다.사진 앨범에 신선한 콘텐츠 보장

여러 사진의 작은 버전을 볼 수있는 또 다른 페이지가 있습니다.

사용자가 작은 사진을 클릭하면 큰 버전 페이지가 표시되며 '다음'을 누르면 해당 카테고리의 다른 사진으로 이동합니다.

오래된 사진보다 새로운 사진보다 우선합니다.

내 생각에 사용자가 다음을 클릭하면 가장 새로운 사진으로 이동하고 거기에서 다음으로 이동하면 모든 새 사진을 거꾸로 가져갑니다.

문제는 사용자가 한 장의 사진 페이지를 남기고 여러 개의 엄지 손가락 페이지로 이동 한 다음 다른 사진을 클릭하면 다음을 클릭 할 때 동일한 새 사진이 표시되기 시작한다는 것입니다.

사용자가 동일한 사진을 보지 않기를 바랍니다. 각 방문자마다 고유 한 쿠키를 넣은 다음 사용자가 사진을 찍을 때 방문 표에 기록하는 방법에 대해 생각했습니다. '다음'을 위해 db에서 새 사진을 선택할 때 이전에 사용자가 해당 사진을 방문하지 않았는지 확인합니다.

데이터베이스로드에 어떤 영향을 미칠지 (조숙하게) 걱정됩니다.

이 방법이나 다른 방법으로 가장 좋은 방법은 무엇입니까?

편집 :

이 충분히 명확 아주 짧은 버전이 없을 수도 있습니다 : 나는 사진을 통해 순환 할 때 중복 된 내용을 확인하지 싶습니다. 가급적 장시간에 걸쳐, 세션뿐만 아니라.

편집 2 :

그래서 이것은 내가 현재 무엇을 생각하고있는 무슨이다. 좋아 보이니? 나는 그것을 함께 던졌다. (문자 그대로 수리를 위해 5 분 안에 전원이 꺼 졌으니, 나는 내일 다시 와야한다. 당신이 세션을 사용하는 경우

alt text http://amything.googlepages.com/next.jpg

답변

0

, 당신은 사용자가 시청 한 가장 오래된 '새'사진이 부착 된 신분증을 추적 할 수 있습니다. 따라서 사용자가 다음을 클릭하면 최신 사진을 표시하고 ID를 사용자 세션에 저장합니다. 그들이 다음을 클릭 할 때마다, 당신이 가지고있는 가장 최근의 사진을 그들의 세션에서 가지고있는 사진의 ID보다 낮게줍니다. 이렇게하면 세션에서 항상 보지 못한 상대적으로 새로운 사진을 표시하기 시작하는 위치를 알 수 있습니다. 사진 기록은 중단 한 곳에서 계속 이동할 수 있습니다.

세션이 작동하기 위해 쿠키를 사용하기 때문에 세션이 등록 또는 로그인하지 않아도 쿠키를 지울 때까지 작동합니다.

사용자가 검색을 시작한 이후 제출되거나 업로드 된 새로운 사진은 고려하지 않습니다. 사용자가 보았던 각각의 개별 사진에 대한 기록을 저장하지 않으면, 그 수준의 기록을 시뮬레이션하는 방법을 찾는 것이 매우 어려울 것입니다.

편집 : 더이에 대한 생각

, 당신은뿐만 아니라 사용자가 시청 한 오래된 사진 ID를 저장하지만, 최신 수 있습니다.그런 식으로, 그들이 다음에 클릭 할 때마다 당신은 당신의 가장 새로운 사진이 그들이 본 가장 새로운 것보다 새로운 지 알 수 있습니다. 그렇다면 최신 사진을 보여주세요. 그렇지 않은 경우 가장 오래된 사진으로 가장 오래된 사진을 최신 사진으로 보여줍니다.

+0

나는이 해결책에 대해 생각했지만 사용자가 다음날에 올 때 그는 처음부터 시작할 것입니다. 나는이 광대 한 사용자 기록을 유지하고이 솔루션을 사용하는 것에 대해 비현실적입니다. – Amything

+0

예, PHP 세션은 영원하지 않습니다. 마지막으로 방문한 사용자의 사진 ID를 사용자 기록과 함께 데이터베이스에 저장할 수 있습니다. 이 방법으로 그들은 매일에 시작하지 않을 것이나, 이것은 아직도 "새로운 사진"문제점을 해결하지 않습니다. –

0

정확히 무슨 뜻인지는 알 수 없지만 항목을 추가 한 시점 (최고 = 최신)에 따라 ID를 사용하여 사진을 주문하고 다음에 그 번호를 눌렀을 때 ID를 감소시킵니다. 어디서나 다음을 클릭하면 바로 다음 사진으로 이동할 수 있습니다.

편집 : 사용자가 볼 수있는 변수와 그렇지 않은 변수에 사용자 고유 변수를 저장해야합니다.

다른 답변을 원한다면 연장 된 시간 프레임을 원할 것입니다.

세션 길이를 줄이려면 (간단한 구현) 기꺼이 데이터베이스에 뷰를 저장할 수 있습니다.

디스크 공간에 대한 우려를 해소하기 위해 모든 작업을 수행하여 디스크 공간을 줄일 수 있습니다.

하나의 이름을 지정하려면 다음을 수행하십시오. - 개별보기를 저장할 수 있지만 가능하면보기 순서를 저장하십시오. 간단한 형태의 압축. 따라서 사용자는 ID 1,2,3,4,6,12,13,15를 봅니다. 당신은 두 개의 테이블 적절한 질의 쉽게 처리가 가능 할 '순서'와 '개별 뷰'로 그 개념을 분할 할 수 있습니다 보기

UserID ImageIDStart ImageIDEnd 
jim  1    4 
jim  6   null 
jim  12   13 
jim  15   null 

:처럼 DB 뷰 테이블이 보일 수 있습니다. 당신은 개인적인 견해를 취하고 가능하면 시퀀스로 변환하는 어떤 형태의 압축기를 원할 것입니다.

+0

충분히 명확하지 않을 수 있습니다. 매우 짧은 버전 : 사진을 순환 할 때 중복되는 내용이 없도록하고 싶습니다. 가급적 장시간에 걸쳐, 세션뿐만 아니라. – Amything

0

'이미지 뷰어'를 닫으면 시작 ID (사용자가 처음 보는 사진)와 사용자가 마지막으로 본 사진의 ID를 저장할 수 있습니다.

사용자가 돌아 왔을 때 사용자가 처음 본 이미지의 ID (쿠키 또는 데이터베이스에 저장 됨)에 도달 할 때까지 새 사진이 추가 된 곳이 있으면 추가 사진이있는 곳이 있는지 먼저 확인할 수 있습니다. 사용자가 마지막으로 본 이미지의 ID까지 건너 뛴 다음 계속하십시오.

쿠키/세션이나 데이터베이스에 엄청난 오버 헤드가 발생하지 않습니다. 기본적으로 어리석은 증거입니다. 최소한 상대적으로 정확하고 문제를 해결해야하는 지점까지는 정확합니다. 사용자가 사진의 범위의 중간에 떨어지는 경우에는 어떻게해야합니까? 분명히 이드의 범위를 저장할 수 있습니다 ..

이러한 솔루션을 엄청나게 쏟아 부었습니다. 똑똑하다고 생각하십시오. 그리고 정밀도에 대한 필요성을 고려하십시오. 방문한 각 사진에 대해 데이터베이스에 레코드를 저장하면 사용자가 본 내용을 정확하게 기억하지만 성능이 저하 될 수 있습니다 (시간이 지남에 따라 크게 달라질 수 있음). 성능이 마음에 들었고 사용자가 만족할 것이라고 확신하는 경우 위에서 설명한 것과 같이 정확도는 떨어지지 만 성능은 존중하는 솔루션을 살펴 보시기 바랍니다.

0

사용자가 귀하의 사이트에 로그인되어 있습니까? 어쨌든 서버 쪽을 따로 말해 줄 수 있습니까?

관련 문제