Interaktive Tabelle – mit Vue.js und PHP

Tabellen sind ein Standard-Element einer jeden Webanwendung. Leider bietet die Standard HTML-Tabelle aber leider recht wenig Funktionen an. Ein Sortieren der Einträge ist nicht möglich, ebenso wenig kann man die Tabelle durchsuchen.

Zum Glück lässt sich beides sehr einfach mit Vue.js realisieren. Die Integration in bereits bestehende Web-Anwendungen ist zum Glück ebenfalls sehr einfach.

Vue.js

Vue.js ein modernes JavaScript-Webframework, mit dem sich sowohl einfach Komponenten als auch komplexe Web-Anwendungen realisieren lassen. Es ist insbesondere bei Einsteigern beliebt, da man damit sehr schnell erste Erfolge hat und man leicht dynamische Komponenten erstellen kann.

Ich persönlich mag Vue.js sehr gerne, da man damit bestehende Web-Anwendungen, z.B. auf PHP-Basis, sehr einfach ergänzen kann. Wie in diesem Beispiel gezeigt wird, kann man eine bestehende Tabelle die man zuvor z.B. per PHP+HTML aus einer Datenbank erzeugt hat, schnell durch eine interaktive Tabelle mit Sortier- und Filtermöglichkeiten ersetzen. Gerade bei älteren, großen Anwendungen wie z.B. bei einer 50 free spins gratis Anwendung, kann man diese so schrittweise "verjüngen".

 

Interaktive Tabelle mit Vue.js und PHP

Der gesamte Code für die Anwendung sieht wie folgt aus:

 

Zuerst definieren wir unsere Daten, die wir in der Tabelle darstellen wollen:

Eigentlich wäre es nicht notwendig hier PHP zu verwenden. Später möchte man die Daten aber vielleicht aus einer MySQL-Datenbank laden und in der Tabelle darstellen.

 

Als nächstes laden wir die notwendigen JavaScript- und CSS-Dateien:

Beachtet dass wir die Development-Version von Vue.js Laden. Für den produktiven Einsatz, sollte man die production-Version laden wie in der Vue.js-Dokumentation beschrieben. Ebenfalls laden wir noch Bootstrap um ein nettes Design für die Tabelle zu haben.

Anschließend definieren wir in HTML das Aussehen unserer Tabelle:

Sofern man auf die Überschriften klickt, wird die Vue-Variable sortBy entsprechend auf den Namen der Spalte gesetzt. Ebenso wechseln wir bei der Variable sortAsc zwischen den Werten true und false. Somit ändern wir die Reihenfolge der Sortierung wenn man erneut auf den Spalten-Kopf klickt.

Unterhalb der Spalten-Überschrift definieren wir entsprechende Eingabefelder:

Diese Eingabefelder binden wir an entsprechende Vue-Variablen (siehe Form Input Bindings).

Anschließend geben wir die Daten aus:

 

Dazu nutzen wir eine Vue For-Loop.

Zum Schluss bleibt der JavaScript-Code, der die Logik unserer Tabelle beinhaltet:

 

 

Zuerst definieren wir unsere Vue Variablen (data). Wir haben entsprechende Variablen für die Eingabefelder für die Suche, sowie zwei Felder für die Sortierung (sortBy und sortAsc).

Damit wir die E-Mail-Adressen von PHP in das JavaScript reinbekommen, nutzen wir folgenden Trick:

Somit werden die Daten in der PHP-Variable $emails direkt im passenden Format im JavaScript-Code ausgegeben. Schaut ihr euch den Quellcode der HTML Seite an, findet ihr dort entsprechend wieder alle E-Mail-Adressen aufgelistet.

Der letzte Trick ist das Durchsuchen und Sortieren der Daten. Dies erfolgt mit der folgenden JavaScript-Methode:

Mittels filter() überprüfen wir ob in der search Variable entsprechende Suchwerte hinterlegt sind. Falls dort eine Eingabe erfolgte, filtern wir alle Einträge raus die den Wert nicht enthalten.

Mittels sort() wird dann anschließend die Tabelle noch sortiert.

Autor:
Zurück zur Übersicht aller Beiträge