Nusansifor

Nusantara Sistem Informasi

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.:

<?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:
 
<div>::CODECOLORER_BLOCK_1::</div>
 
<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.:

<!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.:

#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;
}

Demo: klik disini
Download file contoh script komplit nya:

  kurs_bca_v3.2.zip (3.5 KiB, 4,353 hits, Updated: 15 April 2014)

semoga bermanfaat :mrgreen:
oya tambahan, untuk menggunakan metode fungsi file_get_contents(), ubah code

curl_get_file_contents("alamat url nya")

menjadi:

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:

$nkurs['cachetime'] = 3600;

menjadi:

$nkurs['cachetime'] = 0;

Setelah OK, ubah kembali menjadi 3600 atau lebih, untuk hemat resource.

m4s0n501

, , , , , ,

101 Comments

1 2 3

  • A says:

    Using Mozilla Firefox Mozilla Firefox 25.0 on Windows Windows XP

    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.

    Thumb up 0 Thumb down 0

1 2 3

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Notify me of followup comments via e-mail. You can also subscribe without commenting.