Selasa, 18 Desember 2012

Upload Data XML ke Database MySQL

Berikut ini saya buatkan script untuk upload data dalam format XML ke database MYSQL menggunakan pemograman PHP,
Data yang dikirim dari Client dalam format XML, untuk program Clientnya bisa menggunakan program Desktop  seperti VB, C# ataupun berbasisi Server Script (PHP,ASP.NET).
Cara Kerja Pengiriman (Upload) dalam format XML :
Client :
  1. Dari sisi client data XML dibuatkan dalam bentuk file XML atau dari table yang digenerate menjadi format XML.
  2. Sesudah dibuatkan dalam format XML, dalam script pengiriman ke serve tinggal dipanggil nama file dari script uploadXML
Server :
Script ini di simpan di web server (server Script) dengan menggunakan PHP, alur kerja dari script ini :
  1. Data XML yang upload dari client dicek, apakah dalam format XML atau bukan.
  2. Apabila ya, data XML disimpan kedalam variable XML kemudian disimpan dalam bentuk file sementara (nama file di acak dengan kombinasi nama, tanggal pembuatan dan random.
  3. Setelah disimpan kedalam file XML, kemudian file tersebut dibuka, kemudian di filter, filter pertama : data stock, filter kedua : data indeks
  4. Apabila hasil filter terdapat data-data tersebut, kemudian di insert ke table.
  5. Setelah selesai di insert ke table, kemudian koneksi ke database di tutup.
Berikut script Upload data XML ke Database Web Server :
/*
* XML Server.
*/
$xml_post = file_get_contents(‘php://input’);
if ($xml_post) {
$link = mysql_connect(‘localhost’,'root’,”) or die(‘Cannot connect to the DB’);
mysql_select_db(‘mstock’,$link) or die(‘Cannot select the DB’);
$xml_file = ‘received_xml_’ . date(‘Y_m_d-H-i-s’) .rand() . ‘.xml’;
$fh       = fopen($xml_file, ‘w’) or die();
fwrite($fh, $xml_post);
fclose($fh);
$xml = simplexml_load_file($xml_file);
$date=”";
mysql_query(“START TRANSACTION”);
foreach ($xml->stocks->stock as $value) {
if ( trim($date) !=trim($value->stk_date)) {
mysql_query(“DELETE FROM STOCK_EOD where STK_DATE=’$value->stk_date’”);
$date=$value->stk_date;
}
mysql_query(“INSERT INTO stock_eod VALUES (
‘$value->stk_date’  , ‘$value->stk_code’ ,
‘$value->stk_name’  , $value->stk_prev ,
$value->stk_high  , $value->stk_low ,
$value->stk_clos  , $value->stk_volm ,$value->stk_amnt ,
$value->stk_indx  , $value->stk_pidx ,
$value->stk_askp  , $value->stk_askv ,
$value->stk_askf  , $value->stk_bidp ,
$value->stk_bidv  , $value->stk_bidf ,
$value->stk_open  , $value->stk_first ,
$value->freq  , $value->stk_list ,
$value->fore_sell , $value->fore_buy)”
);
}
$date=”";
foreach ($xml->inxs->inx as $value) {
if ( trim($date) !=trim($value->stk_date)) {
mysql_query(“DELETE FROM INDEX_EOD where INX_DATE=’$value->inx_date’”);
$date=$value->inx_date;
}
mysql_query(“INSERT INTO INDEX_eod VALUES (
‘$value->inx_date’  , ‘$value->inx_code’ ,
‘$value->inx_name’  , $value->inx_prev ,
$value->inx_high  , $value->inx_low ,
$value->inx_last  , $value->inx_change ,$value->inx_stk ,
$value->inx_volm  , $value->inx_amnt ,
$value->inx_freq  , $value->inx_mcap ,
$value->inx_first )”
);
}
mysql_query(“COMMIT”);
unlink($xml_file);
return;
}
?>

0 komentar:

Posting Komentar