Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
biltweld
Threadersteller
Dabei seit: 01.06.2006
Ort: köln
Alter: 42
Geschlecht: -
|
Verfasst Do 01.06.2006 23:45
Titel Datensätze in verbundene Tabellen einfügen mit Php? |
|
|
Hallo,
Ich habe ein kleines Problem, oder besser gesagt zwei:
1. Ich habe ein vorhandenes Script umgeschrieben, welches Daten in eine Mysql tabelle haut,
bzw löscht, ausgibt dass ein Datensatz bereits existiert.
Nun muss dieses geänderte und auch schon (soweit) laufende script
dahingehend verändert werden, dass es mehrere Tabellen per GET anspricht.
Es existieren drei Tabellen, von denen jede eine ID mit einer jeweils anderen gemeinsam hat.
Diese habe ich als 'Primary key' gesetzt.
Wenn die Einstellungen der Datenbank richtig sind, muss ich dann im script per ' insert into ',
'update' bzw 'delete' jede Tabelle einzeln ansprechen oder kann ich die Variablen einfach allle nacheinander
übergeben lassen?
Oder geht es tatsächlich nur über einen anderen Weg? Das ist doch eigentlich keine aussergewöhnliche Situation?!
Bisher gibt er mir dann eine Fehlermeldung : "Column count doesn't match value count at row 1".
Ich habe aber durchgezählt und das passte alles.(Spalten, Werte, Variablen der Werte).
Warscheinlich ist es ganz einfach, aber ich habe nichts gefunden, was mir da weiterhelfen konnte.
2. Ich bin blutiger Anfänger!
Für einen kleinen Tipp oder eine gute Idee wäre ich sehr dankbar!
Zuletzt bearbeitet von biltweld am Do 01.06.2006 23:51, insgesamt 3-mal bearbeitet
|
|
|
|
|
tommy-p
Dabei seit: 21.01.2004
Ort: Cottbus
Alter: 38
Geschlecht:
|
Verfasst Fr 02.06.2006 08:37
Titel
|
|
|
Bitte poste mal deine Tabellenstruktur (die relevanten Teile) sowie deinen Code. Und beschreibe genau, was wo eingetragen werden soll. Deine Frage ist noch zu algemein.
|
|
|
|
|
Anzeige
|
|
|
dastef
Dabei seit: 03.11.2003
Ort: -
Alter: -
Geschlecht:
|
Verfasst Fr 02.06.2006 08:43
Titel
|
|
|
tommy-p hat geschrieben: | Bitte poste mal deine Tabellenstruktur (die relevanten Teile) sowie deinen Code. |
Und natürlich das Query nicht vergessen das ausgeführt werden
soll ..
|
|
|
|
|
biltweld
Threadersteller
Dabei seit: 01.06.2006
Ort: köln
Alter: 42
Geschlecht: -
|
Verfasst Fr 02.06.2006 14:22
Titel
|
|
|
Danke für die Antworten erstmal!
Hier die Tabellenstruktur:
1.Tabelle product
Feld Typ Null Standard
proid varchar(32) Nein
protitle varchar(100) Ja NULL
prodesc text Ja NULL
prodescen text Nein
protitleen varchar(100) Nein
und so weiter...
2.Tabelle: productkat
Feld Typ Null Standard
prokid int(11) Nein
proklevel int(11) Nein 1
und so weiter....
3.Tabelle:productwg
Feld Typ Null Standard
proid int(11) Nein
prokid varchar(11) Nein
Code: |
<?php
include_once("");
include("");
aso_header();
echo "test!!!...\n<br><hr><br>";
db_connect();
$proid=strtoupper($_GET ['proid']);
$protitle =$_GET ['protitle'];
$prodesc =$_GET ['prodesc'];
$prodescen=$_GET ['prodescen'];
.
.
.
.
. // und so weiter, alle Variablen(hier nur der ersten Tabelle, da es sonst ja nicht läuft.)
if ($protitle == "TODELETE") {
$query = "delete from usr.......4.product where product = upper(proid)= '$proid'";
}
else {
echo '<HR>';
echo
$proid , $protitle , $prodesc , $prodescen ,
$protitleen , $proprice1 ,$proprice2 , $proprice3 ,
$proprice4 , $proprice5 , $proprice6 , $proprice7 , $proprice8 ,
$prodruck1 , $prodruck2 , $prodruck3 , $prodruck4 , $prodruck5 ,
$prodruck6 , $menge;
echo '<HR>';
$query = "select * from usr_........product where product=upper (proid) = '$proid'";
}
$result = mysql_query($query);
if(mysql_numrows($result)>1)
{
$query = "update usr_...........product SET proid=$proid,
protitle='$protitle',prodesc='$prodesc',prodescen='$prodescen',
protitleen='$protitleen',proprice1='$proprice1',
proprice2='$proprice2',proprice3='$proprice',proprice4='$proprice4',
proprice5='$proprice5',proprice6='$proprice6',proprice7='$proprice7',
proprice8='$proprice8',prodruck1='$prodruck1',prodruck2='$prodruck2',
prodruck3='$prodruck3',prodruck4='$prodruck4',prodruck5='$prodruck5',
prodruck6='$prodruck6',menge='$menge';
where upper (proid) = '$proid'";
}
else
{
$query = "insert into usr..............product values
('0005', ' Kofferanhänger „Voyage“' , 'NULL' , '4' , '4' , 'NULL' , 'NULL' ,
'NULL' , 'NULL' , 'NULL' ,'NULL' , 'NULL' , 'NULL' , 'NULL' , 'NULL' ,
'NULL' , 'NULL' , 'NULL' , 'NULL' , 'NULL')";
}
$result = mysql_query($query);
if (!$result)
{
echo "<hr>";
echo "Artikelnummer: " . $proid .
" - Artikel: ". $protitle .
" - Beschr.: " . $prodesc .
"<br>";
echo "SQL-Query: ".$query."<br>";
echo "<b>FEHLER</b> beim Data-Xfer!<br>";
echo mysql_error()."<br>";
}
else {
echo "<b>Dat geht!!!<br>ArtNr: $proid - $prodesc <br>";
}
aso_footer();
?>
|
Das ist eine Menge Code, ich weiß, vielleicht hilfts aber die Struktur der Datei
direkt zu sehen und eventuell zu schreien: Hey, SOOO GEHT DAS NICHT!
oder besser: ganz einfach das damit hinzukriegen.
Wie krieg ich das Ding jetzt mit allen drei Tabellen verknüpft?
Mit einer geht es wie gesagt. (bis auf das Löschen, das schaff ich aber bestimmt noch zu beheben.)
Das Query steckt unten in den Values drin.
Wie gesagt, das einzige, was ich mit Php vorher mal gemacht habe ist per
Post Daten aus Formularen annehmen,
Eine Seite mit einfachem Passwortschutz
Und die Größe zweier Variablen vergleichen.
Das hier ist einfach ein bischen mehr...
Gruß!
|
|
|
|
|
tommy-p
Dabei seit: 21.01.2004
Ort: Cottbus
Alter: 38
Geschlecht:
|
Verfasst Fr 02.06.2006 15:03
Titel
|
|
|
Zitat: | $query = "select * from usr_........product where product=upper (proid) = '$proid'"; |
"from usr_........product" -> kann man Datenbanken so ansprechen?
Ist das sozusagen der absolute Pfad? Ich kenne nur "from TABELLENNAME".
Ansonsten hast du noch einen Fehler in
Code: | SELECT * FROM * WHERE UPPER(proid) = '$proid'; |
Und zu deiner ursprünglichen Frage:
Zitat: | Wenn die Einstellungen der Datenbank richtig sind, muss ich dann im script per ' insert into ',
'update' bzw 'delete' jede Tabelle einzeln ansprechen oder kann ich die Variablen einfach allle nacheinander
übergeben lassen? |
In deinem Script sprichst du nur eine Tabelle, nämlich "product", an.
Was soll mit den anderen passieren, wenn du sie "einzeln ansprechen"
oder auch gleichzeitig ansprechen willst?
Für mich sieht es so aus, als wenn du nach dem Absenden des Formulars
einen Datensatz die Tabelle "product" einfügen, updaten oder löschen.
Aber wie kommen die anderen beiden Tabellen ins Spiel?
Und dritter Vorschlag meinerseits: die Tabelle "productwg" scheint jedem
Eintrag in der Tabelle "product" eine Kategorie aus der Tabelle "productkat"
zu. Wenn du das machen willst, könntest du auch einfach in der Tabelle
"product" das Feld "prokid" einfügst.
Zuletzt bearbeitet von tommy-p am Fr 02.06.2006 15:04, insgesamt 1-mal bearbeitet
|
|
|
|
|
biltweld
Threadersteller
Dabei seit: 01.06.2006
Ort: köln
Alter: 42
Geschlecht: -
|
Verfasst Fr 02.06.2006 15:44
Titel
|
|
|
Also, erstmal:
Beitrag Verfasst: Fr 02.06.2006 15:03 Titel:
Zitat: |
"from usr_........product" -> kann man Datenbanken so ansprechen?
Ist das sozusagen der absolute Pfad? Ich kenne nur "from TABELLENNAME". |
Habe den Namen nur rausgrenommen, da das hier ein Auftrag ist, aus dem ich diesen glorreichen Teil zur Bearbeitung bekommen habe... usr.... ist der Tabellenname.
Und das geht dann ja auch so.
Zitat: |
In deinem Script sprichst du nur eine Tabelle, nämlich "product", an.
Was soll mit den anderen passieren, wenn du sie "einzeln ansprechen"
oder auch gleichzeitig ansprechen willst? |
Genau das gleiche, also entweder: füge Datensatz ein, sag, der Datensatz ist schon vorhanden, oder lösche einen auf Anweisung. Die Tabellen sollen also schon gleichzeitig angesprochen werden.Die Interface dazu ist schon vorhanden. (Der shopinhaber soll so seine Bestandsliste aktualisieren können.)
Zitat: | Für mich sieht es so aus, als wenn du nach dem Absenden des Formulars
einen Datensatz die Tabelle "product" einfügen, updaten oder löschen.
Aber wie kommen die anderen beiden Tabellen ins Spiel?
|
1.Genau das tut das Script ja.
2.Das ist halt die Frage.
Wie in aller Welt bringe ich es dazu die anderen Tabellen auch zu speisen?
Ich habe es ja auch schon probiert (wie im ersten Post gesagt), es läuft aber nicht.
Die Tabellen des Kunden darf ich nicht ohne weiteres ändern.Das ist ein Problem.
Und frag mich bitte nicht wie jemand wie ich an eine solche Aufgabe kommt...
Danke für den Fehler!
|
|
|
|
|
tommy-p
Dabei seit: 21.01.2004
Ort: Cottbus
Alter: 38
Geschlecht:
|
Verfasst Fr 02.06.2006 16:36
Titel
|
|
|
Jetzt versteh ich so langsam. Mehrere Tabellen gleichzeitig auslesen, das geht.
Aber zum Befüllen, Updaten oder Löschen musst du zwei Queries ausführen.
Damit die Datensätze in verschiedenen Tabellen dieselbe ID haben, hilft dir
die Funktion mysql_insert_id() weiter. Mit ihr kannst du feststellen, welche
auto_increment-ID als letztes eingefügt wurde.
Code: | mysql_query();
$zuletzt_eingefuegte_id = mysql_insert_id(); |
Hilft dir das weiter?
|
|
|
|
|
biltweld
Threadersteller
Dabei seit: 01.06.2006
Ort: köln
Alter: 42
Geschlecht: -
|
Verfasst Mo 12.06.2006 08:44
Titel
|
|
|
GAANZ VIELEN DANK!!!
Entschuldige, dass das so lang gedauert hat. War ein wenig unterwegs.
Habs dann anders gemacht. Die Idee war gut. geht aber auch einfacher.
Habe für jede Tabelle eine query geschrieben uind diese dann einfach hintereinandergesetzt.
Also, nochmal vielen Dank und nen Gruß!
|
|
|
|
|
|
|
|
Ähnliche Themen |
datensätze > in DB > einfügen ...
DreamWeaver: tabellen nebeneinander einfügen
PHP: Datensätze aus DB 3 spaltig ausgeben
Srpy Datensätze verwenden
[mySQL] Datensätze löschen
Ein PHP-Formular - mehrere Datensätze erstellen
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|