Frage

Fühlen Sie sich frei, zu Bearbeiten den Titel, wenn Sie wissen, wie Sie formulieren die Frage besser.(Tagging ist ein problem.) Das problem ist möglicherweise zu schwierig, in diese Allgemeine form, so betrachten wir ein konkretes Beispiel.

Sie erhalten einen vollen Bildschirm von stackoverflow-Fragen anfordern /questions ?sort=newest Seite.Nächste Seite link führt zu /questions?page=2 &sort=newest.Ich nehme an, dass auf der server-Seite, die Anfrage wird übersetzt in eine SQL-Abfrage mit LIMIT-Klausel.Problem bei diesem Ansatz ist, dass, wenn neue Frage Hinzugefügt wurden, während der Benutzer navigiert, mit der ersten Seite, seine zweite Seite beginnt mit einigen Fragen, die er schon gesehen.(Wenn er hat 10 Fragen pro Seite und 10 neue Fragen zufällig Hinzugefügt, dann kriegt er genau das gleiche Inhalte zweiten mal!)

Gibt es eine elegante Lösung für dieses häufige problem?Ich weiß, dass es nicht das große problem, zumindest nicht für stackoverflow, aber immer noch.

Die beste Idee, die ich habe (abgesehen von der Speicherung verlangen Geschichte pro client) zu verwenden /questions?answer_id=NNN format.Server gibt eine Seite, die beginnt mit dem angeforderten Antwort, und legt die id der ersten Antwort auf der nächsten Seite in der nächsten Seite link.Muss es eine Möglichkeit SQL-Code schreiben für das, richtig?

Es ist, wie es normalerweise gemacht wird?Oder gibt es einen besseren Weg?

War es hilfreich?

Lösung

Dies kann nicht getan werden, eine einfache Möglichkeit.Für Beispiel, die "Offen" - Liste hier bei stackoverflow ist sortiert nach Anzahl der Stimmen.Also, wenn Sie möchten, speichern Sie die Letzte ID der Seite, die Sie gerade anzeigen (in einem cookie, request, session, wo auch immer), und jemand upvotes ein post beim surfen auf Seite 2, Seite 3 ist nicht vollständig, da die kürzlich post von Ihnen positiv bewertet werden konnten, wurden verschoben auf Seite 1 oder 2.

Nur Weg, es zu tun ist, laden Sie die vollständige Liste in die Sitzung.Bitte nicht...

Wie bereits erwähnt, hoffen wir, dass die Menschen werden verwendet, um diese nun durch.

Andere Tipps

Die meisten Websites, die ich gesehen habe nicht dieses problem lösen - Sie zeigen eine Seite mit einigen Inhalten, die Sie bereits gesehen haben.

Sie könnten Bedenken, dass eine Funktion - wenn Sie auf "weiter" und sehen, dass einige Inhalte sind Sie vorher zu sehen, es ist ein signal, dass Sie wollen zurück zu gehen, wieder in den Vordergrund, weil es einige neue Inhalte.

Tag-jede Frage mit der Zeit in die Datenbank eingegeben werden, tragen die Zeit der frontpage der zuletzt geladen wurde wie ein cookie oder einen Teil der URL, und beschränken Sie die Suche auf Elemente n durch n+displaynum wie Sie vorwärts gehen.

Aber ich würde nicht die Mühe.Dieses Verhalten ist uniform genug, dass die meisten Benutzer erwarten, dass es, und dient als ein flag, wenn neue Daten verfügbar werden.Sie können sogar öffnen Sie eine neue Registerkarte/Fenster beginnt wieder an der Spitze der Liste, um zu sehen, was kommt.

Ich glaube, die SQL (MySQL) wäre:

SELECT * 
FROM   entries 
WHERE  entry_id >= @last_viewed_entry_id 
ORDER BY entry_id 
LIMIT 50
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top