Pada Kesempatan ini, Kita akan mempelajari membuat script cek ongkir TIKI dengan menggunakan cURL. Data ongkir langsung diambil dari web Tiki, kemudian dilakukan parsing untuk mengambil bagian tertentu yang kita inginkan.
Ada 3 tahapan utama dalam script ini yaitu:
1. Script pengambilan data kota
2. Script pengambilan web hasil perhitungan tarif
3. Parsing halaman web
Script pengambilan Data Kota kurir TIKI
Pengambilan database yang berisi nama-nama kota yang terdaftar dalam jaringan tiki tidaklah sulit. Andapun bisa melakukannya tanpa script yaitu langsung mengetikkan alamat http://www.tiki-online.com/lib/cariori.php di browser Anda dan data nama KOTA Kecamatan yang masuk kedalam jaringan TIKI akan muncul di halaman browser anda.function getKOTA(){
$hasil = file_get_contents("http://www.tiki-online.com/lib/cariori.php");
$hasil = explode("n", $hasil);
return $hasil;
}
Kemudian Data Kota tersebut kita jadikan bahan input di form. Kita menggunakan metode dengan tag <datalist> agar mudah difahami. Namun karena datanya yang sangat banyak, maka akan terjadi loading time beberapa detik. Script untuk membuat datalist di input form adalah sebagai berikut:
<form action="tiki.php" method="post">
Dari: <input list="asalkota" name="asal">
<datalist id="asalkota">
<?php
foreach ($listKota as $kota) {
# code... echo '<option value="'.$kota.'">';
echo "\n";
}
?>
</datalist>
Ke: <input list="tujuankota" name="tujuan">
<datalist id="tujuankota">
<?php
foreach ($listKota as $kota) {
# code... echo '<option value="'.$kota.'">';
echo "\n";
}
?>
</datalist>
Berat:<input type="number" name="berat">
<input type="submit" value="Cek Tarif">
</form>
Sehingga menghasilkan tampilan yang sangat simple namun bisa autocomplete karena menggunakan tag datalist
sampai di tahapan ini kita sudah menyelesaikan script pengambilan data kota dan mengimplementasikannya di form. Jika Anda sudah faham AJAX, penggunaan AJAX bisa lebih menghemat waktu loading / menambah kecepatan. Silahkan improvisasi sendiri
2. Script mengambil Halaman info tarif di TIKI
Setelah form dibuat, kemudian di klik submit, langkah selanjutnya adalah mengirimkan informasi tersebut ke tiki dan kemudian merecord hasilnya dengan cURL. scripnya sebagai berikut:function parseTIKI($html){
//$htmltiki = file_get_contents($tiki); $htmltiki = str_replace(" _\n\t\t"," ", $html);
$hasil = explode("</table>
", $htmltiki);
$hasil = $hasil[2];
$hasil = explode("</font></td>
</tr>
",$hasil);
$hasil = $hasil[1];
$hasil = explode("align='left'>- ",$hasil);
//$htmltarrif = str_get_html($hasil); $hasilnya ="";
foreach ($hasil as $key ) {
# code... $hasiltmp = pangkas($key);
$hasilnya .= $hasiltmp."
\n";
}
return $hasilnya;
}
3. Parsing Halaman Web
Script parsing yang saya buat disini adalah hasil trial error. Bisa saja hasil script yang Anda buat jauh lebih bagus dari yang HUMAYRAA hasilkan:function parseTIKI($html){
//$htmltiki = file_get_contents($tiki); $htmltiki = str_replace(" _\n\t\t"," ", $html);
$hasil = explode("</table>
", $htmltiki);
$hasil = $hasil[2];
$hasil = explode("</font></td>
</tr>
",$hasil);
$hasil = $hasil[1];
$hasil = explode("align='left'>- ",$hasil);
//$htmltarrif = str_get_html($hasil); $hasilnya ="";
foreach ($hasil as $key ) {
# code... $hasiltmp = pangkas($key);
$hasilnya .= $hasiltmp."
\n";
}
return $hasilnya;
}
Script lengkapnya adalah sebagai berikut:<?php
/***************************************
Script untuk mengambil ongkir Tiki
langsung melalui web tiki-online.com
dengan menggunakan cURL dan html parsing
Copyright (c)2015 by Tanto Prihartanto
Published by Humayraa.com via GitHub
****************************************/
function pangkas($html){
$hasilnya = $html;
$hasilnya = str_replace("</td>
<td width='80%'>", ":", $hasilnya);
$hasilnya = str_replace("
<tr bgcolor=#fedfd1>
<td width='30%'", "", $hasilnya);
$hasilnya = str_replace("
<tr bgcolor=#fcc2a8>
<td width='30%'", "", $hasilnya);
$hasilnya = str_replace("</td>
</tr>
", "", $hasilnya);
$hasilnya = str_replace(",", "", $hasilnya);
$hasilnya = str_replace("</td>
<td _", "", $hasilnya); $hasilnya = str_replace("width='80%'>", " Rp ", $hasilnya);
return $hasilnya;
}
/* CARA GRAB TIKI */
function getKOTA(){
$hasil = file_get_contents("http://www.tiki-online.com/lib/cariori.php");
$hasil = explode("\n", $hasil);
return $hasil;
}
function grabTIKI($dari,$ke,$berat){
$ch = curl_init();
$url="http://www.tiki-online.com/?cat=KgfdshfF7788KHfskF";
$params = "&get_ori=".$dari."&get_des=".$ke."&get_wg=".$berat."&submit=Check";
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 0 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_URL, $url);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $params );
$hasil = curl_exec( $ch );
return $hasil;
}
function parseTIKI($html){
//$htmltiki = file_get_contents($tiki); $htmltiki = str_replace(" _\n\t\t"," ", $html);
$hasil = explode("</table>
", $htmltiki);
$hasil = $hasil[2];
$hasil = explode("</font></td>
</tr>
",$hasil);
$hasil = $hasil[1];
$hasil = explode("align='left'>- ",$hasil);
//$htmltarrif = str_get_html($hasil); $hasilnya ="";
foreach ($hasil as $key ) {
# code... $hasiltmp = pangkas($key);
$hasilnya .= $hasiltmp."
\n";
}
return $hasilnya;
}
$asalkota = $_POST['asal'];
$tujuankota = $_POST['tujuan'];
$berat = $_POST['berat'];
if ($asalkota == ""){
$listKota = getKOTA();
?>
<form action="tiki.php" method="post">
Dari: <input list="asalkota" name="asal">
<datalist id="asalkota">
<?php
foreach ($listKota as $kota) {
# code... echo '
<option value="'.$kota.'">';
echo "\n";
}
?>
</datalist>
Ke: <input list="tujuankota" name="tujuan">
<datalist id="tujuankota">
<?php
foreach ($listKota as $kota) {
# code... echo '
<option value="'.$kota.'">';
echo "\n";
}
?>
</datalist>
Berat:<input type="number" name="berat">
<input type="submit" value="Cek Tarif">
</form>
<?php }
if ($asalkota !=""){
echo "Asal : ".$asalkota."
\n";
echo "Tujuan : ".$tujuankota."
\n";
echo "Berat : ".$berat."
\n";
$hasil = grabTIKI($asalkota,$tujuankota,$berat);
// print_r($hasil); $hasil = parseTIKI($hasil);
echo "
<h2>TARIF</h2>
";
echo $hasil;
}
?>
Thanks to: humayraa.com
No comments:
Post a Comment