PEMOGRAMAN WEB
MODUL 11
DISUSUN OLEH :
ELISABETH OKMINOP ALIM
135610116
B. DASAR TEORI
Master-Detail adalah fitur aplikasi input data yang memiliki dua buah block
yang keduanya direlasikan dalam hubungan Master dan Detail. Didalam aplikasi
untuk transaksi (master-detail) akan menggunakan fitur SQL Transaksi yang lazim
digunakan ketika akan memproses data-data yang penting didalam sistem, dimana
digunakan untuk proses querry lebih dari satu buah tabel yang
berhubungan/berelasi.
Form Master - Detail adalah form yang memiliki dua buah block yang
keduanya direlasikan dalam hubungan Master dan Detail. Dalam ER-Diagram, relasi
Master-Detail ini sama dengan relasi “One to Many”, artinya pada desain database
secara fisik, satu record tunggal dalam table Master memiliki referensi satu atau lebih
record yang ada pada table Detail.
Konsep Master - Detail atau One to Many ini biasanya digunakan saat
membuat form transaksi seperti pada form tansaksi penjualan, pembelian,
peminjaman buku dan lain - lain. Sekarang kita akan mencoba untuk membuat
aplikasi sederhana yang menerapkan konsep tersebut. Sebagai contoh anggap saja
kita akan membuat sebuah form transaksi dimana dalam form tersebut terdapat 3
tabel yang saling berhubungan, field dan relasi tabel tersebut ditunjukkan dengan
gambar di bawah ini.
3. Setelah penambahan barang selesai dan dilakukan penyimpanan, maka data yang
ada disimpan ke table penjualan dan khusus untuk table detail akan diisi dengan
data yang ada di table temporary atau dengan kata lain saat melakukan simpan ini
data yg ada di table temporary di salin ke dalam table detail. Jadi dalam satu
penyimpanan ada kemungkinan record yang bertambah di dalam table detail bisa
lebih dari satu data sedangkan record yang masuk di table penjualan tetap satu data,
Inilah makanya dinamai juga dengan One to Many.
C. PEMBAHASAN
barang_tersedia.php
<?php
$barang_pilih = 0;
if (isset($_COOKIE['keranjang'])) {
$barang_pilih = $_COOKIE['keranjang']; }
if (isset($_GET['idbarang'])) {
$idbarang = $_GET['idbarang'];
$barang_pilih = $barang_pilih .",".$idbarang;
setcookie('keranjang',$barang_pilih,time()+3600); }
include"koneksi.php";
$sql = "select * from barang where idbarang not in (".$barang_pilih.")
and stok > 0 order by idbarang desc ";
$hasil = mysqli_query($kon, $sql);
if (!$hasil)
die ("Gagal qurey..".mysqli_error() );
?>
Script diatas adalah script yang digunakan untuk menampilkan daftar barang
yang tersedia. Script diatas juga pada saat kita menjalankan programnya dan
mengklik BELI, maka hal yang terjadi adalah barang yang kita pilih untuk dibeli,
secara otomatis akan hilang dari daftar barang yang tersedia, dan url di browser
akan tampak seperti ini :
http://localhost/modul11/barang_tersedia.php?menu=pilih&idbarang=80 hal
tersebut dikarenakan, terdapat script dalam program yaitu sebuah link seperti pada
gambar dibawah, yaitu pada line 36 tepatnya.
Keranjang_belanja.php
<?php
$barang_pilih = 0;
if (isset($_COOKIE['keranjang'])) {
$barang_pilih = $_COOKIE['keranjang']; }
if (isset($_GET['idbarang'])) {
$idbarang = $_GET['idbarang'];
$barang_pilih = str_replace((",".$idbarang),"",$barang_pilih) ;
setcookie('keranjang',$barang_pilih,time()+3600); }
include"koneksi.php";
$sql = "select * from barang where idbarang in (".$barang_pilih.")
order by idbarang desc ";
$hasil = mysqli_query($kon, $sql);
if (!$hasil)
die ("Gagal qurey..".mysqli_error() );
?>
<h2>KERANJANG BELANJA</h2>
<table border="1">
<tr>
<th>Foto</th>
<th>Nama Barang</th>
<th>Harga Jual</th>
<th>Stok</th>
<th>Operasi</th>
</tr>
<?php
$no = 0;
while ($row = mysqli_fetch_assoc($hasil)) {
echo " <tr> ";
echo " <td> <a href='pict/".$row['foto']." ' />
<img src='thumb/t_".$row['foto']." ' width='100' />
</a> </td>";
echo " <td> ".$row['nama']."</td>";
echo " <td> ".$row['harga']."</td>";
echo " <td> ".$row['stok']."</td>";
echo " <td> ";
echo " <a href='".$_SERVER['PHP_SELF']."?idbarang=".$row
['idbarang']."'> BATAL </a>" ;
echo " </td> ";
echo " </tr>"; }
?>
</table>
beli.php
<h2>DATA PEMBELIAN BARANG</h2>
<form action='simpan_beli.php' method="POST">
<table border="0">
<tr>
<td>Nama</td>
<td>: <input type="text" name="namacust" /> </td>
</tr>
<tr>
<td>Email</td>
<td>: <input type="email" name="email" /> </td>
</tr>
<tr>
<td>No. Telp</td>
<td>: <input type="text" name="notelp" /> </td>
</tr>
<tr>
<td colspan="2" align="right">
<input type="submit" value="Simpan" /> </td>
</tr>
</table>
</form>
<?php
include_once("keranjang_belanja.php");
?>
Koneksi.php
<?php
error_reporting (E_ALL ^ E_DEPRECATED);
$host = "localhost";
$user = "root";
$pass = "";
$dbName = "toko_ol";
$kon = mysqli_connect ($host, $user, $pass);
if (!$kon)
die ("Gagal Koneksi...");
mysqli_query ($kon, $sqlTabelHjual) or die ("Gagal Buat Tabel Header Jual ");
Script diatas merupakan koneksi yang kita buat agar terhubung kedatabase
toko_ol. Dimana ketika koneksi dan database yang kita buat telah jadi maka ketika
kita membuak database toko_ol akan tampil tabel hjual dan djual sesuai pada script
yang telah dibuat. Dan saat melakukan uji konekasi maka akan tampil Tabel Siap.
simpan_beli.php
<?php
$namacust = $_POST['namacust'];
$email = $_POST['email'];
$notelp = $_POST['notelp'];
$tanggal = date("Y-m-d");
$barang_pilih = '' ;
$qty =1;
$dataValid = "YA";
if (strlen(trim($namacust)) == 0 ) {
echo "Nama Harus Diisi...<br/>";
$dataValid="TIDAK";
}
if (strlen(trim($notelp))==0) {
echo "No. Telp Harus Diisi... </br>";
$dataValid = "TIDAK";
}
if (isset($_COOKIE['keranjang'])) {
$barang_pilih = $_COOKIE['keranjang'] ;
$dataValid = "TIDAK";
}else{
echo "Keranjang Belanja Kosong <br/>" ;
$dataValid="TIDAK";
}
if ($dataValid == "TIDAK") {
echo "Masih Ada Kesalahan, Silahkan Perbaiki! </br>";
echo "<input type = 'button' value = 'Kembali'
onClick = 'self.history.back()'>";
exit;
}
echo "Data Siap disimpan.";
setcookie('keranjang',$barang_pilih,time()-3600);
?>
Scipt diatas merupakan script sambungan dari scrip beli.php, di mana saat
kita mengklik buttom simpan maka hasil keluarannya akan tampak pada gambar di
bawah ini.
Kenapa tampilannya seperti diatas, hal tersebut dikarenakan, pada
barang_keranjang.php belum terisi sehinggan tampilannya seperti pada gambar di
atas. Dan ketika barang yang dipilih dan dibeli, sudah ada pada kerangjang, maka
akan tampak tampilan seperti pada gambar dibawah ini :
D. TUGAS
koneksi.php
<?php
$host = "localhost";
$user = "root";
$pass = "";
$dbName = "toko_buku";
simpan_pinjam.php
<style>
/* buat class noprint, agar tampil di screen
tapi tidak muncul saat cetak */
@media print {
.noprint {
display:none; }
}
@media screen {
.noprint_sc {
display:none; }
}
</style>
<?php
$namacust = $_POST['namacust'];
$email = $_POST['email'];
$notelp = $_POST['notelp'];
$tanggal = date("Y-m-d");
$dataValid = "YA";
if (strlen(trim($namacust)) == 0 ) {
echo "Nama Harus Diisi...<br/>";
$dataValid="TIDAK"; }
if (strlen(trim($notelp))==0) {
echo "No. Telp Harus Diisi... </br>";
$dataValid = "TIDAK"; }
if ($dataValid == "TIDAK") {
echo "Masih Ada Kesalahan, Silahkan Perbaiki! </br>";
echo "<input type = 'button' value = 'Kembali'
onClick = 'self.history.back()'>";
exit; }
include "koneksi.php";
$simpan = true;
$mulai_transaksi = mysql_query('start transaction') ;
$iddpinjam = 0 ;
$hasil = mysql_query("select last_insert_id()");
if(!$hasil){
$simpan= false ;
}else{
$data = mysql_fetch_array($hasil) ;
$iddpinjam = $data[0]; }
$buku_pilih = '';
if(isset($_COOKIE['keranjang'])) {
$buku_pilih = $_COOKIE['keranjang'] ;
}else{
$simpan = false ; }
$buku_array = explode(",",$buku_pilih) ;
$jumlah = count ($buku_array) ;
if ($jumlah <=1) {
$simpan = false;
}else{
foreach($buku_array as $kodebuku) {
if($kodebuku == 0) {
continue ; }
$sql = "select * from buku where kodebuku = ".$kodebuku ;
$hasil = mysql_query($sql) ;
if(!$hasil) {
$simpan = false ;
}else{
$row = mysql_fetch_assoc($hasil) ;
$harga = $row['harga'] ; }
$gty = 1;
$sql = "insert into djual (iddpinjam, idpinjam, qty)
values
('$iddpinjam','$idpinjam','$qty') ";
$hasil = mysql_query($sql) ;
if(!$hasil) {
$simpan = false; }
}
}
if ($simpan) {
$komit = mysql_query('commit');
}else{
$rollback = mysql_query('rollback') ;
echo"Gagal Simpan Data Peminjaman ? <br/>
Apakah Keranjang Peminjaman Tidak Kosong ? <br/>
<a href='peminjaman_buku.php'> OK </a> ";
exit; }
echo"<pre>";
echo"<h2>DATA PEMINJAMAN</h2>";
echo"================================================<br/>";
echo"NO. PEMINJAMAN :".date("Ymd").$iddpinjam."<br/>";
echo"TANGGAL PINJAM :".date("d-m-Y"),"<br/>";
echo"TANGGAL HARUS KEMBALI :".date("d-m-Y"),"<br/>";
echo"NAMA PEMINJAMAN :".$namacust."<br/>";
echo"================================================<br/>";
echo"tunjukkan bukti pinjam ini ketika pengembalian.<br/>";
include("buku_keranjang.php");
echo"</pre>";
?>
<div class="noprint">
Data Pembelian Berhasil Disimpan.
Cetak Bukti Pembelian Barang Ini. <br/>
<input type='button' value='Cetak'
onclick='javascrip:print();'>
<br/><br/>
<a href="peminjaman_buku.php">Pinjam Buku Lagi </a> <br/>
</div>
<?php
setcookie('keranjang',$buku_pilih,time()-3600);
?>
E. KESIMPULAN
Dengan adanya aplikasi transakasi (MASTER-DETAIL) ini,untuk sebuah toko
sangatlah bermanfaat, dikarenakan dengat adanya aplikasi ini, toko bisa lebih detail
lagi dalam melakukan big data dan mengelolah data yang ada didalam.
F. DAFTAR PUSTAKA
Pemrograman WEB Modul Pertemuan ke-11, www.php.net.
http://www.foxpromania.com/2011/04/penerapan-konsep-master-detail-atau-one.html
G. LISTING
Terlampir .