Moin Leute,
da ich mich erst seit sehr kurzer Zeit mit Mysql auseinandersetze aber nun schnell einer Lösung für ein Problem bedarf, hoffe ich Jemand kann mir hier helfen oder mal wieder Denkanstöße geben.
Also es geht um Folgendes: Ich habe ein großes Html Formular, dieses kann verschiedene Daten enthalten (logisch),
diese nun in einer DB zu speichern ist kein Problem, allerdings frage ich mich wie ich das am „dynamischsten“ löse, und zwar um die Formulardaten zu einem späteren Zeitpunkt nochmal verwenden zu können (innerhalb einer If Abfrage),
je nachdem wie die Formulardaten ausgefallen sind soll dann jeweils anderer Html Code generiert werden und in der Datenbank gespeichert.
Bsp: Formular fragt mit „type/text“, „Wie geht es dir?“, dann kann man bspweise. schreiben „gut“ oder „schlecht“, gut erzeugt z.B.: „
hallo
“, schlecht hingegen: „
tschüss
“…
Nun möchte ich aber eine Seite die den kompletten generierten Html Code verwendet
(
hallo
tschüss
)
Und dann, soll noch ein Button mitgeliefert werden mit dem ich einzelne Formularergebnisse in eine andere Spalte verschieben kann, sehr schwer zu erklären, hoffe ihr versteht mich
Das hat mit der Datenbank weniger zu tun. Du musst die eingetragenen Werte auswerten (ohne sie zwingend zu speichern) und entsprechend die Ausgabe anpassen. Dafür gibt es mehrere Wege:
[ul]
[li]Der Manuelle: Du schickst das Formular ab und prüfst mit PHP (ich nehme einfach mal an dass Du das verwendest) bei der Verarbeitung was wie ausgefüllt wurde. Abhängig davon gibst Du weitere Formularfelder zum Ausfüllen aus oder nicht. Die schon eingegebenen Werte kannst Du entweder direkt in der DB speichern oder in einer Session-Variable für die spätere Speicherung sichern.[/li][li]Der Automatische: „automatisch“ heißt hier, dass der Nutzer bei Auswahl einer Frage das Formular nicht abschicken muss sondern abhängig von seiner Auswahl sich das Formular direkt ändert. Dafür brauchst Du mindestens JavaScript, idealerweise auch noch AJAX und auf Serverseite PHP womit Du die eingegebenen Daten verwerten und die Ausgabe im Browser anpassen kannst.[/li][/ul]
Welcher Weg für dich optimal ist musst Du selbst entscheiden.
Manueller Weg … Habe jetzt nochmal drüber nachgedacht, nun möchte ich für jeden Eintrag eine neue Spalte in der DB erzeugen, kein Problem, ABER, er soll hochzählen, nicht überschreiben, also praktisch „erstelle die spalte ‚code1‘, wenn die schon vorhanden ‚code2‘“, und immer höher … Dürfte doch einfach sein? Weiß aber nicht wie
Wenn Du für jeden Eintrag eine neue Spalte erzeugen willst, würde ich dir raten dein Datenbankmodell nochmal zu überarbeiten. Eine Datenbanktabelle sollte nicht durch Aktionen von Nutzern erweitert werden.
Hmm, vielleicht mit AUTO INCREMENT? Dass ich nicht eine neue Spalte für jeden Eintrag erzeuge, sondern jeder Eintrag eine ID hat innerhalb einer Spalte…
[PHP]CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
(‚dog‘),(‚cat‘),(‚penguin‘),
(‚lax‘),(‚whale‘),(‚ostrich‘);[/PHP]
Also wie wende ich das auf eine bereits vorhandene Tabelle an? …
Ich habe keine Tabelle mit dem Namen animals… Den Quellcode habe ich in einem Tutorial gefunden, wie ich gemerkt habe kann ich einem „Text“ Typ kein Auto Increment zuweisen … Ich weiß nicht wie ich es anstellen soll, also ich möchte praktisch Html Code in eine Spalte speichern, jedes mal wenn neuer Html Code zu der Spalte hinzugefügt wird, soll dieser sozusagen mit einer ID versehen werden um Löschen, Verschieben, whatever zu erleichtern… Später dann möchte ich den Html Code aus der Spalte auslesen und ausgeben…
Das oben wollte ich umformen zu einer Erweiterung meiner bereits erstellten Tabelle, ich hab keine Ideen mehr langsam, wie ich so etwas einfaches nun regele
Ja, für den Fall ist eine Integer-Spalte mit auto_increment sinnvoll und sollte von dir verwendet werden. Es klingt aber auch so als würdest Du erst am Anfang stehen. Ich würde dir raten einige Datenbankgrundlagen durchzulesen damit Du dein Datenbankmodell optimal vorbereiten kannst. Spätere Änderungen, wenn schon Daten erfasst wurden, können schwierig sein.
Also für andere die ähnliche Probleme haben, habe es nun ganz anders gelöst, nach Rücksprache mit Freunden:
Für alle zu speichernden Werte eine Zahl festgelegt und später eine Php Funktion mit Cases (Case 1: "Db 1 anzeigen o.ä.)