php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.11.2011, 08:18  
Neuer Benutzer
 
Registriert seit: 17.11.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
Nishijo befindet sich auf einem aufstrebenden Ast
Standard Foreign Key Beziehung mit anderen Tabellen

Hallo erstmal,

ich hoff Ihr könnt mir helfen, bin seit paar Tagen schon am durchdrehen weil das nicht so ganz klappt bzw ich das noch nicht so ganz versteh.

Ich hab zurzeit 12 Tabellen

table_tl1
table_tl2
table_tl3
table_tl4
table_tl5
table_tl6
usw . . .

usw.
Alle haben einen Primarykey der vom Typ INT ist und auf auto_increment steht. Die Tabellen haben unterschiedliche weitere Felder z.b

table_tl1 id_table_tl1[PK], Vorname, Name, Geburtsort, Tel etc
table_tl2id_table_tl2[PK], BLZ, Name, Vorname, Bankname etc
table_tl3 id_table_tl3[PK], Artikel, Name, Preis
table_tl4 id_table_tl4[PK], Option

Sobald der Kunde jetzt bestellt werden in meine mysql Datenbank die Daten eingetragen und der Primarykey automatisch gesetzt. Mein Problem ist jetzt, das wegen den Optionalen Feldern der Primarykey ungleichmäßig nach oben geht und ich somit nicht feststellen kann, was welcher Kunde genau bestellt hat.

Dazu hab ich
table_tl12 die einen Primarykey hat der auch vom typ int und auf auto_increment ist und Foreignkeys die die Primärschlüssel der anderen Tabellen sind.

die Tabellen sind alle auf InnoDB, was ich jetzt aber im PHP nicht hinbekomme ist, das er mir die einzelnen Daten in table_tl12 einträgt und ich somit feststellen kann von wem was kam.

