Für Speisekarte eine Datenbank anlegen?
Moin,
Ich arbeite derzeit an einer Restaurant-Webseite für Bekannte. Bisher habe ich nur HTML/CSS verwendet, aber als ich zur Speisekarte kam, fiel mir auf, dass ich viel HTML-Code sparen könnte, indem ich eine Datenbankabfrage verwende.
Ich studiere im 4. Semester IT/SE und habe noch nicht viel praktische Erfahrung in diesem Bereich. Einmal hatte ich an einem Projekt gearbeitet, bei dem Thymeleaf verwendet wurde und man mit einer For:Each-Schleife die Einträge aus der Datenbank wiedergeben konnte. Ich suche ungefähr nach einer ähnlichen Lösung. Ich erinnere mich jedoch daran, dass das damalige Projekt ziemlich umständlich war. Deshalb möchte ich fragen, was die beste Lösung in diesem Fall wäre.
Danke für die Antworten!
5 Antworten
Ich würde zuerst einmal hinterfragen, ob deine Bekannten tatsächlich eine statische Webseite haben wollen, deren Inhalt sich (bis auf die Speisekarte) nie ändert bzw. bei der sie selbst für kleinste Änderungen stets auf technischen Support angewiesen wären.
Wenn dem so ist, wäre der einfachste Weg ein PDF-Dokument, welches du lediglich verlinkst und/oder zusätzlich via iframe-/object-Element einbindest. Das ist generell keine unübliche Lösung und hat den Vorteil, dass für eine Änderung lediglich eine Datei in einem bestimmten Ordner einmal ausgetauscht werden muss.
Andernfalls würde ich dir raten, direkt mit einem CMS zu arbeiten. Da gibt es auch etliche leichtgewichtige, flexible Lösungen (Bsp.: Batflat, CMSimple, GetSimple CMS, Kirby, Monstra, ...). Meist kannst du die Theme-Templates mit PHP schreiben oder das CMS bietet noch ein eigenes Template-System. Das wäre im Grunde dann auch das, was du auch mit Thymeleaf hattest.
Der Vorteil dabei ist, dass die Seitenbetreiber eine grafische Oberfläche zur Pflege der Felder haben, die du vorgibst. Die Frage, wie die Daten konkret gespeichert werden, kannst du dem CMS überlassen, die oben genannte Auswahl braucht dafür nicht einmal eine Datenbank, sondern speichert die Daten dateibasiert. Du musst lediglich Felder im CMS definieren und aus deinen HTML-Dateien Templates machen, in denen du die Werte der Felder aus dem CMS einsetzt.
Du kannst natürlich ganz einfach deine Speisekarte in eine csv Datei ablegen
Dann per PHP einlesen und schön als HTML anzeigen lassen.
Erspart viel Arbeit und Änderungen sind auch viel einfacher
Eine Datenbank eignet sich gut, wenn Daten nach uunterschiedlichen (ggf. bei der Entwicklung noch nicht bekannten) Kriterien gefiltert werden sollen.
Oder wenn Produkte / Speisen online aus Bausteinen zusammengesetzt werden sollen.
Nach meiner Kenntnis trifft das für Speisekarten nicht zu, die sind für Monate oder Jahre fest aufs Papier gebannt.
Eine Lösung für die Verwendung einer Datenbank auf deiner Restaurant-Webseite könnte sein, ein Backend-Framework wie Node.js, Ruby on Rails oder Django zu verwenden, um Daten aus der Datenbank abzurufen und HTML-Code dynamisch zu generieren. Diese Lösung ist flexibler und leichter zu warten als reines HTML/CSS
Schau direkt nach Webhosting-Anbietern, die dir sowohl Node.js-Support, als auch eine Datenbank (MySQL/MariaDB) in einem Paket zusichern. Da lassen sich durchaus einige Anbieter finden. Das gilt auch für die anderen oben genannten Optionen (Ruby, Python) oder (gerade) PHP.
Eigentlich hätte PHP und csv vollkommen gereicht
Aber wenn du unbedingt SQL verwenden möchtest für die Speisekarte- ok
Eigentlich bekommt man bei jedem richtigen Anbieter SQL, Domain, Webspace, PHP und natürlich SSL ohne Extra Kosten
Hallo, ich kann dir bei deinem Problem nicht direkt helfen, aber ich hätte einen anderen Vorschlag, den ich persönlich viel praktischer fände. Und zwar würde ich die Speisekarte als PDF-Dokument gestalten. Dieses kannst du zum Beispiel so einbinden:
<object width=“…“ height=“…“ type=“application/pdf“ data=“PFAD/NAME.pdf“>
Ich sehe hier den Vorteil, dass du eine einfache Downloadmöglichkeit für die Benutzer hinzufügen kannst, damit sie die Speisekarte auch offline verwenden können oder verschicken können.
Ich weiß, dass diese Antwort nicht ganz deiner Frage entspricht, aber vielleicht hilft es dir ja weiter.
Danke für den Tipp mit Node.js, ich hab jetzt paar dinge ausprobiert und das ist genau das was ich gesucht habe. Weißt du zufällig wie das ist, wenn ich jetzt die Seite Online stellen wollen würde? Ich betreibe ja MySQL via. localhost etc. ich müsste dann (wahrscheinlich) einen Online (datenbanken?) Dienst dafür kaufen oder?