Via php/html etwas in die datenbank schreiben

SQL, Dateimanagement - Sprachunabhängige Datenhaltung
sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Via php/html etwas in die datenbank schreiben

Beitrag von sashpta » Mi Jun 22, 2016 9:05 pm

Geht nur wenn ich nichts für "username" eingebe
sonst kommt diese Meldung:
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`forum`.`eintrag`, CONSTRAINT `eintrag_ibfk_1` FOREIGN KEY (`username`) REFERENCES `user` (`Username`))

mfro
Beiträge: 346
Registriert: Mi Jan 16, 2013 4:58 pm

Re: Via php/html etwas in die datenbank schreiben

Beitrag von mfro » Mi Jun 22, 2016 9:23 pm

sashpta hat geschrieben:Geht nur wenn ich nichts für "username" eingebe
sonst kommt diese Meldung:
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`forum`.`eintrag`, CONSTRAINT `eintrag_ibfk_1` FOREIGN KEY (`username`) REFERENCES `user` (`Username`))
'username' muss natürlich in der user-Tabelle existieren. Daß es mit 'nichts' geht, liegt daran, daß wir 'NOT NULL' vergessen haben...

So geht's jedenfalls:

Code: Alles auswählen

CREATE TABLE user (Username CHAR(16) PRIMARY KEY, Email CHAR(32), Password CHAR(16));
CREATE TABLE eintrag (eintragID INT AUTO_INCREMENT PRIMARY KEY,
                      username  CHAR(16),
                      INDEX user_ind(username),
                      FOREIGN KEY (username) REFERENCES user(Username)
                      ON DELETE CASCADE);
INSERT INTO user (Username, Email, Password) VALUES ('Sepp', 'sepp@sepp.com', 'geheim');
INSERT INTO eintrag (username) VALUES ('Sepp');
SELECT * FROM eintrag;
DELETE FROM user WHERE Username = 'Sepp';
It's as simple as that. And remember, Beethoven wrote his first symphony in C.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Via php/html etwas in die datenbank schreiben

Beitrag von sashpta » Mi Jun 22, 2016 9:45 pm

Danke, klappt :)

Also muss ich immer wenn ich etwas in "user" speicher den selben Namen auch in "eintrag" speichern oder? weil sonst ist nicht in der Tabelle "eintrag".

Wenn ich das dann auf nen Forumeintrag übertrage heißt das quasi, dass ich mit HTML ein Eingabefeld mache, das was da eingegeben wird mit PHP in einer Variable speicher und dann die Variable anstatt z.B. nen Namen rein mache. Das mit dem Namen mache ich dann bei "user" und "eintrag". Oder hab ich da was falsch verstanden?

mfro
Beiträge: 346
Registriert: Mi Jan 16, 2013 4:58 pm

Re: Via php/html etwas in die datenbank schreiben

Beitrag von mfro » Mi Jun 22, 2016 10:05 pm

sashpta hat geschrieben:...Oder hab ich da was falsch verstanden?
Nein, das passt schon.

Allerdings macht man das eigentlich anders herum.

Zuerst werden die Datenbanktabellen bzw. Relationen definiert und anschliessend normalisiert (vereinfacht). Wenn das Datenbankmodell steht, macht man sich Gedanken, wie das UI dazu aussehen soll.

Eine (ernsthafte) Datenbank ist nichts, wo man einfach immer wieder ein Stück "anklebt".
It's as simple as that. And remember, Beethoven wrote his first symphony in C.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Via php/html etwas in die datenbank schreiben

Beitrag von sashpta » Mi Jun 22, 2016 10:10 pm

Hmm oke, mal sehen wies so klappt :D

Wenn ich ein Eingabefeld mit HTML mache, ist das ja dann so:

Code: Alles auswählen

 <form action="action_page.php">
  First name:<br>
  <input type="text" name="firstname" ><br>
  Last name:<br>
  <input type="text" name="lastname"><br><br>
  <input type="submit" value="Submit">
</form> 
allerding sende ich da ja das was eingegeben wurde an die "action_page.php"
Wie mache ich, dass denn, dass es anstatt dahin gesendet zu werden in die Datenbank gepackt wird ?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Via php/html etwas in die datenbank schreiben

Beitrag von Xin » Mi Jun 22, 2016 11:24 pm

sashpta hat geschrieben:Danke, klappt :)

Also muss ich immer wenn ich etwas in "user" speicher den selben Namen auch in "eintrag" speichern oder? weil sonst ist nicht in der Tabelle "eintrag".
Du kannst nichts in Eintrag schreiben, was keinem User zugeordnet werden kann.

Ich weiß nicht, wo Du die CREATE TABLE Befehle herhast, aber es wäre schon von Vorteil, wenn Du verstehst, was das bedeutet :D

Vielleicht liest Du Dich erstmal in den Aufbau von Datenbanken ein, liest mal die Normalformen nach und "designst" zuerstmal die Tabellen und die Relationen dazwischen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Via php/html etwas in die datenbank schreiben

Beitrag von sashpta » Do Jun 23, 2016 5:53 am

Ja also theoretisch weiß ich das aber ich wusste z.b. Nicht dass man da auch Beziehungen in der Praxis machen kann :o

Antworten