Interaktive To-Do-Liste mit PHP & Vue.js

In diesem Artikel demonstriere ich eine einfache To-Do-Liste basierend auf PHP und Vue.js. Das besondere dabei ist, dass das Hinzufügen von Elementen bzw. das Löschen von Elementen kein Neuladen der Seite erfordert. Stattdessen werden die Daten im Hintergrund an den PHP-Server gesendet und dort in der Datenbank gespeichert. Dies macht die Anwendung insgesamt sehr schnell und bequem zu nutzen.

 

Vue.js

Vue.js ist ein JavaScript-Framework basierend auf dem Model View ViewModel (MVVM) Prinzip. Die Anwendung besteht dabei aus einem Model, dass unsere Daten bereit stellt, einem View, welches sich um die Darstellung der Daten kümmert, und dem ViewModel, welches als Bindeglied zwischen dem Model und dem View dient.

Dies hört sich erst einmal sehr kompliziert an. Aber Vue.js ist zum Glück sehr einsteigerfreundlich, und ermöglicht das schnelle Erstellen von kleineren Anwendung. Ein weiterer großer Vorteil von Vue.js gegenüber anderen JavaScript-Frameworks wie React oder Angular, ist die einfache Integration in bestehende Anwendungen. Habt ihr beispielsweise eine umfangreiche Webseite, zum Beispiel mit Automatenspiele kostenlos spielen, so könnt ihr die bestehende Anwendung einfach um neue, interaktive Komponenten erweitern.

 

Architektur

Unsere Anwendung besteht insgesamt aus drei Komponenten:

  • Datenbank: Wir nutzen eine einfache MySQL-Tabelle, um unsere To-Do-Einträge zu speichern.
  • Backend: Damit Einträge in die Datenbank eingefügt werden können bzw. aus dieser gelöscht werden können, bauen wir ein Backend mittels PHP. Insgesamt brauchen wir dort drei Schnittstellen: Anzeigen der To-Dos, Hinzufügen und Löschen.
  • Frontend: Für das Frontend nutzen wir HTML und Vue.js

Datenbank

Wir erstellen eine MySQL-Tabelle die unsere To-Do-Einträge speichert:

Backend

Da Vue.js nicht direkt mit der Datenbank kommunizieren kann, benötigen wir ein Backend. Dies ist das Bindeglied zwischen MySQL und dem Vue.js-Frontend. Insgesamt erstellen wir drei Dateien:

get.php

get.php listet einfach die Einträge in der Datenbank auf. Damit die Daten von Vue.js einfach gelesen werden können, nutzen wir als Datenformat JSON.

add.php

add.php fügt neue Einträge der Datenbank hinzu. Ihr könnt das Script testen, indem ihr folgende URL im Browser aufruft: add.php?text=Test

Als Anwort solltet ihr ein ok => true erhalten.

delete.php

Die delete.php löscht einen bestimmten Eintrag, basierend auf der übermittelten ID.

 

Frontend

Das spannende ist nun das Frontend, das wie folgt aussieht:

Zuerst laden wir die JavaScript-Dateien von Vue.js und von axios. Wir nutzen axios, um HTTP-Anfragen an unser PHP-Backend zu senden.

 

Die Darstellung der To-Do Liste ist im folgenden HTML-Code definiert:

Wir verbinden das Input-Feld mit der Vue-Variable todo_neu. Wenn ein Click auf den Button erfolgt, wird die Methode addTodo() ausgeführt.

Die offenen To-Dos stellen wir mit einer Vue-For-Schleife dar. Damit wir ein Todo auch löschen können, fügen wir jedem Eintrag noch einen Lösch-Button hinzu. Dieser ruft die Methode deleteTodo(item.id) auf und übergibt der Methode die ID vom Eintrag.

Die Logik der Anwendung ist dabei in diesem JavaScript-Code definiert:

Zuerst haben wir zwei Data-Einträge: todo_neu, welches den Text für das neue To-Do speichert, und todo_list, ein Array, dass unsere To-Do-Einträge speichert.

Insgesamt definieren wir noch drei Methoden:

  • fetchData() - Ruft unsere get.php-Datei auf und speichert die Antwort in der Variable todo_list
  • addTodo() - Ruft add.php auf und übergibt den Text des neuen Todo-Eintrags
  • deleteTodo(id) - Ruft delete.php auf und übergibt die ID des zu löschenden Eintrags

 

Das ist auch schon alles, was man für eine einfache Todo-Liste inklusive PHP-Backend und MySQL-Datenbank benötigt. Wie ihr erkennt, ist das Arbeiten mit Vue.js vergleichsweise einfach und deutlich angenehmer als mit z.B. jQuery zu arbeiten.

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