Wie speichere variable anzahl datenfeldern php mysql tabelle

Ich habe ein kleines PHP/mySQL-gestütztes System zur Durchführung von Umfragen geschrieben. Das System ist für die zwei benötigten Fragebögen entsprechend konfiguriert. Nun möchte ich das System so erweitern, dass ein beliebiger Fragebogen genutzt werden kann und dass System auch dann alle Antworten speichert. Gibt es eine andere Möglichkeit, als ein komplettes Array in ein Datenfeld zu schreiben?

3 Antworten zur Frage

Bewertung: 5 von 10 mit 1633 Stimmen

Videos zum Thema
YouTube Videos

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.


php
Wie kann ich unter Mediawiki den Image-Upload freischalten?

- liegt es nicht. Hat jemand eine Idee? Im File LocalSettings.php in der Zeile # $wgDisableUploads = false; das # wegnehmen -


mathematik
Schwierige Physikaufgabe

- k=wurzel aus 2kg*9,81m/s²:3s also k= ca.2,56 sag mal wieviele Aufgaben hast du denn hier gepostet? Vielleicht solltest -


umfrage
Wie weit würdet ihr gern in die Zukunft sehen können?

- man die Gesamtheit betrachtet, würde ich gerne wissen, wie es in 500 Jahren aussieht! Ich würde auch nicht wissen -