2009-04-21 16 views
1

Ich arbeite auf einer Website, wo Benutzer Fotos einreichen, die nacheinander auf einer Seite angezeigt werden können.Sicherstellung neuer Inhalte für Fotoalbum

Auf einer anderen Seite sehen Sie kleinere Versionen mehrerer Fotos.

Wenn ein Benutzer auf eines dieser kleineren Fotos klickt, wird die große Versionsseite angezeigt. Wenn Sie auf "Weiter" klicken, werden die Fotos zu einem anderen Foto in dieser Kategorie verschoben.

Ich möchte sehr gerne, dass neuere Fotos Vorrang vor älteren Fotos haben.

Meine Idee ist, dass, wenn Benutzer als nächstes klickt, er zum neuesten Foto gebracht wird und der nächste von dort den Benutzer rückwärts durch alle neuen Fotos führt.

Problem ist, wenn der Benutzer eine einzelne Fotoseite verlässt, zu mehreren Thumbseiten zurückkehrt und dann auf ein anderes Foto klickt, sieht der Benutzer dieselben neuen Fotos, wenn er auf "Weiter" klickt.

Ich möchte sicherstellen, dass Benutzer nicht dasselbe Foto sehen. Ich dachte daran, für jeden Besucher ein einzigartiges Cookie zu erstellen, und wenn der Nutzer das Foto besucht, notiere ich es in einer Besuchs-Tabelle. Wenn ich ein neues Foto von db für 'next' auswähle, stelle ich sicher, dass der Benutzer dieses Foto noch nicht besucht hat.

Ich bin (zu früh) besorgt über die Auswirkungen auf die Datenbankbelastung.

Irgendwelche Ideen, was ist der beste Weg, dies zu tun oder eine alternative Methode?

EDIT:

Könnte nicht klar gewesen, genug hat, sehr kurze Version: Ich habe keine doppelten Inhalte sicherstellen will, wenn sie durch Bilder Radfahren. Vorzugsweise über eine längere Zeit, nicht nur eine Sitzung.

EDIT 2:

So ist es das, was ich zur Zeit darüber nachzudenken, zu tun. Sieht gut aus? Ich habe es zusammengeschmissen (im wahrsten Sinne des Wortes, Stromausfall in 5 Minuten zur Reparatur, ich muss morgen wieder kommen, ich hoffe, das macht Sinn).

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

Antwort

0

Wenn Sie Sitzungen verwenden, können Sie den Überblick über den ältesten ‚neuen‘ Foto-ID halten, die ein Benutzer angesehen hat. Wenn Sie also auf "Weiter" klicken, zeigen Sie das neueste Foto an und speichern seine ID in der Benutzersitzung. Jedes Mal, wenn sie auf "Weiter" klicken, geben Sie ihnen das neueste Foto, das kleiner ist als die ID des Fotos, das sie in ihrer Sitzung haben. Auf diese Weise wird Ihre Sitzung immer wissen, wo sie anfangen soll, um ihnen ein relativ neues Foto zu zeigen, das sie noch nicht gesehen haben. Sie können einfach weiter durch Fotos gehen, wo auch immer sie aufgehört haben.

Da Sitzungen Cookies verwenden, funktioniert dies, bis sie ihre Cookies löschen, auch wenn sie sich nicht registrieren oder anmelden.

Dies berücksichtigt jedoch keine neuen Fotos, die seit dem Start des Benutzers gesendet oder hochgeladen wurden. Ohne eine Aufzeichnung jedes einzelnen Fotos, das der Benutzer angeschaut hat, zu speichern, wird es sehr schwierig sein, einen Weg zu finden, dieses Niveau der Aufzeichnung zu simulieren.

Edit:

mehr auf das Denken, könnten Sie speichern nicht nur das älteste Foto-ID der Benutzer gesehen hat, aber die neueste.Auf diese Weise sehen Sie jedes Mal, wenn Sie auf "Weiter" klicken, ob das neueste Foto neuer ist als das neueste, das sie gesehen haben. Wenn ja, zeigen Sie ihnen das neueste Foto. Wenn nicht, zeigen Sie ihnen das neueste Foto, das älter ist als ihr "älteste gesehenes" Foto.

+0

Ich dachte über diese Lösung nach, aber wenn der Benutzer am nächsten Tag kommt, wird er von vorne anfangen. Ich bin wahrscheinlich unrealistisch darüber, eine so umfangreiche Benutzergeschichte zu führen und für diese Lösung zu gehen :) – Amything

