Felix Riesterer: PDO: Dynamische Read- und Write-Funktion schreiben

Beitrag lesen

Lieber borisbaer,

Du verwendest zwar eine Datenbank, aber nur für Teilaufgaben der Datenhaltung?

Meine Lösung sieht so aus: Die HTML-Tabelle generiert sich aus Daten einer JSON-Datei und einer Datenbank-Tabelle. In der JSON-Datei stehen dann z.B. „Titel“, „Erscheinungsjahr“ usw. (also statische Werte) und in der Datenbank-Tabelle wird gemanagt, welchen Wert ein bestimmter input zu dem entsprechenden Release-Eintrag hat („habe ich“, „habe ich nicht“, „kein Interesse“).

Ein Mischmasch von Datenbank und JSON-Dateien. Warum nur willst Du das genau so haben? Der Vorteil beim Einsatz einer Datenbank ist ja gerade, dass man Bezüge herstellen kann. Deswegen sind die Daten aus den JSON-Dateien besser in der DB aufgehoben, natürlich in einer anderen Tabelle.

Diese Vorgehensweise macht es für mich nötig, IDs manuell in der JSON-Datei zu vergeben.

Das ist der Beweis dafür, dass Deine Vorgehensweise völliger Quatsch ist. Die ID-Werte soll die Datenbank schön selbst verwalten. Dann klappt das auch mit der Konsistenz der Daten.

Womöglich kann man das besser lösen, doch das übersteigt meine aktuellen Kenntnisse.

Genau dafür ist ja das Forum da. Mein Vorschlag:

Tabelle releases mit den Spalten

  • id (Primärschlüssel, integer, auto_increment)
  • game (varchar 250)
  • date (date)

Tabelle user

  • login (Primärschlüssel, varchar 250)
  • pw (varchar 200)
  • email (varchar 250)

Tabelle attitudes

  • id (Primärschlüssel, integer, auto_increment)
  • attitude (varchar 250)

Tabelle gaming (da hast Du sicherlich einen besseren Namen)

  • id (Primärschlüssel, integer, auto_increment)
  • user (varchar 250) <- bezieht sich auf user.login
  • release (integer) <- bezieht sich auf releases.id
  • interest (integer) <- bezieht sich auf attitudes.id

Die Tabelle releases soll der Datenstruktur Deiner JSON-Dateien entsprechen. Die Tabelle gaming ist die eigentliche Zuordnung von User, Release und Interesse. Anstatt hier magic numbers für das jeweilige Interesse zu wählen, kann man das auch mit einer passenden Werte-Tabelle (hier attitudes) verknüpfen.

Mein Beispiel ist sicher unvollständig, aber hoffentlich kann es wenigstens zeigen, wie Deine Daten allesamt in die DB gehören.

Das Schreiben der passenden Klassen zum Verwalten der jeweiligen Tabellen und ihren Daten ist dann Stoff für eine abgeleitete Diskussion.

Liebe Grüße

Felix Riesterer