php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.02.2010, 20:37  
Neuer Benutzer
 
Registriert seit: 21.02.2010
Beiträge: 22
PHP-Kenntnisse:
Anfänger
frustrated ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Erledigt] Fremdschlüssel eintragen bei 2 Tabellen

Hallo,

meine Frage wird ziemlich trivial sein, aber leider hat mir die Suche nicht weitergeholfen.

Ich habe folgendes Problem:

Über ein Formular schreibe ich in Tabelle 1: FirmenID(per autoincrement, primärschlüssel) und den Firmenname.

Tabelle 2 erhält Adressdaten, und auch eine ID(adressid(autoincrement, primärschlüssel).

Die Daten werden in dem Formular über Textfelder eingegeben und per INSERT INTO eingetragen (dabei hat jede Tabelle eine eigene Abfrage, sodass die oben genannte Daten in die Tabelle eingetragen werden).


Jetzt zu meinem Problem:
in Tabelle 1 habe ich noch eine Spalte (adessid) für den Fremdschlüssel angelegt. Dieser wird durch das Argument NOT NULL immer auf 0 gesetzt da es nicht die adressid der tabelle 2 bekommt.

Zusammenfassend: Ich will per Formular Daten in 2 verschiedene Tabellen eintragen (spalte für Fremdschlüssel ist in Tabelle 1 vorhanden), schaffe dies auch, allerdings bekomme ich die Beziehung zwischen den Datensätzen mithilfe des Fremdschlüssels nicht gebacken.


Seid nicht zu hart zu mir

Freue mich über jede Hilfe!
frustrated ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 21.02.2010, 23:28  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Hallo, willkommen im Forum!

Also dein Konzept scheint mir etwas unsauber zu sein. Ein Fremdschluessel der auf 0 steht ist so nicht korrekt. Entweder es ist ein Fremdschluessel und damit immer definiert, oder eben nicht. Was machst du denn, wenn der Benutzer keine Adresse eingibt und damit einen ungueltigen Zustand in der DB hinterlaesst? Ich wuerde statt dem INSERT in die Firmentabelle die Daten zwischenspeichern (Session) und erst wenn alles korrekt in allen Formularen ausgefuellt wurde, alle Daten mit einer Transaktion (benoetigt innoDB MySQL-Engine, also nicht MyISAM) in der DB ablegen.

Wie auch immer: Mit mysql_insert_id() kannst du den AUTO INCREMENT Wert fuer die Adresse (und auch fuer die Firma) abfragen und mit einem UPDATE entsprechend die Spalte der Firma aktualisieren.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 22.02.2010, 00:16  
Neuer Benutzer
 
Registriert seit: 21.02.2010
Beiträge: 22
PHP-Kenntnisse:
Anfänger
frustrated ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke für deine Hilfe.

Die Felder müssen nicht gefüllt sein, von daher sollte meine zugegebenermaßen tatsächlich unsaubere Methode zumindest vorerst ausreichen. Hinzukommt dass ich keine Ahnung habe wie ich eine sogenannte Session erstellen sollte (Meinst du damit die Überprüfung der Textfelder & Ausgabe einer Fehlermeldung bei nicht korrekter Eingabe?).

Nichtsdestotrotz habe ich jetzt mysql_insert_id() eingebaut, bekomme aber immer den Wert 0 geliefert. (ich glaube jedoch nicht das dies damit zusammenhängt, dass bisher immer in Tabelle 1 als Fremdschlüssel 0 eingetragen wurde, da hier das Feld einfach keine Wert bekam und als NOT NULL deklariert ist).


Hier ein Ausschnitt meiner Bemühungen(Ich hoffe es ist nicht der Super-Gau):

PHP-Code:
$insert1="INSERT INTO adresse (festnetz1,festnetz2,mobil,fax,email,strasse,plz,stadt)
                VALUES ('{$_POST['festnetz1']}','{$_POST['festnetz2']}','{$_POST['mobil']}','{$_POST['fax']}','{$_POST['email']}','{$_POST['strasse']}','{$_POST['plz']}','{$_POST['stadt']}')"
;
          
$var mysql_insert_id ();
          
$insert2="INSERT INTO firma (firmname,adressid)
                   VALUES ('{$_POST['custname']}','{$var}')"

          
$ergebnis1=mysql_query($insert1);
          if(!
$ergebnis1)
            echo 
"Tabelle nicht gefunden";
          else  {
            
$ergebnis2=mysql_query($insert2);
            if(!
$ergebnis2)
              echo 
"Tabelle nicht gefunden";
            else 
              echo 
"\"{$_POST['custname']}\" wurde angelegt" 

Vielleicht kannst du oder andere mir weiterhelfen?
frustrated ist offline   Mit Zitat antworten
Alt 22.02.2010, 01:23  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

mysql_insert_id() macht erst Sinn, NACH dem du den Eintrag auch wirklich an mysql_query() uebergeben hast, sprich auch etwas eingetragen sein worden kann. In Zeile 1 definierst du nur eine Zeichenkette sonst nichts, demnach kann die folgende Zeile mysql_insert_id() ueberhaupt keinen Sinn ergeben.

Beachte, dass dein Code vermutlich offen fuer SQL-Injections ist.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 22.02.2010, 21:50  
Neuer Benutzer
 
Registriert seit: 21.02.2010
Beiträge: 22
PHP-Kenntnisse:
Anfänger
frustrated ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hat geklappt danke dir.
frustrated 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
Mehrer Tabellen aus Datenbank auslesen? Blade JavaScript, Ajax und mehr 5 17.11.2009 16:08
[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
Richtiges Zählen von Einträgen via Vergleich von 2 Tabellen??? estebu PHP Tipps 2009 12 17.02.2009 20:08
Fremdschlüssel eintragen Mitch26 PHP Tipps 2008 2 02.12.2008 11:18
in einer abfrage ermitteln ob mehrere tabellen existieren? litterauspirna Datenbanken 7 28.10.2008 19:33
[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
Abfrage über drei und mehr Tabellen querfisch Datenbanken 3 27.03.2007 21:12
Join-Abfrage über mehrere Tabellen sinai Datenbanken 3 04.02.2006 13:05
[Erledigt] abfrage mehrere tabellen PHP Tipps 2005-2 3 31.10.2005 21:57
[Erledigt] Selectanfrage an eine Datenbank,aber aus mehreren Tabellen Datenbanken 2 26.10.2004 07:23
[Erledigt] fulltext suche priorität von tabellen setzen Datenbanken 1 09.08.2004 15:26

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
fremdschlüssel eintragen, php fremdschlüssel, http://www.php.de/datenbanken/64952-erledigt-fremdschluessel-eintragen-bei-2-tabellen.html, mysql ein fremdschlüssel mehrere tabellen, mysql fremdschlüssel eintragen, feld des fremdschlüssels nicht gefunden, fremdschlüssel zu ein tabelle einfügen, wert in einem formular eingeben in 2 tabellen eintragen, fremdschlüssel, php formular fremschlüssel miteintagen, php formular fremschlüssel, kein zweiter fremdschlüssel mysql, php eintragen in 2 tabellen, php in 2 tabellen eintragen, php in 2 tabllen eintragen, php in in 2 tabellen eintragen, zwei tabellen fremdschlüßel in datenbank einfügen php, mysql \mehrere fremdschlüssel\, oo fremdschlüssel, mysql abfrage zwei fremdschlüssel

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:51 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