2009-04-21 5 views
1

私は、ユーザーがページ上で1つずつ見ることができる写真を投稿するサイトに取り組んでいます。フォトアルバムの新鮮なコンテンツを確保する

複数の写真の小さなバージョンが表示される別のページがあります。

ユーザーがこれらの小さい写真をクリックすると大きなバージョンのページが表示されます。「次へ」を押すと、そのカテゴリの別の写真に移動します。

古い写真よりも新しい写真が優先されることを非常に嬉しく思います。

私が考えているのは、ユーザーが次の写真をクリックしたときに新しい写真に移動し、次にそこから移動すると、新しい写真がすべて逆戻りするということです。

問題は、1つの写真ページを残して複数の親指ページに戻って別の写真をクリックすると、次の写真をクリックしたときに同じ新しい写真が表示されるという問題です。

私はユーザーに同じ写真が表示されないようにしたいと思います。私は各訪問者のためにユニークなクッキーを置くことについて考えていました。そして、ユーザーが写真を撮ったとき、私はそれを訪問テーブルに記録します。 dbから '次へ'という新しい写真を選択すると、以前にその写真にアクセスしていないことを確認します。

これは、これがデータベースの負荷にどのような影響を与えるかについて心配しています。

これを行う最善の方法や別の方法についてのアイデアはありますか?

EDIT:

は、非常に短いバージョンは十分明らかにされていない可能性があります:私は写真を巡回する際重複コンテンツを確保しないようにしたいです。好ましくは、延長された時間にわたって、セッションだけでなく。

EDIT 2:

だから、これは私が現在やって考えているものです。いいね?私はそれを一緒に投げた(文字通り、修理のために5分で電源を切る、私は明日戻って来なければならない、これは意味をなさない)。

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

答えて

0

あなたがセッションを使用している場合は、ユーザーが視聴した最古の「新しい」のフォトIDを追跡することができます。そこで、次のページをクリックすると、最新の写真が表示され、そのIDがユーザーのセッションに保存されます。彼らが次回をクリックするたびに、セッション中の写真のIDよりも新しい最新の写真を与えてください。この方法では、あなたのセッションでは、まだ見ていない比較的新しい写真をどこから始めるべきかを常に知っています。写真の記録は、中断した場所からでも移動できます。

セッションはクッキーを使用して動作するため、クッキーをクリアするまではセッションが登録またはログインしなくても動作します。

これは、ユーザーが閲覧を開始してから送信またはアップロードされた新しい写真を考慮に入れません。ユーザーが見た個々の写真の記録を保存せずに、そのレベルの記録をシミュレートする方法を理解することは非常に難しいでしょう。

編集:

この上でより多くの思考は、ユーザーが閲覧している最も古い写真のIDが、最新ではないだけを格納することができます。こうすることで、次のページをクリックするたびに、最新の写真が最新のものより新しいかどうかがわかります。そうなら、最新の写真を表示してください。そうでない場合は、「最も古いもの」より古い古い写真を表示します。

+0

私はこの解決策について考えましたが、ユーザーが翌日に来ると、彼は最初から始めます。このような広範なユーザーの履歴を保存してこのソリューションに行くのは、おそらく非現実的です:) – Amything

+0

はい、PHPセッションは永遠に持続しません。最後に訪れた写真のIDをユーザレコードとともにデータベースに保存することができます。こうすることで、彼らは毎日始まることはありませんでしたが、これはまだ "新しい写真"の問題を解決しません。 –

0

あなたは正確に何を言っているのかは分かりませんが、アイテムが追加された時点(最高=最新)に基づいてIDで写真を注文し、次の行をクリックして次の行の写真の次の行に移動すると、キューに入ることができます。

編集:あなたは、彼らが視聴していると、彼らが持っていないものをどのようにユーザー独自の変数を格納する必要がありますように聞こえる何から 。

他の回答から、あなたはそれを長時間にわたって必要とします。

あなたがお勧めのように、データベース内のビューを格納することができ、セッションの長さの時間枠(シンプルな実装)にそれを減らすことを望んでいない場合。

ディスク容量に関する懸念事項に対処するために、すべての種類のディスク容量を削減することができます。

1名前を付けるには: - 個々のビューを保存するが、可能な店舗ビューシーケンスを。単純な形式での圧縮。ユーザーはID 1,2,3,4,6,12,13,15を表示します。 ビュー

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

あなたは「配列」と適切なクエリと簡単に処理を可能にする「個々のビュー」、二つのテーブルにこれらの概念を分割したいことがありますデシベルビューのテーブルは、次のようになります。あなたは個々のビューを取って可能な限りシーケンスに変換する何らかの形式の圧縮を必要とします。 「画像ビューア」は閉じたとき

+0

十分にはっきりしていないかもしれない、非常に短いバージョン:写真をサイクリングする際に重複する内容がないようにしたい。好ましくは、延長された時間にわたって、セッションだけでなく。 – Amything

0

、あなたは単にユーザーが最後に見た写真の始まりID(最初の写真は、ユーザーが見ている)とidを格納することができます。

ユーザーが戻ってきたら、最初に見た画像のID(Cookieまたはデータベースに保存されている)に達するまで、新しい写真が追加されている場合は最初に表示されます。ユーザーが最後に見た画像のIDまでスキップし、そこから続行します。

これは...クッキー/セッションまたはデータベースに大きなオーバーヘッドが発生しません、それは基本的にアップあなたのような問題を解決する必要がある時点まで、少なくとも比較的正確な...証拠をだますされます。ユーザーが写真の範囲の真ん中に落ちたら?あなたは...明らかに、このようなソリューションの

トンをIDの範囲を格納することができます。ただ「スマート」と思ってください。また、精度の必要性を考慮します。訪問した写真ごとにデータベースにレコードを置くと、ユーザーが見たものを正確に想起することができますが、パフォーマンスはおそらく低下します(劇的に低下します)。あなたがパフォーマンスが好きで、私はあなたのユーザーが確信していると思うなら、(上記のような)正確さが低いかもしれないが、パフォーマンスを尊重するソリューションを見てみることをお勧めします。

0

あなたのユーザーはあなたのサイトにログインしていますか?とにかくサーバー側を離れて彼らに伝える必要はありますか?

関連する問題