Postingan lainnya
Buku Ini Koding!
Baru!
Buku ini akan jadi teman perjalanan kamu belajar sampai dapat kerjaan di dunia programming!
Ongkir dan harga produk
Salam sobat PHP semua...
Setelah berhasil menampilkan harga ongkir dengan api rajaongkir, ada pertanyaan yang ingin saya ajukan, bagaimana mengkalkulasi ongkir dan harga , contoh harga produk Rp 150000,- , ongkir Rp50000,- nah untuk memunculkan total harga dan ongkir gimana? masalahnya yang untuk menampilkan nilai ongkir di index.php hanya begini:
<div class="panel panel-success">
<div class="panel-heading">
<h3 class="panel-title">Hasil</h3>
</div>
<div class="panel-body">
<ol>
<div id="ongkir"></div> //????
</div>
</ol>
</div>
sedang cek_ongkir ada di halaman cek_ongkir.php.
ambilnya pakai ajax, scriptnya begini :
<script type="text/javascript">
$(document).ready(function(){
$('#provinsi').change(function(){
//Mengambil value dari option select provinsi kemudian parameternya dikirim menggunakan ajax
var prov = $('#provinsi').val();
$.ajax({
type : 'GET',
url : 'https://domain.com/cek_kabupaten.php',
data : 'prov_id=' + prov,
success: function (data) {
//jika data berhasil didapatkan, tampilkan ke dalam option select kabupaten
$("#kabupaten").html(data);
}
});
});
$("#cek").click(function(){
//Mengambil value dari option select provinsi asal, kabupaten, kurir, berat kemudian parameternya dikirim menggunakan ajax
var asal = $('#asal').val();
var kab = $('#kabupaten').val();
var kurir = $('#kurir').val();
var berat = $('#berat').val();
$.ajax({
type : 'POST',
url : 'https://domain.com/cek_ongkir.php',
data : {'kab_id' : kab, 'kurir' : kurir, 'asal' : asal, 'berat' : berat},
success: function (data) {
//jika data berhasil didapatkan, tampilkan ke dalam element div ongkir
$("#ongkir").html(data);
}
});
});
});
</script>
4 Jawaban:
kalo ane liat respon data dari ajax, berupa json. tangkap aja data cost * total barang
menangkap cost yang ada di cek_ongkir.php sih bisa, tapi menangkap cost dari ajax gimana?
isi "data" dari respon ajax gmn gan? coba ss
index.php : <pre> <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Raja ongkir</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <link rel="stylesheet" href="assets/css/bootstrap.min.css"> <!-- <link rel="stylesheet" href="assets/css/bootstrap.css"> --> </head> <body> <br> <div class="container"> <img src="assets/images/logo.png" alt="logo"> <br><br><br> <div class="row"> <div class="col-md-4"> <div class="panel panel-success"> <div class="panel-heading"> <h3 class="panel-title">Cek Ongkos Kirim</h3> </div> <div class="panel-body"> <div> <?php //Get Data Kabupaten $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "http://api.rajaongkir.com/starter/city", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "key:API Key Mu Disini" ), ));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
echo "
&lt;div class= \"form-group\"&gt;
&lt;label for=\"asal\"&gt;Kota/Kabupaten Asal &lt;/label&gt;
&lt;select class=\"form-control\" name='asal' id='asal'&gt;";
echo "&lt;option&gt;Pilih Kota Asal&lt;/option&gt;";
$data = json_decode($response, true);
for ($i=0; $i &lt; count($data['rajaongkir']['results']); $i++) {
echo "&lt;option value='".$data['rajaongkir']['results'][$i]['city_id']."'&gt;".$data['rajaongkir']['results'][$i]['city_name']."&lt;/option&gt;";
}
echo "&lt;/select&gt;
&lt;/div&gt;";
//Get Data Kabupaten
//-----------------------------------------------------------------------------
//Get Data Provinsi
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL =&gt; "http://api.rajaongkir.com/starter/province",
CURLOPT_RETURNTRANSFER =&gt; true,
CURLOPT_ENCODING =&gt; "",
CURLOPT_MAXREDIRS =&gt; 10,
CURLOPT_TIMEOUT =&gt; 30,
CURLOPT_HTTP_VERSION =&gt; CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST =&gt; "GET",
CURLOPT_HTTPHEADER =&gt; array(
"key:API Key Mu Disini"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
echo "
&lt;div class= \"form-group\"&gt;
&lt;label for=\"provinsi\"&gt;Provinsi Tujuan &lt;/label&gt;
&lt;select class=\"form-control\" name='provinsi' id='provinsi'&gt;";
echo "&lt;option&gt;Pilih Provinsi Tujuan&lt;/option&gt;";
$data = json_decode($response, true);
for ($i=0; $i &lt; count($data['rajaongkir']['results']); $i++) {
echo "&lt;option value='".$data['rajaongkir']['results'][$i]['province_id']."'&gt;".$data['rajaongkir']['results'][$i]['province']."&lt;/option&gt;";
}
echo "&lt;/select&gt;
&lt;/div&gt;";
//Get Data Provinsi
?&gt;
&lt;div class="form-group"&gt;
&lt;label for="kabupaten"&gt;Kota/Kabupaten Tujuan&lt;/label&gt;&lt;br&gt;
&lt;select class="form-control" id="kabupaten" name="kabupaten"&gt;&lt;/select&gt;
&lt;/div&gt;
&lt;div class="form-group"&gt;
&lt;label for="kurir"&gt;Kurir&lt;/label&gt;&lt;br&gt;
&lt;select class="form-control" id="kurir" name="kurir"&gt;
&lt;option value="jne"&gt;JNE&lt;/option&gt;
&lt;option value="tiki"&gt;TIKI&lt;/option&gt;
&lt;option value="pos"&gt;POS INDONESIA&lt;/option&gt;
&lt;/select&gt;
&lt;/div&gt;
&lt;div class="form-group"&gt;
&lt;label for="berat"&gt;Berat (gram)&lt;/label&gt;&lt;br&gt;
&lt;input class="form-control" id="berat" type="text" name="berat" value="500" /&gt;
&lt;/div&gt;
&lt;button class="btn btn-success" id="cek" type="submit" name="button"&gt;Cek Ongkir&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="col-md-8"&gt;
&lt;div class="panel panel-success"&gt;
&lt;div class="panel-heading"&gt;
&lt;h3 class="panel-title"&gt;Hasil&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="panel-body"&gt;
&lt;ol&gt;
&lt;div id="ongkir"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;footer&gt;
&lt;div class="row"&gt;
&lt;div class="col-md-4"&gt;
&lt;p class="text-center"&gt;Copyright © 2018 Rajaongkir&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/footer&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
</html> <script type="text/javascript">
$(document).ready(function(){
$('#provinsi').change(function(){
//Mengambil value dari option select provinsi kemudian parameternya dikirim menggunakan ajax
var prov = $('#provinsi').val();
$.ajax({
type : 'GET',
url : 'http://localhost/royproweb/cek_kabupaten.php',
data : 'prov_id=' + prov,
success: function (data) {
//jika data berhasil didapatkan, tampilkan ke dalam option select kabupaten
$("#kabupaten").html(data);
}
});
});
$("#cek").click(function(){
//Mengambil value dari option select provinsi asal, kabupaten, kurir, berat kemudian parameternya dikirim menggunakan ajax
var asal = $('#asal').val();
var kab = $('#kabupaten').val();
var kurir = $('#kurir').val();
var berat = $('#berat').val();
$.ajax({
type : 'POST',
url : 'http://localhost/royproweb/cek_ongkir.php',
data : {'kab_id' : kab, 'kurir' : kurir, 'asal' : asal, 'berat' : berat},
success: function (data) {
//jika data berhasil didapatkan, tampilkan ke dalam element div ongkir
$("#ongkir").html(data);
}
});
});
});
</script> </pre>
cek_kabupaten.php :
<pre><?php
$provinsi_id = $_GET['prov_id'];
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "http://api.rajaongkir.com/starter/city?province=$provinsi_id", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "key:API Key Mu Disini" ), ));
$response = curl_exec($curl); $err = curl_error($curl);
curl_close($curl);
if ($err) { echo "cURL Error #:" . $err; } else { //echo $response; }
$data = json_decode($response, true); for ($i=0; $i < count($data['rajaongkir']['results']); $i++) { echo "<option value='".$data['rajaongkir']['results'][$i]['city_id']."'>".$data['rajaongkir']['results'][$i]['city_name']."</option>"; }
?> </pre>
cek_ongkir.php : <pre><?php $asal = $_POST['asal']; $id_kabupaten = $_POST['kab_id']; $kurir = $_POST['kurir']; $berat = $_POST['berat'];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL =&gt; "http://api.rajaongkir.com/starter/cost",
CURLOPT_RETURNTRANSFER =&gt; true,
CURLOPT_ENCODING =&gt; "",
CURLOPT_MAXREDIRS =&gt; 10,
CURLOPT_TIMEOUT =&gt; 30,
CURLOPT_HTTP_VERSION =&gt; CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST =&gt; "POST",
CURLOPT_POSTFIELDS =&gt; "origin=".$asal."&destination=".$id_kabupaten."&weight=".$berat."&courier=".$kurir."",
CURLOPT_HTTPHEADER =&gt; array(
"content-type: application/x-www-form-urlencoded",
"key:API Key Mu Disini"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
$data = json_decode($response, true);
}
?&gt;
&lt;?php echo $data['rajaongkir']['origin_details']['city_name'];?&gt; ke &lt;?php echo $data['rajaongkir']['destination_details']['city_name'];?&gt; @&lt;?php echo $berat;?&gt;gram Kurir : &lt;?php echo strtoupper($kurir); ?&gt;
&lt;?php
for ($k=0; $k &lt; count($data['rajaongkir']['results']); $k++) {
?&gt;
&lt;div title="&lt;?php echo strtoupper($data['rajaongkir']['results'][$k]['name']);?&gt;" style="padding:10px"&gt;
&lt;table class="table table-striped"&gt;
&lt;tr&gt;
&lt;th&gt;No.&lt;/th&gt;
&lt;th&gt;Jenis Layanan&lt;/th&gt;
&lt;th&gt;ETD&lt;/th&gt;
&lt;th&gt;Tarif&lt;/th&gt;
&lt;/tr&gt;
&lt;?php
for ($l=0; $l &lt; count($data['rajaongkir']['results'][$k]['costs']); $l++) {
?&gt;
&lt;tr&gt;
&lt;td&gt;&lt;?php echo $l+1;?&gt;&lt;/td&gt;
&lt;td&gt;
&lt;div style="font:bold 16px Arial"&gt;&lt;?php echo $data['rajaongkir']['results'][$k]['costs'][$l]['service'];?&gt;&lt;/div&gt;
&lt;div style="font:normal 11px Arial"&gt;&lt;?php echo $data['rajaongkir']['results'][$k]['costs'][$l]['description'];?&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;&nbsp;&lt;?php echo $data['rajaongkir']['results'][$k]['costs'][$l]['cost'][0]['etd'];?&gt; days&lt;/td&gt;
&lt;td align="right"&gt;&lt;?php echo number_format($data['rajaongkir']['results'][$k]['costs'][$l]['cost'][0]['value']);?&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;?php
}
?&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;?php
}
?&gt;
</pre>