dateien aus einer tabelleA der db1 einlesen und in der tabelleB der db2 tun

kokoroko

Grünschnabel
Hallo zusammen,

(bin blutiger anfaenger)
ich wollte daten (eine Spalte) aus einer Tabelle von DB1 lesen und dann holen und in einer Tabelle der DB2 tun.
Es ist so, der php-programm soll jedes mal ueberprufen, ob neue daten in der Tabelle der db1 eingetragen wurde.
Kann jemand mir tipp geben und viellecht die befehle mir auch schreiben. Bin nicht so fit in php.

Hier ist ungefaehr die Strukture der tabellen

strukture db1 tb_users:

id
username
email
type (C)


struktur db2 tb_accounts:

id
accountnumber
username
email
typofaccount
numberofpage

das probleme ist dass,
z.Bsp: wenn die tb_users in db1 upgedatet wird oder neue eintraege hat und "C" hinter type in db1 steht, dann soll den username, email geholt werden und in der tb_accounts von db2 getan werden und numberofpage um 25 erhoehenund accountnumber muss automatisch generiert werden.
"die C zu ueberpruefen ob C steht oder nicht ist auch mein problem" Ich habe ein code gebastelt, vielleicht kann jemand mir es corrigieren.
"Die beiden db liegen auf den selben server".
PHP:
<?php
// db connection 
mysql_connect(......................................);
  
$sql = mysql_query("SELECT db1.value FROM db1.user; // weiss ich nicht mehr);   

// Erstellen von einem neuen Array:  

$query = array();   

// eine Whileschleife  
// hier moechte ich gern pruefen, ob neuer user eingetragen ist und ob "C" im feld typ steht und numberofpage erhoehen. 

while($line = mysql_fetch_array($sql)) {      $query[] = "('".$line['value']."'");  }   

// Hier habe ich nicht vieles verstanden.  
//joins des Query:   

$query = join(",", $query);   

// erzeugung des Insert Query:   
$query = "INSERT INTO db2.tabelle (`value`) VALUES ".$query;   
//   mysql_query($query); 
// soll dann acountnumber gerneriert werden?>

Danke fuer Ihre Hilfe
 
Ich würde überhaupt kein PHP dafür verwenden, das geht prima nur mit SQL-Statements. Vor dem Transportieren der Daten machst du einfach ein LOCK TABLE, damit ausgeschlossen werden kann, das inzwischen jemand was reinschreibt.
 
Hallo saftmeister,

wuerde es so richtig?

1) SELECT db1.value FROM db1.tb_users db1 LEFT JOIN db2.tb_accounts db2 ON
db1.value = db2.value WHERE db2.value IS NULL

2) INSERT INTO db2.tb_accounts SELECT db1.value FROM db1.tb_users db1 LEFT JOIN
db2.tb_accounts db2 ON db1.value = db2.value WHERE db2.value IS NULL

und wie pruefe ich das typfeld wo C stehen muss und wie funktioniert die erhoehung?

Dank
 
Ich kann dir nicht sagen, ob das so richtig ist, auf den ersten Moment siehts erstmal konfus aus. Warum willst du hier einen JOIN machen? Du willst doch nur Daten aus einer Tabelle in die andere Schaufeln.

Erhöhung meinst du damit die ID? Die macht man mit AUTO_INCREMENT, die braucht man dann überhaupt nicht aus der alten Tabelle auslesen. Das wäre auch gefährlich und würde zu inkosistenzen führen.

Wenn die IDs der User nicht mit anderen Sachen zusammen hängen, kannst du das so machen (nur ein Beispiel):

Code:
INSERT INTO newtable (field_1,field_2) SELECT field_old_1, field_old_2 FROM olddb.oldtable;
 
Hallo zusammen,

(bin blutiger anfaenger)
ich wollte daten (eine Spalte) aus einer Tabelle von DB1 lesen und dann holen und in einer Tabelle der DB2 tun.
Es ist so, der php-programm soll jedes mal ueberprufen, ob neue daten in der Tabelle der db1 eingetragen wurde.
Kann jemand mir tipp geben und viellecht die befehle mir auch schreiben. Bin nicht so fit in php.

Warum machst Du nicht einfach aus den beiden tabellen eine?
Oder tust sie quer verbinden? oder splitets die Abfrage?
 
Ich kann die beiden Tabellen nicht zusammen tun. Sie sind von verschiedenen DB. Eine Tabelle ist von joomla und die andere Tabelle ist von einer eigenen db, die unter anderem die accounts verwaltet.(Die steht auch fuer andere Sachen)
Ich wollte z.Bsp. Stifte verkaufen und wenn einer sich online registriert dann wird er als user in der joomladatenbank tabelle users eingetragen und hat er z.Bsp als Typ C ausgewaehlt dann muss die tabelle accounts in meiner db das feld numberofpage um 25 Stifte erhoehen nicht die id.

danke
 
Zurück