Mein Freund meinte ich solle einfach alles in die Session hauen und gut ist.
PHP-Code:
insert into resulttabelle (idkdidproductidVALUES(''$_SESSION["KDID"], $_SESSION["ProductID"]) 
Was ich dann aber nicht ganz versteh ist, wie ich an diesen fortlaufenden Schlüssel komme.

Oder macht das so alles keinen Sinn?

Schonmal danke für die hilfe
Nishijo ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.11.2011, 08:34  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.140
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Hilft dir das?

http://php.net/manual/de/function.mysql-insert-id.php
__________________
Keine Zahl != ein Zeichen das keine Zahl ist
hausl ist offline   Mit Zitat antworten
Alt 18.11.2011, 08:35  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

von der Logik her klingt das noch nicht ganz sauber

aber was du suchst ist last insert id -> bzw. deren PHP Entsprechung

mysql_insert_id()-> liefert den auto_increment des vorherigen Insert-Befehls.
Das musst du nunmehr nach jedem Insert in die beteiligten Tabellen aufrufen (und die ID geeignet zwischenspeichern), damit du dann die Fremdschlüssel geeignet setzen kannst
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 18.11.2011, 08:41  
Neuer Benutzer
 
Registriert seit: 17.11.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
Nishijo befindet sich auf einem aufstrebenden Ast
Standard

danke erstmal für die beiträge

hmm dacht ich mir fast dass das nicht ganz sauber von der logik ist...weiß aber auch nicht ganz wie ich das anders machen sollte. ja das mit mysql_insert_id hatte ich auch schon gesehen gehabt

das problem was ich aber hatte war das zwischenspeichern das er nicht immer wieder eine neue tabelle anlegt, muss ich das dann in ner session für jeden eintrag mitnehmen und dann im letzten in die table_tl12 eintragen?

bzw was ich als bischen nervig sehe ist, das in meiner table_tl12 dann nur nummern stehen, kann man das auch eleganter lösen?
Nishijo ist offline   Mit Zitat antworten
Alt 18.11.2011, 08:45  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.140
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Ev. im Wesentlichen sowas vielleicht? Kannst sonst bei fertigen Shoplösungen abgucken gehn wie die deren DB Design machen.

Code:
---------
tab_kunde
---------
id     name
1001   Huber


----------------
tab_bestellungen
----------------
id    kund_id  bestellt_timestamp
2001  1001     2011-11-18 08:20:00


------------------------
tab_bestellungen_artikel
------------------------
id     bestellung_id  artikel_id
3001   2001           5001  
3002   2001           5002  
3003   2001           5003  


-----------
tab_artikel
-----------
id    art_bez
5001  Legohaus
5002  Fussball
5003  Fahrrad
__________________
Keine Zahl != ein Zeichen das keine Zahl ist

Geändert von hausl (18.11.2011 um 08:57 Uhr).
hausl ist offline   Mit Zitat antworten
Alt 18.11.2011, 08:57  
Neuer Benutzer
 
Registriert seit: 17.11.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
Nishijo befindet sich auf einem aufstrebenden Ast
Standard

genau, in deinem fall brauch ich diese ergebnisstabelle dann gar nicht oder?
Nishijo ist offline   Mit Zitat antworten
Alt 18.11.2011, 08:59  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

zuallererst solltest du dich natürlich - wie von hausl vorgeschlagen - von deinen nummerierten Tabellen Trennen, das sieht erstens blöd aus - und zweitens hast du nach spätestens 3 Stunden in einem anderen Projekt vergessen, welche Daten in welcher Tabellennummer stecken - warum nennst du Tabelle 1 nicht Kundendaten und Tabelle 2 zum Beispiel Zahlungsweg - oder so ähnlich.. nimm sprechende Tabellennamen, damit du auch nach Wochen auf den ersten Blick siehst, welche Daten dort drinstehen

Und dann noch ...

deine Tabelle von der du die ganze Zeit redest - das hört sich so an, als ob du dort für jeden gekauften Artikel / jede Option eine weitere Spalte anlegen willst ... so herum benutzt man die Fremdschlüssel aber nicht - trage lieber die Optionen aus Tabelle 4 oder 5 mit einem Fremdschlüssel zur Zugehörenden Bestellung ein, dann bleiben die Daten sauberer.. denn was machst du, wenn jemand so viele Optionen auswählt, dass deine Tabelle zu klein ist ? und die Auswertung einer variablen Spaltenanzahl ist auch eher mühsam ....

wenn du etwas drüber nachdenkst, siehst du leicht, dass hausl's Ansatz viel flexibler und gleichzeitig einfacher ist
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 18.11.2011, 09:13  
Neuer Benutzer
 
Registriert seit: 17.11.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
Nishijo befindet sich auf einem aufstrebenden Ast
Standard

Das mit den Namen war nur für hier, meine Tabellen besitzen alle Namen um wie du schon sagst die Übersicht zu bewahren, Kundendaten, Artikel, Optionen, Bankdaten etc .

Ja das dachte ich mir auch schon das man die so nicht benutzt bzw das ich auf dem Holzweg mit der Struktur bin.

Das bedeutet also im groben das was oben schon von hausl bzw dir gepostet worden ist mit dem mysql_insert_id

(Das man die Produkt_ID hier nicht reinnimmt weiß ich, ist nur für die schnelle um meinen Gedanken darzustellen wenn ich vorher schon einen insert into hatte, richtig?
PHP-Code:
$foreignkey mysql_insert_id();

$sql "INSERT INTO Kunde (Anrede, Vorname, Name, Produkt_ID)VALUES('" $_SESSION['anrede'] . "','" $_SESSION['vorname'] . "','" $_SESSION['name'] . "','$foreignkey')"
Nishijo ist offline   Mit Zitat antworten
Alt 20.11.2011, 00:50  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Bitte erspar uns Sachen, die Du „eigentlich ganz anders machst“. Das ist für eine Diskussion wenig zielführend.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySQL Datenbanken Tabellen gegenseitig aktualisieren Mazze Datenbanken 6 18.10.2011 20:07
[Erledigt] Probleme mit dem Foreign key tobi_s2 Datenbanken 5 22.06.2011 14:58
[Erledigt] INSERT bei zwei Tabellen mit Zwischentabelle P4trik Datenbanken 5 22.06.2011 08:34
[Erledigt] Suche zwischen 2 Tabellen larabad PHP Einsteiger 11 30.03.2011 11:59
[Erledigt] Mehrere MySQL Tabellen mit PHP abfragen DonMuchacho Datenbanken 7 27.07.2009 19:47
Tabellen miteinander verknüpfen Suzi Datenbanken 12 27.05.2009 11:40
[Erledigt] Limit auf Ergebnissumme mehrerer Tabellen Frank Datenbanken 8 02.09.2008 11:33
Tabellen für Vokabeltrainer anlegen... anonym01 PHP Tipps 2008 9 03.03.2008 21:18
PHP Array in MYSQL Tabellen schreiben Matt Datenbanken 1 26.02.2008 19:43
5 tabellen miteinander verknüpfen. miwo Datenbanken 2 22.09.2007 11:17
abfrage aus zwei tabellen mit beziehung Dilandau Datenbanken 17 11.01.2007 19:06
Anhand Union Spalte aus anderen Tabellen selekt. und sort. Datenbanken 1 02.08.2005 11:34
MySQL Daten aus verknüpften Tabellen auslesen ? PHP Tipps 2005-2 2 27.06.2005 03:21
[Erledigt] foreign key anzeigen lassen Datenbanken 0 20.06.2005 16:03
Tabellen in Beziehung setzen!! Boennchen Datenbanken 4 23.07.2004 13:20

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql insert into foreign key, mysql insert von anderer tabelle foreign key, mit php fremdschlüssel, tabelle foreign key, insert into zwei tabellen gleichzeitig foreign key

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:33 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum