• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Liste durch "Weiter"-Knopf beschränken

gammelfleisch

Neues Mitglied
Hallo,

ich erhalte durch den Aufruf einer JSO-Datei mittels JQuery eine Liste von Daten und muss sie anzeigen. Dabei würde ich gerne z.B. nur die ersten 20 Elemente anzeigen und den Rest auf einer nächsten Seite, wenn man z.B. auf einen Knopf "Weiter" klickt.

Hat jemand eine Idee, wie ich das machen kann?
 
Meinst du eine JSON-Datei?
Und definier mal bitte was du mit "nächste Seite" meinst :)
Soll der Inhalt der aktuellen Seite eventuell nur aktualisiert werden, sobald der weiter Knopf gedrückt wird?
Wenn ja schreibe dir eine Funktion, die dir die Daten raus extrahiert.
Ein Beispiel wäre:

Code:
  function getData(limit, index, data) {
    var liste = []; // Liste in die alle extrahierten Daten reingeschrieben werden   
    var start = index * limit;
    if(start < 0) start = 0;
    // Ist das Array überhaupt so lang?
    if(data[start] === undefined) {
       return false;
    } else {
      for(var i=0; i < limit; i++) {
        if(data[start + i] !== undefined) {
          liste.push(data[start+i]);
        }
      }
      return liste;
    }
  }
Wurde nicht ausgetestet. Aber so ungefähr kann ich es mir vorstellen.
Und beim Weiter klicken wird der Index halt hochgezählt.
 
Zuletzt bearbeitet:
Hallo,

danke für deine Antwort und Sorry für meine ungenaue Beschreibung.

Ich hole mir per JQuery eine JSON-Datei (sie enthält Zeilen einer Datenbankabfrage). Anschließend muss ich sie in meinem HTML-Gerüst alle anzeigen (in einer Tabelle). Das Problem ist, dass es manchmal über 2000 Ergebnisse geben kann und meine Tabelle dementsprechend lang ist. Deshalb habe ich mir überlegt, dass nur die ersten 20 Zeilen angezeigt werden und wenn ich auf einen Button "Weiter" klicke, die nächsten 20 angezeigt werden (und die ersten 20 dementsprechend nicht mehr). Der Inhalt der Tabelle soll quasi nur verändert werden, wenn ich auf Knöpfe wie "Weiter" und "Zurück" drücke, aber auf keinen Fall eine neue Seite erzeugt werden.

Ich hoffe, mein Problem ist jetzt etwas klarer :P
 
Das ist dann eine serverseitige Geschichte. JS sollte dann nur andere Parameter beim Aufruf der Seite mitgeben, die das Auslesen anstößt.
Zum Beispiel dann die Url: meineseite.php?site=2

Per PHP (oder über eine andere serverseitige Sprache) holst du dann nur die Einträge die du brauchst.
Eigentlich so, wie du es ohne JS machen würdest :)

BTW. falls du garnicht weisst wie du Limits einsetzen kannst hier ein Beispiel

Code:
 SELECT * from news LIMIT 5,10

Liest 10 Datensätze ab dem 5. Datensatz aus.
 
Ich rufe keine Datenbank direkt an. Es gibt einen Scheduler und nur dieser hat Zugriffsrechte auf die Datenbank. Ich sende dem Scheduler eine Anfrage, dass er mir alle gespeicherten Messwerte geben soll. Der Scheduler ruft die Sachen in der DB ab, speichert sie in einer JSON-Datei und sendet mir diese. Das ist quasi die Schnittstelle zwischen dem darunter und dem Webfrontend, mehr Spezifikationen wie Limits oder so kann ich nicht geben, einfach nur "gib mir alle Messwerte". Ich benutze JQuery, um die JSON-Datei zu bekommen. Es wäre schon besser, den Tabelleninhalt zu aktualisieren, statt eine neue Seite zu machen. Sowas müsste doch möglich sein, ungefähr mit dem Ansatz des ersten Lösungsvorschlages.
 
Puh, das muss man ja schon allein deshalb ohne Page Refresh beim Blättern machen, weil es völlig hässlich wäre, immerzu 2000 Datensätze zu holen, davon aber nur je 1 % anzuzeigen. (Hint: Das API sollte um „LIMIT“-Funktionalität erweitert werden.)

Die Lösung in #2 sieht doch schon ganz brauchbar aus. Mit dem Ansatz solltest du doch was machen können. Ansonsten sage uns bitte, wo es da konkret hakt.
 
Zurück
Oben