Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
TERJAWAB MENGAMBIL DATA KURS DARI BCA
#11
bisa gan saya bisa internetan dan buka website nya bca http://www.bca.co.id, aduh kenapa ya gan ya kok g mau tampil datanya? klo yang mengambil data kurs dari BI bisa tampil gan tapi ada erornya juga ni erornya yang tampilan BI :

Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: No such host is known. in D:\Program Files\xampp\htdocs\kurs_bi.php on line 21

Warning: file_get_contents(http://www.bi.go.id/web/id/Moneter/Kurs+...+Transaksi) [function.file-get-contents]: failed to open stream: No error in D:\Program Files\xampp\htdocs\kurs_bi.php on line 21

kenapa gan ya erornya itu ?
Reply
#12
Kalau php nya gak bisa koneksi dengan namahost, silahkan dicoba pakai IP address.
untuk dapatkan IP address silahkan ping saja alamat URL nya.

Kalau tdk bisa juga dengan IP address, coba dengan tehnik curl.

Baris yang untuk connect ke website diubah, yg bca dengan BI sama saja.

PHP Code:
if (filemtime ($nkurs['cachefile']) <= ( time () - $nkurs['cachetime'] ) && $handle file_get_contents("http://www.bca.co.id/id/biaya-limit/kurs_counter_bca/kurs_counter_bca_landing.jsp"))  { 
diubah menjadi:
PHP Code:
if (filemtime ($nkurs['cachefile']) <= ( time () - $nkurs['cachetime'] ) && $handle curl_get_file_contents("http://www.bca.co.id/id/biaya-limit/kurs_counter_bca/kurs_counter_bca_landing.jsp"))  { 
Reply
#13
udah bisa gan, makasih banyak gan, tapi itu g bisa update tiap webnya bca update ya gan? klo caranya tiap web bca update kurs yang di web kita juga ikut update gimana gan ya? dan saya mau tanya juga gan gimana cara nyimpannya ke database mysql saya ya gan? mohon bantuannya gan, terimakasih banyak...
Reply
#14
gan tapi yang saya download kurs bi v1 kok ada erornya gini ya gan :

Warning: file_get_contents(http://www.bi.go.id/web/id/Moneter/Kurs+...s+Transaks) [function.file-get-contents]: failed to open stream: Redirection limit reached, aborting in D:\Program Files\xampp\htdocs\kurs-BI\kurs_bi.php on line 21

seperti ini gan penampakannya :

[Image: eror.jpg]
Reply
#15
po3zy Wrote:udah bisa gan, makasih banyak gan, tapi itu g bisa update tiap webnya bca update ya gan? klo caranya tiap web bca update kurs yang di web kita juga ikut update gimana gan ya? dan saya mau tanya juga gan gimana cara nyimpannya ke database mysql saya ya gan? mohon bantuannya gan, terimakasih banyak...

justru script ini akan update ketika bca update, kalau bukan dari web bca lalu datanya diambil dari mana? musik *becanda aja ini agan mah* Rolleyes Huh

Perhatikan proses script nya adalah seperti ini alurnya:
1. check file cache.txt apakah umur filenya melebihi dari ketentuan yg kita setting, misalkan 1 jam, atau dalam detik adalah 3600 detik, lihat di script konfigurasi nya, bisa diubah sesuai kebutuhan.
PHP Code:
$nkurs['cachetime'] = 3600
2. jika masih umurnya dibawah 1 jam, maka TIDAK PERLU koneksi lagi ke bca, tampilkan saja file cache.txt
3. jika file cache.txt umurnya diatas 1 jam, maka tolong koneksikan ke bca dan ambil data dari WEBSITE BCA, lalu simpan file tersebut ke cache.txt (file ini akan berubah umur nya).

Mengerti prosesnya skrng gan?
Jadi agar supaya aplikasi / website kita tidak boros selalu koneksi ke BCA ketika dipanggil, karena kita tidak perlu tiap hanya selang beberapa menit saja diulang lagi koneksi internet nya.
Maka dari itu kita gunakan tehnik umur file cache.txt
Kalau mau boros tiap kali dipanggil dan otomatis konek ke bca, silahkan setting saja umur cache nya menjadi 0, tapi ini sangat tidak disarankan, karena buat apa selalu update, padahal BCA sendiri updatenya tidak tiap detik, sehari kemungkinan hanya antara 1-4 kali perubahan saja, jadi settingan 1 jam udah lebih dari cukup.
PHP Code:
$nkurs['cachetime'] = 0

Begitu gan Mr Green
Reply
#16
po3zy Wrote:gan tapi yang saya download kurs bi v1 kok ada erornya gini ya gan :

Warning: file_get_contents(http://www.bi.go.id/web/id/Moneter/Kurs+...+Transaksi) [function.file-get-contents]: failed to open stream: Redirection limit reached, aborting in D:\Program Files\xampp\htdocs\kurs-BI\kurs_bi.php on line 21

seperti ini gan penampakannya :

[Image: eror.jpg]


Kalau yang ini, karena kasusnya juga sama2 dengan settingan xampp Anda, sama seperti yang bca, coba pakai tehnik curl juga gan.
Reply
#17
kalo cara menyimpan nilainya ke dalam database gimana ya gan.? mohon bantuannya terimakasih...
Reply
#18
untuk simpan kedalam DB silahkan ikuti langkah berikut:

1. ubah file fungsi_kurs_bca.php menjadi seperti ini:
PHP Code:
<?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.


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
*/
//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($cCURLOPT_RETURNTRANSFER1);
    
curl_setopt($cCURLOPT_URL$URL);
    
$contents curl_exec($c);
    
curl_close($c);
    if (
$contents) return $contents;
    else return 
FALSE;
}
$nkurs["remotelastupdate"] = 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: ' $nkurs['cachefile'] . '<br />Lalu CHMOD ke 666'); }
if (
filemtime ($nkurs['cachefile']) <= ( time () - $nkurs['cachetime'] ) && $handle file_get_contents("http://www.bca.co.id/id/biaya-limit/kurs_counter_bca/kurs_counter_bca_landing.jsp"))  {
    
$handle explode ('<table style="width:300px;float:left;" border="1">'$handle);
    
//echo '<textarea style="width:800px; height: 400px;">'; print_r($handle[1]); echo '</textarea>';
    
$handle explode ('</tbody>'$handle[1]);
    
//echo '<textarea style="width:800px; height: 400px;">'; print_r($handle[0]); echo '</textarea>';

    //if (!isset ($nkurs['remotelastupdate'])) {
        
$handle_remote extract_unit ($handle[0], '<div align="center">''</div>');
        
//echo '<textarea style="width:800px; height: 400px;">'; print_r($handle_remote); echo '</textarea>';
        
$nkurs['remotelastupdate'] = trim($handle_remote);
    
//}

    
$handle_kurs explode('<td><strong>Beli</strong></td>'$handle[0]);
    
//echo '<textarea style="width:800px; height: 400px;">'; print_r($handle_kurs[1]); echo '</textarea>';
    
    
$handle_kurs_arr explode('<tr>'$handle_kurs[1]);
    
//echo '<textarea style="width:800px; height: 400px;">'; print_r($handle_kurs_arr); echo '</textarea>';
    
    
$nkurs['data'] = array ();
    foreach (
$handle_kurs_arr as $key => $val) {
        if(
$key == 0) continue;
        
$val str_replace ("\n\r""\n"$val);
        
$val explode ("\n"$val);
        
//echo '<textarea style="width:800px; height: 400px;">'; print_r($val); echo '</textarea>';
        
$curr str_replace ('<td style="text-align:center;">'''$val[1]);
        
$curr trim (str_replace ('</td>'''$curr) );
        
//$curr = trim (str_replace ('&nbsp;', '', $val[0]));
        
$sell str_replace ('<td style="text-align:right;">'''$val[2]);
        
$sell trim (str_replace ('</td>'''$sell) );
        
$buy str_replace ('<td style="text-align:right;">'''$val[3]);
        
$buy trim (str_replace ('</td>'''$buy) );
        
$nkurs['data'][$curr] = array ($sell$buy);
    }
    
$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';
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($strstrlen($start));
    
$second_pos stripos($str_two$end);
    
$str_three substr($str_two0$second_pos);
    
$unit trim($str_three);
    return 
$unit;
}
?>

Perhatikan sekitar baris ke 94, disitu ada:
PHP Code:
// INSERT DB
        
$data_ins_db = array( 'tanggal' => $nkurs['remotelastupdate'], 'isi' => implode ("\n"$tocache));
        require_once(
'kurs_simpan_db.php'); 

2. Buat database, dan tabel melalui phpmyadmin atau sejenisnya, skemanya seperti ini:
PHP Code:
CREATE TABLE IF NOT EXISTS `kurs_bca` (
      `
idint(11NOT NULL auto_increment,
      `
tanggalvarchar(255NOT NULL,
      `
isimediumtext NOT NULL,
      
PRIMARY KEY  (`id`),
      
UNIQUE KEY `tanggal` (`tanggal`)
    ) 
ENGINE=MyISAM  DEFAULT CHARSET=utf8


3. Buat file baru di folder yg sama dengan nama file kurs_simpan_db.php isinya adalah sbb:
(sesuaikan host,user dan password db anda)
PHP Code:
<?php

    
try {
        
$dbhost "localhost"// ubah jika perlu
        
$dbname "nama_db_nya"// ubah
        
$dbuser "user_db"// ubah
        
$dbpass "pass_db"// ubah
        
$DBH = new PDO("mysql:host=$dbhost;dbname=$dbname"$dbuser$dbpass);
        
$DBH->setAttributePDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION );
        
        
$STH $DBH->prepare("INSERT IGNORE INTO kurs_bca (tanggal, isi) value (:tanggal, :isi)");
        
$STH->execute($data_ins_db);
    } catch(
PDOException $e) {
        echo 
"Error.";  
    } 

Agar Halaman kita selalu dapat update data dr bca, meskipun halaman website kita tdk ada orang yg mengunjungi, kita dapat mengakalinya dengan menggunakan cron, silahkan setup cronjob sesuai keinginan, saya rekomendasikan cronjob nya jalan tiap sehari 2 kali.

Silahkan dicoba.
Reply
#19
oke gan terimakasih banyak, akan saya coba dulu Smile
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)