Script PHP Mengambil Nilai Tukar Valuta Asing BCA
Berikut adalah script php untuk menampilkan kondisi mata uang valuta asing mengambil data yang bersumber dari http://www.klikBCA.com.
Dengan dua metode, menggunakan curl atau juga bisa menggunakan file_get_content().
UPDATE:
terakhir diupdate tanggal 15 April 2014
-Tampilan Kurs BCA berubah (file download sudah termasuk perubahan nya)
Pertama-tama kita buat file fungsi_kurs_bca.php, yg isinya sbb.:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
<?php /* Ambil Nilai Valuta Kurs Dari BCA Versi 3.0 Versi 1: Tanggal: 2008-11-19 22:17 -Launching pertama script kurs bca Versi 2: Tanggal: 2011-04-14 22:03 -Perubahan alamat URL kurs bca Versi 3: Tanggal: 2012-06-16 01:33 -Perubahan alamat URL kurs bca -Perubahan script pengaturan pengambilan data kurs. Versi 3.1: Tanggal: 2014-01-15 21:54 - Perubahan script pengaturan pengambilan data kurs. Versi 3.2: Tanggal: 2014-04-15 01:17 -Perubahan alamat URL kurs bca Original dari azza (broadband.or.id/forum/) dimodif oleh: jinbatsu (http://www.nusansifor.com) - tanpa ijin dari azza yg dimodif: - menggunakan CURL sebagai alternatif dari file_get_contents (hususnya buat yg gak bisa di hostingan2 tertentu) - penempatan output titik koma dan tanda petik yg mengakibatkan fatal error dibeberapa hostingan - menambah number format, supaya terlihat ada titik pada ribuan nya */ //ini_set('max_execution_time', 300); //error_reporting (E_ALL); //error_reporting(E_ALL ^ E_NOTICE); error_reporting(0); // Perhatian PENTING untuk konfigurasi WAKTU dibawah. // Ubah menjadi 3600 untuk cache 1 jam, ketika semuanya sudah berjalan normal. // Menggunakan cache berarti tidak perlu membuka koneksi ke klikbca // setiap kali halaman dibuka << ini PENTING! menghemat waktu, dan mengurangi proses server. // $nkurs['cachetime'] = 3600; /* ubah jadi 3600 atau lebih 14400 */ //$nkurs['cachetime'] = 0; /* ubah jadi 3600 atau lebih 14400 */ // // Hilangkan mata uang yang tidak mau ditampilkan. // $nkurs['curr'] = array ('USD', 'SGD', 'HKD', 'CHF', 'GBP', 'AUD', 'JPY', 'SEK', 'DKK', 'CAD', 'EUR', 'SAR', 'NZD', 'CNY'); // // Dari sini kebawah, ubah kalau mengerti aja. // Atau tanya dulu di: broadband.or.id/forum/viewforum.php?f=7 (database forumnya sekarang udah gak ada, silahkan dicek lagi) // Atau kesini aja http://www.nusansifor.com/2008/11/script-php-mengambil-nilai-tukar-valuta-asing/ // menggunakan CURL, jika file_get_contents tidak bisa dihostingan Anda, baca manual PHP untuk selengkapnya function curl_get_file_contents($URL) { $c = curl_init(); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c, CURLOPT_URL, $URL); $contents = curl_exec($c); curl_close($c); if ($contents) return $contents; else return FALSE; } $nkurs["remotelastupdate"] = ''; $nkurs["data"] = array(); $nkurs['scriptpath'] = dirname (__FILE__); $nkurs['cachefile'] = $nkurs['scriptpath'] . '/cache.txt'; if (!file_exists ($nkurs['cachefile']) || !is_writable ($nkurs['cachefile'])){ die ('File cache.txt belum ada atau belum writable.<br />Buat file: <code>' . $nkurs['cachefile'] . '</code><br />Lalu CHMOD ke 666'); } if (filemtime ($nkurs['cachefile']) <= ( time () - $nkurs['cachetime'] ) && $handle = file_get_contents("http://www.bca.co.id/id/kurs-sukubunga/kurs_counter_bca/kurs_counter_bca_landing.jsp")) { $handle = explode ('<div style="float:left;margin-left:10px;padding: 10px;width:700px;padding-bottom:40px;min-height:220px;">', $handle); if(is_array($handle) && isset($handle[1])) { $handle = explode ('</tbody>', $handle[1]); $handle_kurs_a = explode('</table>', $handle[0]); $handle_remote = extract_unit ($handle[0], '<div align="center">', '</div>'); $nkurs['remotelastupdate'] = trim($handle_remote); $handle_kurs = explode('<td><strong><br/>Mata Uang<br/></strong></td>', $handle_kurs_a[0]); $handle_kurs_arr = explode('<tr>', $handle_kurs[1]); $nkurs_arr = array (); foreach ($handle_kurs_arr as $key => $val) { if($key == 0) continue; $curr = extract_unit($val, '<td style="text-align:center;">', '</td>'); $nkurs_arr[] = $curr; } $handle_jb = $handle[0]; $handle_jb = explode('<td><strong>Beli</strong></td>', $handle_jb); $handle_jb_arr = explode('<tr>', $handle_jb[1]); $jual_arr = array(); $beli_arr = array(); foreach ($handle_jb_arr as $key => $val) { if($key == 0) continue; $jb_arr = explode('</td>', $val); $jual = trim(str_replace('<td style="text-align:right;">', '', $jb_arr[0])); $jual = trim(str_replace('<!-- kolom dua -->', '', $jual)); $beli = trim(str_replace('<td style="text-align:right;">', '', $jb_arr[1])); $beli = trim(str_replace('<!-- kolom dua -->', '', $beli)); $jual_arr[] = $jual; $beli_arr[] = $beli; } $nkurs['data'] = array(); $no = 0; foreach ($nkurs_arr as $val) { $nkurs['data'][$val] = array ($jual_arr[$no], $beli_arr[$no]); $no++; } $tocache = array (); foreach ($nkurs['data'] as $key => $val) { $tocache[] = $key . '|' . $val[0] . '|' . $val[1]; } // INSERT DB //$data_ins_db = array( 'tanggal' => $nkurs['remotelastupdate'], 'isi' => implode ("\n", $tocache)); //require_once('kurs_simpan_db.php'); // TULIS FILE cache.txt $tocache[] = 'remotelastupdate|' . $nkurs['remotelastupdate']; $tocache = implode ("\n", $tocache); $handle = fopen ($nkurs['cachefile'], 'w'); fwrite ($handle, $tocache); fclose ($handle); } } else { $handle = file ($nkurs['cachefile']); $nkurs['data'] = array (); foreach ($handle as $val) { $val = explode ('|', $val); if ($val[0] != 'remotelastupdate') { $nkurs['data'][$val[0]] = array ($val[1], trim ($val[2])); } else { $nkurs['remotelastupdate'] = $val[1]; } } } // // Output // $output = "\n"; $margin = ''; $output .= $margin . '<div id="nKurs">' . "\n"; $output .= $margin . ' <table width="100%" border="0" cellspacing="1" cellpadding="0">' . "\n"; $output .= $margin . ' <tr><th>Mata Uang</th><th>Jual</th><th>Beli</th></tr>' . "\n"; $rowclass = 'row1'; if(is_array($nkurs['data']) && isset($nkurs['data'])) { foreach ($nkurs['data'] as $key => $val) { if (in_array ($key, $nkurs['curr'])) { if ($rowclass == 'row1'){ $rowclass = 'row2'; }else{ $rowclass = 'row1'; } $output .= $margin . ' <tr><td align="center" class="curr ' .$rowclass . '">' . $key . '</td><td align="right" class="' . $rowclass . '">' . number_format($val[0], 2) . '</td><td align="right" class="' . $rowclass . '">' . number_format($val[1], 2) . '</td></tr>' . "\n"; } } } $output .= $margin . ' </table>' . "\n"; $output .= $margin . ' <cite><a href="http://www.klikbca.com/" rel="external" title="Source: KlikBCA">' . $nkurs["remotelastupdate"] . '</a></cite>' . "\n"; $output .= $margin . '</div>' . "\n"; echo $output; // tambahan fungsi function extract_unit($string, $start, $end) { $pos = stripos($string, $start); $str = substr($string, $pos); $str_two = substr($str, strlen($start)); $second_pos = stripos($str_two, $end); $str_three = substr($str_two, 0, $second_pos); $unit = trim($str_three); return $unit; } |
Lalu kita siapkan file berikutnya kurs_bca.php, yaitu sbb.:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Nilai Tukar Mata Uang Asing dari KlikBCA</title> <link href="kurs_bca.css" rel="stylesheet" type="text/css" /> </head> <body> <?php include_once("fungsi_kurs_bca.php"); ?> </body> </html> |
Dan untuk men-design tampilan lebar dan warna, kita buat file kurs_bca.css, yg isinya sbb.:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
#nKurs { width: 170px; background: #FFFFFF; padding: 1px; } #nKurs table { border: 1px solid #333399; font-family: Verdana, Arial, Helvetica, sans-serif; } #nKurs table th { color: #FFFFFF; background-color: #333399; font-size: 10px; padding: 2px 0px; } #nKurs table td { font-size: 10px; color: #333399; padding: 1px 2px; } #nKurs table td.curr { font-weight: bold; } #nKurs table td.row1 { background-color: #EEF1F6; } #nKurs table td.row2 { background-color: #EBF2FF; } #nKurs cite { display: block; color: #333399; font-style: normal; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; text-align: center; } #nKurs a:link, #nKurs a:visited { color: #333399; text-decoration: none; } #nKurs a:hover { color: #FF0000; } |
Download file contoh script komplit nya:
kurs_bca_v3.2.zip (3.5 KiB, 6,111 hits, Updated: 15 April 2014)
semoga bermanfaat
oya tambahan, untuk menggunakan metode fungsi file_get_contents(), ubah code
1 |
curl_get_file_contents("alamat url nya") |
menjadi:
1 |
file_get_contents("alamat url nya", "r") |
thx to balaiweb atas suggest nya.
jika ada masukan lain, silahkan share…
PERHATIAN!!
untuk mencoba script berjalan dgn baik, silahkan diubah variabel berikut:
1 |
$nkurs['cachetime'] = 3600; |
menjadi:
1 |
$nkurs['cachetime'] = 0; |
Setelah OK, ubah kembali menjadi 3600 atau lebih, untuk hemat resource.
Not Found
The requested URL /kurs/kurs_bca.php was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
@A, silahkan dicoba lagi gan.
mas.. kalo cuma mau ngambil nilai tukar rp dengan dolar aja gmn? thx
kok tidak bs muncul untuk link url yg lain ya..
Link url lain itu maksudnya apa ya?
Ini kan untuk ambil kurs dari klick bca, memangnya ada link lainya?
mas caranya agar data yang didapat tersebut dapat dimasukan ke database dan akan terupdate otomatis pula ketika data dari bank tersebut berubah gimana ya mas ?
untuk insert ke db, sudah ada di komentar halaman 1, klik sini: http://www.nusansifor.com/2008/11/script-php-mengambil-nilai-tukar-valuta-asing/comment-page-1/#comment-828
unutk update otomatis, justru ini script dibuat untuk bisa seperti itu kan? 🙂
sudah gak bisa ya gan….apa ada yg terbaru?
oh ya? saya sudah lama tdk menggunakan lagi script ini, kemungkinan ada perubahan2 code dalam web klikbca nya gan.
apa ada yang terbaru lagi gan??
maap, belum ada gan.