+0

Ja, PHP-Sitzung dauert nicht ewig. Sie können die zuletzt besuchte Foto-ID des Benutzers mit seinem Benutzerdatensatz in der Datenbank speichern. Auf diese Weise würden sie nicht jeden Tag neu anfangen, aber das löst immer noch nicht das Problem "neue Fotos". –

0

Ich kann nicht genau sagen, was Sie genau meinen, aber alles, was Sie tun möchten, ist Ihre Fotos mit IDs basierend auf wann der Artikel hinzugefügt wurde (höchste = neueste) und verringern Sie die ID, wenn Sie nächste, auf diese Weise Sie können überall in die Anzeigewarteschlange springen, und wenn Sie auf "Weiter" klicken, wird einfach zum nächsten Foto in Zeile gewechselt.

Bearbeiten: Von was es klingt wie Sie müssen Benutzer eindeutige Variablen auf was sie gesehen haben und was sie nicht gespeichert haben.

Von Ihren anderen Antworten möchten Sie es über einen längeren Zeitraum.

Wenn Sie nicht bereit sind, es auf einen Zeitrahmen für die Sitzungsdauer zu reduzieren (die einfachere Implementierung), können Sie die Ansichten in einer Datenbank speichern, wie Sie es vorschlagen.

Um Ihre Bedenken hinsichtlich des Speicherplatzes zu beheben, können Sie alle Arten durchführen, um den Speicherplatz zu reduzieren.

So benennen Sie eine Eins: - Speichern Sie einzelne Ansichten, aber wo möglich, speichern Sie Ansichtssequenzen. Komprimierung in einer einfachen Form. Also Benutzeransichten ID 1,2,3,4,6,12,13,15. Ihre db Ansichten Tabelle könnte wie folgt aussehen: Ansicht

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

Sie mögen können diese Konzepte in zwei Tabellen, ‚Sequenzen‘ und ‚individuelle Ansichten‘ spalten, die richtige Abfrage- und einfache Verarbeitung ermöglichen würde. Sie möchten eine Art von Komprimierung, die individuelle Ansichten und Konvertierungen zu Sequenzen, wenn möglich, aber benötigt.

+0

Vielleicht nicht klar genug gewesen, sehr kurze Version: Ich will keine doppelten Inhalt beim Radfahren durch Bilder sicherstellen. Vorzugsweise über eine längere Zeit, nicht nur eine Sitzung. – Amything

0

Wenn der 'Bildbetrachter' geschlossen wird, können Sie einfach die Anfangs-ID (erstes Foto, das der Benutzer sieht) und die ID des Fotos, das der Benutzer zuletzt gesehen hat, speichern.

Wenn der Benutzer zurückkommt, können Sie einfach überprüfen, ob dort neuere Fotos hinzugefügt wurden. Wenn ja, zeigen Sie diese zuerst an, bis Sie die ID des Bildes erhalten, das der Benutzer zuerst gesehen hat (gespeichert in Cookie oder Datenbank). dann überspringen Sie einfach bis zur ID des Bildes, das der Benutzer zuletzt gesehen hat, und fahren Sie von dort fort.

Dies erzeugt keinen großen Aufwand für Cookies/Sitzungen oder Datenbanken .. und es ist im Grunde narrensicher .. zumindest relativ genau, bis zu einem Punkt, wo Sie Probleme wie beheben müssen; Was passiert, wenn der Benutzer in der Mitte einer Reihe von Fotos erscheint? Sie könnten eine Reihe von IDs speichern, natürlich.

Tonnenweise Lösungen wie diese. Denken Sie nur "schlau". Und berücksichtigen Sie das Bedürfnis nach Präzision. Wenn Sie für jedes besuchte Foto einen Datensatz in eine Datenbank einfügen, erhalten Sie eine genaue Erinnerung an das, was der Benutzer gesehen hat, aber die Leistung wird höchstwahrscheinlich fallen (dramatisch im Laufe der Zeit, das kann ich Ihnen versichern). Wenn Sie Leistung mögen und ich bin mir sicher, dass Ihre Benutzer das tun werden, dann würde ich vorschlagen, dass Sie sich eine Lösung ansehen, die weniger genau ist (wie oben beschrieben), aber die Leistung respektiert.

0

Sind Ihre Benutzer bei Ihrer Site angemeldet? Hast du sie sowieso serverseitig zu unterscheiden?

Verwandte Themen