Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gibt es eine Möglichkeit, auf ein Datenbankereignis zu „horchen“ und eine Seite in Echtzeit zu aktualisieren?

Das ist nicht allzu schwierig. Der einfache Weg wäre das Hinzufügen über .append:

$( '#table > tbody:last').append('<tr id="id"><td>stuff</td></tr>');

Das Hinzufügen von Elementen in Echtzeit ist nicht vollständig möglich. Sie müssten eine Ajax-Abfrage ausführen, die in einer Schleife aktualisiert wird, um die Änderung zu "fangen". Also nicht ganz in Echtzeit, aber sehr, sehr nah dran. Ihr Benutzer würde den Unterschied wirklich nicht bemerken, obwohl die Auslastung Ihres Servers dies tun könnte.

Aber wenn Sie sich mehr einbringen wollen, würde ich vorschlagen, sich DataTables anzusehen . Es bietet Ihnen einige neue Funktionen, darunter Sortieren, Paging, Filtern, Begrenzen, Suchen und Ajax-Laden. Von dort aus können Sie entweder ein Element über Ajax hinzufügen und die Tabellenansicht aktualisieren oder einfach über die API anhängen. Ich verwende seit einiger Zeit DataTables in meiner App und sie werden immer wieder als Feature Nr. 1 genannt, das die immense Datenmenge nutzbar macht.

--Bearbeiten --

Da es nicht offensichtlich ist, setzen Sie zum Aktualisieren der von Ihnen aufgerufenen DataTable Ihren Datatables-Aufruf auf eine Variable:

var oTable = $('#selector').dataTable();

Führen Sie dann Folgendes aus, um das Update durchzuführen:

  oTable.fnDraw(false);

UPDATE – 5 Jahre später, Februar 2016:Dies ist heute viel mehr möglich als 2011. Neue Javascript-Frameworks wie Backbone.js können sich direkt mit der Datenbank verbinden und Änderungen an UI-Elementen auslösen, einschließlich Tabellen zu Änderungen, Aktualisierungen oder Löschen von Daten .... es ist einer der Hauptvorteile dieses Frameworks. Darüber hinaus können UIs über Socket-Verbindungen mit Echtzeit-Updates an einen Webdienst gespeist werden, die dann ebenfalls abgefangen und bearbeitet werden können. Während die hier beschriebene Technik immer noch funktioniert, gibt es heute viel mehr "lebendige" Möglichkeiten, Dinge zu tun.