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,106 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.
Waw trnyata bener memakai fungsi curl..hehehe tadi aku kira ada yg pakai screnshot gitu ke BCAnya..
sip makasi y mas..udah yakin kalau memang bisa diakalin dengan curl 😀
get_content belum ngerti bnyak..sip2…suwon..
langsung diaplikasikan 😀
mas, saya malah kena fatal error d line 30 itu gmana ya??
di cache.txt itu harus diisi apa ya??
thx b4 😀
@olia, ikutin aja apa yg diperintahkan disitu:
Buat file cache.txt dan kalau pake server linux chmod file nya 666, bisa lewat ftp atau filemanager dari cPanel Hostingan.
isi cache.txt gausah diisi ntar jg keisi sendiri sama script nya, mau diisi sembarang tulisan juga boleh2 saja.
bos kalo buat blogger gimana tu kodenya? Aku mau pake di bloggerku http://www.produkcasio.blogspot.com untuk promosiin produk casio boss.
mantap bro, thanks berat
wah.. mataph om…
tengkyu udah sharing…
(^_^)V
kerennn, trims udh bagi2 ilmu pak,, saya udh cari2 ga ketemu,akhirnya nemu disini… trims banyakkkkk!!!
Terima kasih,
tp boleh di kutak – kutik ya mas… scriptnya…
@qu4ck, silahkan 🙂
udah sy coba dan hasilnya sukses..
tp anehnya bila kita ambil link
http://www.klikbca.com/individual/silver/ind/rates.html
itu sedang putus koneksinya..
maka web kita akan putus/error juga…
ada solusi lain? biar web kita gak ikutan down/error koneksinya?
apa karena $nkurs[‘cachetime’] = 0;
hrus diganti yah jadi 3600?
dan untuk mencoba2.. silahkan ubah yg ini menjadi:
$nkurs[‘cachetime’] = 0;
setelah OK, ubah kembali menjadi:
$nkurs[‘cachetime’] = 3600;
kalo saya ganti jadi 3600 muncul eror spt ini:
Notice: Undefined offset: 1 in D:\xampp\htdocs\klik4it\app\code\core\Mage\Directory\Block\Currency.php on line 106
tapi kalo saya pake 0 barjalan lancar…
tapi..ya itu tadi suka terputus jika dari klikbca.com servernya sedang down
@abdee,
pertama, gunakan:
$nkurs[‘cachetime’] = 0;
jika sudah nampil OK, maka ubah menjadi:
$nkurs[‘cachetime’] = 3600;
dan seharusnya tidak ada masalah, kalau ada error, coba di cek lagi pada baris 105-106 itu isinya apa?
@Jawaad
thanks for replay..
pertama sy gunakan $nkurs[‘cachetime’] = 0;
kemudian sy ganti $nkurs[‘cachetime’] = 3600;
muncul pesen error…
Notice: Undefined offset: 1 in D:\xampp\htdocs….
isi dari baris 105-106
105: if ($val[0] != ‘remotelastupdate’) {
106: $nkurs[‘data’][$val[0]] = array ($val[1], trim ($val[2]));
@abdee, file cache.txt nya tidak diubah kan? sudah chmod 666? mestinya normal2 saja.
sudah berhasil mas….
tp ada beberpa page yg bila di klik link nya muncul error
Cannot redeclare curl_get_file_contents() (previously declared in D:\xampp\htdocs\……
tapi ada juga page lain yg tidak error…
cuma sebagian saja…
ok mas..
problem solved..
ternyata
saya ganti jadi
mas tolong gimana cara buat chmod ke 666 saya baru belajar ni mau coba isi kurs bca kalo ada scriptnya tolong
trims
Salam kenal..Makasih bgt buat skripnya pak.Mau nanya,kalo misalkan mau dikasih timer jd berapa menit skali baru diambil,gmn ya caranya?Tq.. :d
maaf ,.. mo nanya,…
saya mau bikin konversi ke dollar tp,.. pengen yang otomatis,..
misal : $dollar = ($harga_produk / $dollar_sekarang);
$harga_produk ngambil dari database saya
$dollar_sekarang ngambil secara otomatis dari kurs sekarang
sehingga kalo ada penurunan atau penaikan harga dollar maka secara otomatis saya sudah mendapatkan hasilnya,..
itu gmana yaa,.. ???
kalo ada link atau contoh ,.. boleh dong kasi tau saya,…
lagi mepet nih,… hik hik hik,…
thank’s
bagai mana kalau script diatas diterapkan menjadi semacam kakulator untuk menghemat tempat dan simple
saya buat script simplenya tapi ga bisa menggabungkannya gan..
bantuin
mas, kalau mau buat pakai sistem yang ada adminnya gimana? jadi tar gak pakai data bca, tapi pakai data sendiri dan kita masukin sendiri… jadi yang update kita dari admin nya…makasih
@abdee, ok seep semoga bermanfaat.
@p setiawan, silahkan filenya diunduh, diatas ada link download nya. dan ikuti langkah instalasi nya.
@handoyo, silahkan tinggal diubah saja timer setting nya, contoh pada script adalah:
@JONI THEKILL, untuk implementasi ke aplikasi blm saya buatkan contohnya, akan tetapi jika Anda mengerti, mudah saja sebenarnya untuk mengambil data tersebut. gunakan fasilitas fungsi file_get_contents(“path/ke/cache.txt”);
@hendra, iya nanti kalau sempat saya buatkan contohnya.
@jaya, kalau begitu tidak perlu lagi menggunakan script ambil data ke website BCA, melainkan buat saja script khusus, silahkan Anda coba belajar membuat bukutamu menggunakan php dan MySQL, maka nanti Anda akan bisa sendiri untuk membuat bentuk2 data secara umum.
OK, untuk semua, sekedar informasi, script ini masih layak digunakan untuk PHP versi 5. Jika ada masalah error lain, silahkan paparkan disini.
Terimakasih.
Mas, saya sudah pasang script ini. Namun stelah diakses muncul pesan error “Notice: Undefined index: remotelastupdate in D:\wamp\www\mysite\fungsi_kurs_bca.php on line 102” Yang muncul hanya 1 baris berisi “Mata Uang | Jual | Beli |”. Saya sudah ikuti saran mas kpada mbak Yenni diatas, tapi malah tambah error.
Mohon dibantu, terima kasih sebelumnya.
@arta, silahkan dicoba baris atas berikan penanda variable ini:
lalu coba nilai timer nya di NOL kan terlebih dahulu, sampai berhasil.
kalau tetap tidak bisa, kemungkinan Anda tidak bisa menggunakan curl, silahkan aktifkan dahulu module curl di wamp Anda, cara mengaktifkannya, silahkan lihat komentar ini, klik disini.
Atau gunakan file_get_content().
Lihat diketerangan artikel diatas, atau coba lihat komentar nya Abdee. Klik disini.
Jangan lupa setelah berhasil kembalikan setting timer nya, agar server tidak boros.
@jawaad
terima kasih atas respon nya mas. Untuk error ini “D:\wamp\www\mysite\fungsi_kurs_bca.php on line 102″ saya mengganti baris ” error_reporting (E_ALL);”
menjadi “error_reporting (E_ALL ^ E_NOTICE);” (sudah solve)
Untuk error ini –> Yang muncul hanya 1 baris berisi “Mata Uang | Jual | Beli |” saya ikuti saran mas diatas.
sekali lagi terima kasih mas atas bantuannya.
o iya mas, nanya lagi. moga ga bosen jawab ne. Saya mau ngambil rate yang bahasa inggris. saya sudah ubah baris “handle = curl_get_file_contents(“http://www.klikbca.com/individual/silver/ind/rates.html”,”r”)”
Menjadi :
“&& $handle = file_get_contents(“http://www.klikbca.com/individual/silver/Eng/rates.html”,”r”) ” (sesuai dengan link rates bahasa inggrisnya.
Tapi yg muncul tetep bahasa Indonesia mas (sama dengan sebelum diubah). Ada langkah yg kurang ya mas?
@arta, kalau mau tampilan bahasa inggris, gak perlu ambil konten BCA yg bhs inggris, ubah aja sekitar baris ke 12 dari bawah, di bawah ada tulisan ini:
Ubah kata2nya sesuai keinginan, misalnya jadi: Mata Uang ubah jadi Currency, Jual ubah jadi Sell, Beli ubah jadi Buy.
ok mas, terima kasih.
boleh juga nih gan, bisa dicoba, hehehe.. thx b4 😆
nice info brad… segera meluncur dah buat nyobain, hehehe.. Thx buat share nya ❓ 🙂
maaf mas..
itu sepertinya perlu diupdate lagi…
yang cuma muncul cuma tablenya aja…
kursnya tidak
link ini mungkin sudah tidak berlaku
http://www.klikbca.com/individual/silver/ind/rates.html
mohon diupdate lagi mas
setuju sam mas adi…
saya sudah make tapi beberapa hari ini tampilannya hanya table kurs nilai jual dan nilai beli saja kurs tidak ada…source http://www.klikbca.com/individual/silver/ind/rates.html
sudah tidak berlaku lagi…
file cache hilang, jadi “remotelastupdate |” saja…
oh iya kok ga autoupdate lg yah kursnya…
terima kasih telah berusaha mas
setuju sam mas adi…
saya sudah make tapi beberapa hari ini tampilannya hanya table kurs nilai jual dan nilai beli saja kurs tidak ada…source http://www.klikbca.com/individual/silver/ind/rates.html
sudah tidak berlaku lagi…
file cache hilang, jadi “remotelastupdate |” saja…
oh iya kok ga autoupdate lg yah kursnya…
terima kasih telah berusaha mencarikan penyelesaian masalah mas..
Bang, makasih infonya,, ada dalam bentuk PLUGIN wordpressnya kah? heehehehe,,
Oya, sama tanya dong, itu cara membuat halaman posting bisa buat menampilkan kode pHp mirip notepad gtu pake apa pluginnya?
Makasih,
Anjrah Web
@Adi dan @kilauam,
terimakasih atas informasinya, iya alamat kurs bca berubah, dan struktur table HTML nya pun berubah.
Saya sudah perbaiki script nya.
Silahkan download yg versi3 diatas.
@Soydaily Fresh,
Untuk bentuk plugin wordpress nanti akan saya terapkan.
Untuk Syntax Highlight saya memakai plugin WP-Syntax http://wordpress.org/extend/plugins/wp-syntax/
bagi yg punya website sendiri mungkin dah langsung bisa pahami ya cara pasang script diatas, klo sperti newbie seperti aq kayaknya masih susah tuk dipahami 🙁
gan jawaad script ini bisa di pasang di module prestashop ga ya? mohon penjelasannya..
gan bisa ga ya script ini di pasang di prestashop v 1.4,,kalo bisa bagaimana cara integrasinya dengan modul di prestashop..mohon bantuannya gan…
@andi, fasilitas widget HTML nya blm ada, nanti kalau sudah fix akan saya publikasikan.
Maaf massaya sudah baca blognya agan, dan sudah download kurs bca, tapi kenapa g tampil y datanya yang tampil cuma kayak gini gamabr linknya dbwh ini, saya menggunakan xampp untuk webservicenya
http://s16.postimage.org/3z93v3kox/kurs.jpg
mohon bantuannya, dan saya juga ingin menyimpan datanya ke dalam database mysql saya coba script diatas tp kok g bisa cara penulisannya klo dgabung d scriptnya kurs bca jadi 1 gimna ya, diletakkan disebelah mana? mohon penjelasannya..
terimakasih banyak
@poe, silahkan dilanjutkan di forum http://www.nusansifor.com/forum/viewtopic.php?f=4&t=195
terimakasih
mas, mata uangnya kok ga lengkap kya di web bca?
@uminakoko, meskipun 2 mata uang yang baru dipasang oleh BCA yaitu NZD dan CNY, yang di demo sudah lengkap seperti di bca (dimulai pd tgl 2012-06-16), jika yang Anda pakai blm lengkap silahkan tambahkan data array pada baris berikut:
ubah menjadi:
Sesuaikan dengan kebutuhan Anda, mata uang apa saja dan pengurutan nya silahkan dapat diatur sesuai keperluan.
Terimakasih atas komentar dan ketelitiannya.
wah bagus sekali artikelnya, sangat membantu, apalagi setelah bca ganti link utk kurs nya…
saya mau tanya kalau saya grab bank lain, seperti panin.co.id gtu bisa gk ya?
Thx b4
Mas kalo untuk ambil kurs nya panin bank, gimana ya? http://www.panin.co.id ?
thx banget gan infonya, nilai tukar valuta kami pake sehari-hari terutama di bca…
mas makasih sebelumnya pertanyaan saya yg sebelumnya udah dijawab dan berhasil. saya mau tanya lagi mas, bisa ga ditambah kolom di sebelum kolom “mata uang”? karena saya mau tambahkan kolom “negara” dari mata uang masing2. terimakasih mas
@uminakoko,
Pada baris sekitar 37 yg isinya adalah:
Tambah ini, sehingga menjadi:
Lalu pada baris sekitar 139, yg isinya adalah:
diubah menjadi:
Silahkan dicoba mas.
gak bisa gan, help me
Parse error: syntax error, unexpected ‘&&’ (T_BOOLEAN_AND) in C:\xampp\htdocs\Kurs\fungsi_kurs_bca.php on line 50