By.
AlgoritmaNews -
Sebelumnya lebih baik teman-teman baca
artikel saya dulu yang sebelumnya. Setelah membaca dan yakin ingin menggunakan cara kedua, ya baik…Saya coba buat kode untuk melakukan cara ambil harga JNE dengan PHP [cara kedua].
Pertama saya buat folder dengan nama
get_price_jne, lalu di dalamnya saya buat file
index.php dimana isi dari file ini adalah sebuah form untuk memasukan kota asal pengiriman, kota tujuan pengiriman dan berat barang yang akan dikirim.
Berikut kodenya :
01 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
02 | < html xmlns = "http://www.w3.org/1999/xhtml" > |
04 | < meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" /> |
05 | < title >Tutorial Sederhana Parsing Harga Pengiriman JNE - Adiputra</ title > |
09 | < h1 >Create by Adiputra, Basic Code from Om Andriant</ h1 > |
10 | < form action = 'get_harga.php' method = 'post' > |
13 | < th colspan = '2' >Demo Parsing Harga Pengiriman JNE</ th > |
15 | < td >Masukan Kota Asal Pengiriman</ td > |
16 | < td >< input type = 'text' name = 'kota_asal' size = '20' ></ td > |
19 | < td >Masukan Kota Tujuan Pengiriman</ td > |
20 | < td >< input type = 'text' name = 'kota_tujuan' size = '20' ></ td > |
23 | < td >Masukan berat barang [integer]</ td > |
24 | < td >< input type = 'text' name = 'berat' size = '5' > per kilo</ td > |
28 | < td >< input type = 'submit' name = 'lihat' value = 'Cek Harga' ></ td > |
Setelah itu saya buat action dari form tersebut dengan nama file
get_harga.php yang merupakan teknik parsing atau ambil data dari website lain. Berikut adalah kodenya :
08 | # ambil data kota asal dan kota tujuan serta berat dari form |
09 | $asal = $_POST [ 'kota_asal' ]; |
10 | $tujuan = $_POST [ 'kota_tujuan' ]; |
11 | $berat = $_POST [ 'berat' ]; |
13 | if (!function_exists( "curl_init" )){ |
14 | die ( 'CURL tidak ada' ); |
18 | curl_setopt( $chp , CURLOPT_COOKIEJAR, $cookiesjar ); |
20 | curl_setopt( $chp , CURLOPT_COOKIEFILE, $cookiesjar ); |
22 | curl_setopt( $chp , CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1" ); |
24 | curl_setopt( $chp , CURLOPT_FOLLOWLOCATION, 1); |
26 | curl_setopt( $chp , CURLOPT_RETURNTRANSFER, 1); |
29 | $url = "http://www.jne.co.id/tariff.php?q=$asal&limit=20×tamp=" .time(); |
30 | curl_setopt( $chp , CURLOPT_URL, $url ); |
31 | $content = curl_exec( $chp ); |
34 | $kode = preg_split( "%\n%si" , $content ); |
35 | $kode = trim( $kode [0]); |
36 | $kode = explode ( '|' , $kode ); |
37 | $koreksikotaasal = $kode [0]; |
41 | $url = "http://www.jne.co.id/tariff.php?q=$tujuan&limit=20×tamp=" .time(); |
42 | curl_setopt( $chp , CURLOPT_URL, $url ); |
43 | $content = curl_exec( $chp ); |
46 | $kode = preg_split( "%\n%si" , $content ); |
47 | $kode = trim( $kode [0]); |
48 | $kode = explode ( '|' , $kode ); |
49 | $koreksikotatujuan = $kode [0]; |
50 | $kodetujuan = $kode [1]; |
53 | if ( $kodeasal != "" && $kodetujuan != "" ) |
55 | $url = "http://www.jne.co.id/index.php?mib=tariff&lang=IN" ; |
57 | $params = "from=$koreksikotaasal&origin_code=$kodeasal&to=$koreksikotatujuan&destination_code=$kodetujuan&weight=$berat&checktariff=" ; |
58 | curl_setopt( $chp , CURLOPT_REFERER, "http://www.jne.co.id/index.php" ); |
59 | curl_setopt( $chp , CURLOPT_POSTFIELDS, $params ); |
60 | curl_setopt( $chp , CURLOPT_URL, $url ); |
62 | $content = curl_exec( $chp ); |
63 | if (preg_match( '%Nama Layanan.*?Tarif.*?</tr>(.*?)</table>%si' , $content , $matches )) { |
64 | preg_match_all( '%<tr.*?><td.*?>(.*?)</td>.*?<td.*?>(.*?)</td><td.*?>Rp. (.*?)</td>.*?</tr>%si' , $matches [1], $result , PREG_PATTERN_ORDER); |
66 | for ( $i =0; $i < count ( $result ); $i ++) |
68 | echo ( "Nama Layanan {$result[0][$i]}<br />" ); |
69 | echo ( "Jenis Kiriman {$result[1][$i]}<br />" ); |
70 | echo ( "Berat $berat<br />" ); |
71 | echo ( "Tarif {$result[2][$i]}<br /><br />" ); |
75 | echo ( 'gagal menarik data' ); |
79 | echo ( 'gagal menarik data' ); |
Baiknya teman-teman membaca apa itu
CURL, apa itu
preg_match,
konsep regex. Jujur pertama kali saya lihat kode ini dari Om Andriant saya baca lagi manual PHP nya
.
Setelah itu tinggal jalankan. Berikut adalah tampilan awal form di localhost saya
Dan hasilnya bisa dilihat pada gambar di bawah ini.
Dari form ke hasil membutuhkan kira-kira 10 detik-an kalau di komputer local saya. Agak lambat ya..
Selesai ?? Belum,,teman-teman sebenarnya mesti melakukan teknik ambil value dari hasil yang sudah terlihat diatas. Gunakan teknik DOM dengan Javascript atau lebih mudah dengan jquery.
Bingung ?? lebih jelasnya, coba teman-teman mampir ke situs
Bhinneka untuk melihat studi kasus saat kita memilih jasa pengiriman. Lebih menarik ya…
Moga bermanfaat…:)
[download code]
Refrensi :
Dari Om Andriant dengan sedikit modifikasi dari saya…
0 Comments:
Post a Comment