Mehrere Werte aus Formular in die Datenbank schreiben

dennis-sauer

Erfahrenes Mitglied
Hallo zusammen,

ich suche heute verzweifelt eine einfache Möglichkeit, mehrere Werte in eine Datenbank zu schreiben ohne den Code völlig aufzublähen.

Während der Schicht können technische Störungen auftreten, so sollt der Mitarbeiter diese Eintragen können.

Datenbank ist so strukturiert

id, schicht_id, art, desc, userid, status

Nun können während der Schicht auch gleich mehrere Störungen auftreten. So habe ich die benötigten Felder gleich 4 mal eingebaut. Störung 1 ... Störung 2 usw...

Wie schreibe ich das nun in die Datenbank? Jedes input heißt ja anders. art_1, desc_1, userid_1, status_1 und dann gehts weiter mit 2 - 4.

Ich habe keine Lust gleich 4 "Abfragen" zu erstellen.

Gibt es da eine alternative Lösung!?

Grüße und Dank

Dennis
 
Zumindest bei MySQL ist es möglich – aber ich vermute mal auch bei allen anderen SQL-Dialekten –, dass man das wie folgt angibt:
SQL:
INSERT INTO
  tabellenname
  (spalte_1, spalte_2, spalte_3, ...)
VALUES
  (wert_für_spalte_1_1, wert_für_spalte_2_1, wert_für_spalte_3_1, ...),
  (wert_für_spalte_1_2, wert_für_spalte_2_2, wert_für_spalte_3_2, ...),
  (...)
 
Vielleicht habe ich es falsch verstanden, aber im Grunde brauchst du die Felder nur einmal.
Deine Tabelle bekommt eine Spalte StoerungsID mit Autoinkrement und bei jedem Eintrag wird halt eine neue Zeile angelegt und die Störung hochgezählt. Wenn du das Datum des Eintrags mit abspeicherst, kannst du das nachher prima filtern.
Also die Spalten sähen dann so aus:
ID | UserId | Art der Störung | Beschreibung | Datum
Id wird automatisch erzeugt, und Datum kannst du mit deinem Auswerteskript eintragen.
Die Inputs wären also User, Art und Desc aber halt nur einmal.
 
Hallo zusammen,

danke erstmal für eure Antworten. Die Variante von "einfach nur crack" war gut und simpel, wohl zu simpel. Es klappt nicht! Der erste Eintrag wird geschrieben der zweite allerdings nicht.

@ikosaeder: Die Störungen werden alle erst am Ende der Schicht gespeichert und abgeschickt. Das ist quasi nur ein Dienstbuch, welches geöffnet bleibt, bis zum Ende der Schicht und dann gespeichert wird. Daher gibt es nicht einfach nur ein Feld, welches immer wieder genutzt werden kann.

Ok ich glaube ich habe den Fehler gefunden. Ich muss leider die txtdbapi benutzen, weil ich keine andere Möglichkeit habe. Und finde nun folgendes im Manual:

Nicht unterstützt

- INSERT mit SELECT
- Mehrere Datensätze einfügen (in einem SQL Statement)
- Gruppierende Funktionen wie zB MAX(), MIN() etc. (was auch gar keinen Sinn machen würde!)
- Alles was nicht irgendwie unter Syntax zu finden ist

Siehe Punkt 2. Das wird dann wohl nix!
 
Zurück