Frage

Ich möchte in meiner Website eine Liste aller Benutzer angezeigt werden, aber ich will nur 10 Personen pro Alter anzuzeigen. Ich weiß nicht, wie genau dies zu tun. Ich weiß, wie es zu tun, indem einfach alle Benutzer auf einer Seite angezeigt wird, aber das ist nicht sehr gut ist es?

Wenn ich es mit dem Code habe ich jetzt habe, es werden nur die ersten zehn Benutzer über bekommen und immer wieder. Ich möchte in der Lage, alle Benutzer für eine einmalige Abfrage zu erhalten, sollte sie global und dann durch die Liste, um die nächsten 10 Abrufen und so weiter für die Anzeige.

Ich entwickle auf appengine mit Java und dem Spring Framework einige der Lösungen Ich habe darüber nachgedacht,

  1. Store in der Sitzung und gehen Sie durch die Liste (sehr schlecht, ich denke)
  2. Hand an die JSP, die speziell auf einen der Bereiche, Seite, Anfrage usw. Aber ich denke Anfrage wird nicht funktionieren.
  3. Suchen Sie nach einer Feder-Controller, der damit umgehen kann.
War es hilfreich?

Lösung

Im Allgemeinen würden Sie eine Formularvariable auf Ihrer Seite (via GET oder POST) genannt ‚Seite‘, benutzen, die eine Zahl sein würde. Wenn Sie erhalten, dass Sie im Servlet einen Bereich auf der Grundlage der Seitenzahl berechnen würde und konfiguriert Zeilen pro Seite.

Hier finden Sie aktuelle Paging durch große Datensätze (ja es Python ist aber die gleichen Grundsätze gelten) und Anfragen und Indizes aus der Google App Engine-Dokumentation.

Andere Tipps

Hier finden Sie aktuelle http://valuelist.sourceforge.net/

Wenn Sie die Seitengröße bei 10 halten, dann können Sie Ihre 10 Benutzer pro Altersgruppe für jede Seite abgerufen werden basierend auf Seitenzahl:

SELECT TOP 10 users FROM myusers 
 WHERE AGE = function(page_number) 
 ORDER BY some_ordering

Ich hoffe, dass PPV + appengine Unterstützung solchen Art der Abfrage.

bieten Einige Datenbank-Engines handliche Erweiterungen nur für diesen Zweck SQL. Wie, in MySQL können Sie etwas sagen wie „wählen ... was auch immer ... begrenzen 50,10“, wobei „50“ ist die Reihe mit zu beginnen und 10 ist die Anzahl der Zeilen abzurufen. Dann auf Ihrer Display-Seite einfach nächste und vorherige Tasten setzen, das die entsprechende Startzeilennummer zurück an den Server für den nächsten Lauf in der Abfrage übergeben.

Wenn die SQL-Engine Sie verwenden keine solche praktische Funktion hat, dann müssen Sie eine Abfrage spezifische „where“ -Klausel auf der Sortierreihenfolge basiert bauen.

Um einen einfachen Fall nehmen an, dass in Ihrem Beispiel Sie die Datensätze, um durch „user_name“ werden angezeigt wird. Sie können Statement.setMaxRows (10) verwenden, um alle Anfragen zu 10 Zeilen zu begrenzen. Dann auf Ihrem ersten Anruf ausführen Sie, sagen sie, „wählen ... was auch immer ... von Benutzern, um von user_name“. Speichern Sie die letzte user_name gefunden. In Ihrer nächsten Taste, übergeben Sie diese user_name an den Server zurück, und die Abfrage für den nächsten Anruf „wählen ... was auch immer ... von Benutzern wo user_name>‚xxx‘bestellt durch user_name“, wobei ‚xxx‘ ist die letzter user_name aus dem vorherigen Anruf. Haben die setMaxRows wieder, so dass Sie wieder auf 10 Reihen Ausgabe beschränkt sind. Sie können dann den Benutzer Schritt für Schritt durch den gesamten Ausgang lassen auf diese Weise.

der Benutzer nach hinten Loslassen ist ein bisschen wie ein Schmerz. Ich habe es getan, indem Sie eine Tabelle in einer Sitzungsvariablen mit dem Startschlüsselwert für jede Seite zu halten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top