Hallo!
Ich kann nun schon etwas mit MySQL umgehen, bin aber nicht gerade der FREAK. Und die aktuelle Aufgabe überfordert mich ehrlich gesagt etwas.
Aufgabenstellung:
Ich habe zwei Datenbanken:
db_shop1
db_shop2
Beide haben eine Tabelle "tb_articles", die in der Struktur auf beiden DBs gleich ist. Die Spalten sind:
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`price` double NOT NULL DEFAULT '0',
`impressions` int(11) NOT NULL DEFAULT '0',
Es soll nun nur der shop1 im backend gepflegt werden. Die Veränderungen dort müssen aber auch in den shop2 übertragen werden.
Erst dachte ich, das könnte man in Navicat über die Synchronisierung handhaben. Aber dann wird alles einfach übertragen und es gibt aber Einschränkungen. Es soll nicht alles
absolut synchron sein:
Die Spalte `impressions` soll mit Ihrem Wert erhalten bleiben.
Ich bräuchte also eine Abfrage, die folgendes vornimmt (sorry schon mal für die wahrscheinlich dilletantische Ausdrucksweise, die jetzt kommt ;-)):
Lösche alle Einträge in shop2.tb_articles, wenn shop2.tb_articles.id nicht in shop1.tb_articles.id vorkommt.
-> Damit lösche ich in Shop2 alles, was in Shop1 über das backend gelöscht wurde.
Update alle Einträge in shop2.tb_articles, wenn shop2.tb_articles.id in shop1.tb_articles.id vorkommt, nur den Wert im Feld shop2.tb_articles.impressions nicht.
-> Damit übertrage ich die Änderungen an Artikeln, im backend von Shop1 verändert wurden an Shop2. Nur nicht die impressions (Klickzahlen), denn die kommen ja aus Shop2 und sollen erhalten bleiben.
Übertrage alle Einträge von shop1.tb_articles nach shop2.tb_articles, wenn shop1.tb_articles.id nicht in shop2.tb_articles.id vorkommt.
-> Damit übetrage ich alle Artikel an Shop2, die in Shop1 über das backend angelegt wurden.
Ich habe inzwischen gesehen, dass man wohl auch mehrere DB-Verbindungen gleichzeitig offen haben kann. Bisher sah das bei mir immer so aus:
PHP-Code:
$db_connected = mysql_connect($db_host, $db_user, $db_pwd);
if (!$db_connected) {
die('Die Verbindung zur Datenbank ist leider gescheitert! '.mysql_error());
}
$db_selected = mysql_select_db($db_name, $db_connected );
if (!$db_selected) {
die('Die Selektion der Datenbank ist leider gescheitert! '.mysql_error());
}
Damit hatte ich
eine Verbindung offen und habe dann eben mit mysql_query() diverse SELECTs, UPDATEs, INSERTs usw. abgearbeitet.
Kann man aber nicht auch zwei Datenbank-Verbindungen offen haben, wenn diese auf demselben Server liegen? Das is hier der Fall. Dann müsste das doch irgendwie so gehen:
PHP-Code:
PHP-Code:
$db_shop1 = mysql_connect($db_host1, $db_user1, $db_pwd1);
if (!$db_shop1) {
die('Die Verbindung zur Datenbank ist leider gescheitert! '.mysql_error());
}
$db_shop2 = mysql_connect($db_host2, $db_user2, $db_pwd2);
if (!$db_shop2) {
die('Die Verbindung zur Datenbank ist leider gescheitert! '.mysql_error());
}
Wobei $db_host1 und $db_host2 ja wohl denselben Inhalt hätten.
Und so wie man "Tabelle.Spalte" in einer query angeben kann, müsste man doch auch "Datenbank.Tabelle.Spalte" angeben können oder?
Geht das irgendwie so? Oder bin ich völlig auf dem Holzweg?
Komme an dem Punkt einfach nicht weiter, weil man im Internet und auch in den diversen Büchern die ich schon habe imemr Beispiele für die ARbeit mit einer Datenbank findet ...
Danke schon mal für jeden Ansatzpunkt!
AS