Wie speichere variable anzahl datenfeldern php mysql tabelle
3 Antworten zur Frage
Videos zum Thema
Wie speichere ich eine variable Anzahl von Datenfeldern mit PHP in einer mySQL-Tabelle?
Ich würde eine Tabelle für Fragebögen, eine für Fragen und eine für Antworten erstellen. Die Fragen-Tabelle referenziert auf den Primärindex der Fragebögen. Die Antworten-Tabelle referenziert auf die Fragen.
Also: Autoincrement in jede Tabelle bauen , die Tabelle 'Fragen' bekommt ein zusätzliches Feld für die FragebogenID und die Tabelle Antworten ein zusätzliches für die FrageID.
Alles klar?
Klingt interessant. Allerdings ist es so, dass die Fragebögen einzeln in je einer XML-Datei gespeichert sind. D.h. man kann einfach die XML-Datei austauschen und voilà, dasselbe System mit anderen Fragen. Es ist also kein großer administrativer Aufwand notwendig.
Dein System klingt aber nicht schlecht. Angenommen, ich will zwei Fragebögen gleichzeitig machen. Dann habe ich Fragebogen-Tabelle mit zwei Einträgen und Fragen-Tabelle mit 60 Einträgen.
Nun will ich insgesamt 1000 befragen und hätte demnach 30000 Einträge für die Antworten-Tabelle, richtig?
Genau, es sind dann 30000 Einträge. Dürfte für MySQL eigentlich kein Problem sein. Schnelle Auswertungen bekommst Du durch Indexierung.
Du könntest einem Antwort-Datensatz auch mehrere Felder für verschiedene Antwort-Typen geben, z.B. eins für freie Texteingabe, eins für einen ja/nein-Wert, eins für eine Punktzahl usw. Je nach zugeordneter Frage kann nur eines der Antwort-Felder befüllt werden.
Einen Array in ein Datenfeld der DB zu schreiben ist in der Tat nicht besonders schön)
Schreib die Daten doch einfach in eine dementsprechend formatierte Textdatei, die Du in ein Blob-Feld der Datenbank speicherst. Zugegeben, diese Lösung ist mehr "quick and dirty", wenn Du aber nicht extrem viele User hast, sollte das recht einfach und effizient sein.
Die Datenbank selbst anzufassen und dynamisch zu gestalten , halte ich für zu haarig, weil Dir da schnell die Datenbank explodieren kann.
Allerdings habe ich Deine geplante Anwendung auch noch nicht komplett verstanden. Wenn Du das System so erweitern willst, dass man jeweils einen beliebigen Fragebogen verwenden kann und zwar nicht pro Nutzer, sondern pro Anwendung, dann kannst Du natürlich das Erzeugen der Datenbank vorschalten. D.h. der Nutzer, der einen neuen Fragebogen einstellt, wählt zuvor aus, wieviele Fragen dieser hat und erst danach generierst Du die entsprechende Tabelle, das wäre dann natürlich eine schöne saubere Lösung.