Baba: Tabelle (Sqlite) permanent sortieren per jquery und AJAX

Ich eine Tabelle, die in einer SQLite-Datenbank steht, für den User sortierbar machen. Zunächst generiere ich eine Liste, die ich mit jQuery ausgebe. So kann man sich das vorstellen. Das Sortieren möchte ich nun permanent machen. Das heisst, in der SQLite-DB vermerken. Zunächst müsste ich natürlich mittels AJAX-Request das Sortieren dem Server melden, doch wie gehts dann weiter?

Idee 1:
Ich lege eine Spalte an "position" und speichere die Nummer der Zeile dort?!?

Vielleicht gibt es ja noch einfachere Ansätze oder Zusatzüberlegungen, die ich vergessen habe. Oder sogar ein Beispiel, wo sich einer schon an dem Problem versucht hat. In jQuery wäre super.

Cheers,
Baba

  1. Hallo,

    ich würde jeder Zeile eine pos und eine id geben, damit man sie identifizieren kann.

    Par AJAX übermitteln, welche Zeile verschoben wird und ob sie nach oben oder unten verschoben wird (ggf um wieviele Positionen). Dann brauchst du nur noch ein sql-statement, dass die betroffenen Zeilenpositionen ändert (die zwischen Ausgangs und Endposition).

    Grüße
    Siri

    1. Hallo Siri,

      Par AJAX übermitteln, welche Zeile verschoben wird und ob sie nach oben oder unten verschoben wird (ggf um wieviele Positionen). Dann brauchst du nur noch ein sql-statement, dass die betroffenen Zeilenpositionen ändert (die zwischen Ausgangs und Endposition).

      Ich denke, ich mache es dann eher absolut. D.h. alle Positionen abfragen und diese dann senden, als die Verschiebung zu ermitteln. Klingt mir robuster (auch wenn mehr redundante Informationen). Was meinst Du?
      Beim Schreiben wird es dann noch etwas frickelig. Muss dann alle records durchgehen und den Wert neu schreiben, oder?

      Cheers,
      Baba

      1. Hallo,

        performanter wäre die andere Vorgehensweise schon. Ein Beispiel:

        Zeile 10 nach Zeile 3:

        1. Statement: alle Zeilen mit Position >= 3 und < 10 um eine Position hochzählen

        2. Statement: Zeile 10 über die Id auf Position 3 setzen.

        Fertig!

        Gruß,
        Siri

        1. performanter wäre die andere Vorgehensweise schon.

          Da gebe ich Dir recht. Einmal gut nachgedacht und ein schöneres script! Der Tipp hat mir dabei gefehlt. Vielen Dank.

          Cheers,
          Baba

      2. Ich denke, ich mache es dann eher absolut. D.h. alle Positionen abfragen und diese dann senden, als die Verschiebung zu ermitteln.

        Was machst du bei einer Tabelle mit 1,2 Millionen Datensätzen?

        1. Was machst du bei einer Tabelle mit 1,2 Millionen Datensätzen?

          Ich mache mir ein Bier auf...

          ... und baue es dann um :)
          Ist ja gut, ihr habt mich überzeugt :)

          Cheers,
          Baba

  2. Ich lege eine Spalte an "position" und speichere die Nummer der Zeile dort?!?

    Ja, das ist die übliche vorgehensweise - man fügt ein feld "sorting" ein, welches die Vorgabesortierung enthält.

    Jegliche andere Methode ist gänzlich unbrauchbar - außer die Vorgabesortierung deckt sich zufällig mit einem bereits vorhandenen Kriterium (z.B. Alphabetisch nach Titel oder aufsteigend nach Einfügedatum) - das ist bei dir aber nicht der Fall.

    1. Vielen Dank, das klingt gut!

      Cheers,
      Baba