Modul Sistem Basis Data
Modul Sistem Basis Data
A. TATA TERTIB
1. Praktikan diharapkan hadir tepat pada waktunya. Keterlambatan lebih dari 20 menit,
praktikan tidak boleh mengikuti praktikum dan dianggap tidak hadir (alpa).
2. Praktikan wajib duduk dan menggunakan komputer pada tempat/komputer yang telah
ditentukan (tidak boleh pindah dari satu komputer ke komputer lain selama periode
pelaksanaan praktikum).
3. Mengisi daftar hadir sebagai bukti mengikuti kegiatan praktikum.
4. Praktikan wajib memelihara dan menjaga peralatan yang ada diruang komputer.
5. Kerusakan/kehilangan yang disebabkan oleh praktikan merupakan tanggung jawab
praktikan.
6. Praktikan harus membawa media penyimpanan (CD/DVF/media penyimpanan lainnya
yang bebas dari virus).
7. Praktikan tidak diperkenankan memakai T-SHIRT dan sandal dalam jenis apapun selama
praktikum berlangsung.
8. Selama praktikum berlangsung, praktikan tidak diperkenankan keluar dari ruang
komputer, kecuali bila ada keperluan yang sangat penting dan tidak dapat pula ditunda.
9. Apabila praktikan akan meninggalkan ruang praktikum maka praktikan dapat meminta izin
terlebih dahulu kepada coordinator praktikum.
10. Selama praktikum berlangsung tidak diperkenankan merokok, makan dan minum.
11. Praktikan harus memberikan laporan praktikum paling lambat 1 minggu setelah praktikum
modul terakhir selesai.
12. Ketentuan lain yang belum tercantum, tetapi kemudian dipandang perlu akan ditetapkan
kemudian.
MODUL I
Membuat Database dan Tabel
1.1 Tujuan
Dengan menggunakan database MySQL akan mampu menciptakan sebuah database
relasional yang terpusat pada sebuah database server, sehingga para mahasiswa akan mampu
untuk mengembangkan kemampuannya dalam membangun sebuah sistem basis data yang
berbasis Client/Server.
1.2 Teori Singkat MySQL
MySQL merupakan sebuah database server yang dapat berjalan pada beberapa sistem
operasi. Pada awalnya distro MySQL dikembangkan dan dijalankan hanya pada Sistem operasi
LINUX saja, akan tetapi dengan perkembangannya sekarang distro MySQL dapat juga dijalankan
pada beberapa sistem seperti Windows 9X,2000,NT, maupun pada computer solaris.
Database dengan nama MySQL atau dibaca (mai es kuel) ini dapat membuat berpuluhpuluh bahkan beratus-ratus user untuk diolah didalamnya. Karena berupa database server maka
program ini telah memiliki sebuah sistem keamanan yang dipercaya bagi para penggunanya.
Database MySQL memiliki lisensi resmi dari GNU/GPL (General Public License), sebagai
pengguna anda dapat menggunakan secara bebas dan tanpa harus bayar.
Perintah yang digunakan dalam MySQL adalah perintah SQL (Struktur Query Language)
yaitu berupa bahasa permintaan yang terstruktur yang telah distandarkan oleh pihak ANSI/ISO.
Perintah-perintah yang digunakan dalam membangun sebuah database dan tabel adalah:
1.2.1 Elemen SQL
Elemen dasar SQL mencakup pernyataan, nama, tipe data, konstanta, ekspresi, dan fungsi
bawaan.
1. Pernyataan
Pernyataan adalah perintah SQL yang meminta sesuatu tindakan kepada DBMS. SQL memiliki
kira-kira 30 pernyataan. Beberapa pernyataan dasar SQL dapat dilihat pada tabel berikut :
Pernyataan
Keterangan
ALTER
COMMIT
CREATE
DELETE
DROP
GRANT
grup pengguna
INSERT
REVOKE
ROLLBACK
gagal dilaksanakan
SELECT
UPDATE
2. Nama
Nama digunakan sebagai identitas bagi objek-objek pada DBMS. Contoh objek pada DBMS adalah
tabel, kolom dan pengguna.
3. Tipe Data
Setiap data memiliki tipe data. Berikut ini adalah tipe data dalam MySQL :
3.1 Tipe data untuk numerik :
Tipe
TINYINT
Keterangan
Range Nilai
kecil
s.d. 255
Signed
SMALLINT
dengan
nilai
-32768
s.d.
Integer
-8388608
8388607Unsigned
MEDIUMINT
medium
16777215
Tipe
Keterangan
Range Nilai
s.d.
s.d.
Signed
Integer
INT
dengan
nilai
standar
-2147483648
s.d.
2147483647Unsigned : 0 s.d.
4294967295
Signed : -9223372036854775808
s.d.
9223372036854775807Unsigned
BIGINT
FLOAT
: 0 s.d. 18446744073709551615
minimum
single-precission
38maksimum 3.402823466e+38
1.175494351e-
minimum
2.2205738585072014e-
DOUBLE
308maksimum
double-precission
1.7976931348623457e+308
koma
Keterangan : Signed dan Unsigned adalah atribut untuk tipe data numeric
a.
Signed : data yang disimpan dalam suatu kolom dapat berupa data negatif dan positif.
b.
Unsigned : digunakan agar data yang dimasukkan bukan data negatif (>=0). Tipe data float
tidak dapat dinyatakan dengan unsigned.
Keterangan
Maksimum
yaitu n
1 M byte
tetap, maksimum n.
1 M byte
kecil
28-1 byte
BLOB
216-1 byte
MEDIUMBLOB
224-1 byte
LONGBLOB
232-1 byte
TINYTEXT
28-1 byte
TEXT
216-1 byte
MEDIUMTEXT
224-1 byte
LONGTEXT
232-1 byte
SET
member enumerasi
65535 anggota
64
himpunan
anggota
Range
Format
31
0000-00-00
TIME
00:00:00
9999-12-31 23:59:59
0000-00-00 00:00:00
4. Konstanta
Konstanta menyatakan nilai yang tetap.
5. Ekspresi
Ekspresi adalah segala sesuatu yang menghasilkan nilai. Ekspresi digunakan untuk menghitung
nilai. Simbol-simbol yang dapat digunakan pada ekspresi aritmatika.
Simbol
Keterangan
Perkalian
Pembagian
Penjumlahan
Pengurangan
AVG(ekspresi)
Fungsi ini digunakan untuk mencari rata-rata nilai dalam suatu kolom dari suatu tabel atau
ekspresi. Ekspresi dalam fungsi AVG umumnya adalah nama kolom. Kolom yang dicari nilai
rata-ratanya adalah kolom dengan tipe data numerik.
b.
COUNT(x)
Fungsi ini digunakan untuk menghitung jumlah record (baris) dari suatu kolom dari suatu tabel.
X adalah nama kolom yang ingin dicari jumlah barisnya.
c.
MAX(ekspresi)
Fungsi ini digunakan untuk mencari nilai terbesar dari suatu kolom dari suatu tabel. Kolom
yang dicari nilai terbesarnya memiliki tipe data numerik.
d.
MIN(ekspresi)
Fungsi ini digunakan untuk mencari nilai terkecil dari suatu kolom dari suatu tabel. Kolom yang
dicari nilai terkecilnya memiliki tipe data numerik.
e.
SUM(ekspresi)
Fungsi ini digunakan untuk mendapatkan nilai total dari suatu kolom pada suatu tabel.
XAMPP merupakan tool yang menyediakan paket perangkat lunak ke dalam satu buah
paket. Dengan meningstall XAMPP maka tidakperlu lagi melakukan instalasi dan konfigurasi web
server apache, PHP dan MySQL secara manual. XAMPP akan menginstalasi dan
mengkonfigurasikannya secara otomatis atau auto konfigurasi. Versi terbaru XAMPP bisa
didownload pada http://www.apachefriends.org/en/xampp-window.html.
Untuk menginstalasi xampp dengan melakukan tahapan berikut:
1. Jalankan file xampp-win32-1.4.12-installer.exe (atau versi lainnya), maka akan muncul
dialog instalasi memilih Bahasa yang ingin digunakan saat instalasi:
3. Klik Maju, kmudian tampil dialog perihal lisensi, klik saya setuju untuk melanjutkan.
4. Selanjutnya akan muncul pemilihan tempat menginstalasi program, secara default terdapat
pada drive C, tetapi bisa sajakita pindahkan sesuai keinginan dengan mengklik tombol
browse.
5. Jika sudah menentukan tempat instalasi (destination folder) klik instal dan tunggu sampai
proses selesai.
6. Jalankan XAMPP Control Panel yang ada di desktop. Atau anda juga dapat menjalankan
XAMPP Control Panel dari menu Start -> All Programs -> apachefriends -> xampp ->
xampp control panel. Beri centang pada kolom service untuk Apache dan MySQL, setelah
itu klik Start pada actions untuk service yang diakifkan sehingga tombol start berubah menjadi
Stop.
10
7. Untuk memanggil MySQL bisa melalui Command Prompt. Dengan memasukan perintah:
-
cd c:\xampp\mysql\bin
setelah itu klik enter dan ketikkan
mysql u root p
setelah itu klik enter
11
barang
kategori
kd_kategori
kategori
PK
Pelanggan
kd_pemesan
nama
alamat
kota
kd_pos
negara
no_telp
email
kd_propinsi
status_pesan
kd_barang
kd_kategori
nama_barang
file_gambar
harga
keterangan
stok
PK
FK
PK
pesan
FK
no_pesan
kd_pemesan
tanggal
jam
status_bayar
unik_transfer
PK
FK
detail_pesan
id_pesan
no_pesan
kd_barang
jumlah
PK
FK
FK
propinsi
kd_propinsi
nama_propinsi
ongkos_kirim
PK
1. PERINTAH CREATE/PEMBUATAN
1)
CREATE DATABASE
Syntax:
CREATE DATABASE namadatabase;
Namadatabase tidak boleh mengandung spasi dan tidak boleh memiliki nama yang sama
antar database. Berikut ini contoh perintah untuk membuat database dengan nama
tokoonline:
Syntax tambahan: untuk menampilkan daftar nama database yang ada pada mysql
menggunakanperintah:
SHOW DATABASES;
Berikut ini perintah untuk menggunakan database dengan nama tokoonline:
USE namadatabase;
2) CREATE TABLE
Sebelum membuat suatu tabel, terlebih dahulu harus memilih salah satu database
sebagai database aktif yang akan digunakan untuk menyimpan tabel-tabel dengan
menggunakan syntax:
CREATE TABLE namatabel
(Field1 TipeData1,
12
Syntax tambahan:
Untuk menampilkan daftar nama tabel yang ada pada database yang sedang
aktif/digunakan (dalam hal ini database tokoonline):
SHOW TABLES;
Seperti berikut ini:
Untuk menampilkan deskripsi tabel (dalam hal ini kategori) syntaxnya adalah:
DESC namatabel;
13
Mysql>
INSERT
INTO
pelanggan
VALUES
(qqw123,Anita,P,Jl.
Cimanuk
No.45,3,44100,083827439999,[email protected]);
INSERT
INTO
pelanggan
VALUES
(qq7769,Fathya,P,Jl.
Bratayudha,3,44100,089999000876,[email protected]);
INSERT
INTO
pelanggan
VALUES
(334dd1,Fikri,O,Wanaraja,3,44100,083222111333,[email protected]);
Setelah melakukan input data, lihat apa yang akan terjadi. Data jenis kelamin untuk fikri tidak ada,
dalam hal ini berarti kolom tersebut hanya mengijinkan data masuk antara P dan L.
3. PERINTAH DROP/PENGHAPUSAN
1.
DROP DATABASE
Syntax:
DROP DATABASE namadatabase;
Data yang akan dihapus sesuai dengan nama database. Berikut ini perintah untuk
menghapus database dengan nama tokoonline:
2. DROP TABLE
Syntax:
DROP TABLE namatabel;
Tabel yang akan dihapus sesuai dengan nama tabel, berikut ini perintah untuk
menghapus tabel dengan nama pelanggan:
14
4. PERINTAH ALTER
Perintah ALTER digunakan untuk membuat suatu perubahan struktur pada table:
ALTER TABLE pelanggan
ADD Negara VARCHAR(25) NOT NULL;
15
Berikut ini perintah untuk membuat tabel barang dengan mendefinisikan not null dan primary
key untuk kolom kd_barang serta nilai default untuk kolom harga dan stok:
Atau
Atau
Berikut ini perintah yang digunakan untuk menghapus primary key pada tabel barang:
16
TABLE
namatabel
CHANGE
COLUMN
namalamakolom
namabarukolom
tipedatanya;
Namatabel adalah nama tabel yang akan diubah nama kolomnya, namalamakolom adalah
kolom yang akan diganti namanya,namabarukolom adalah nama baru kolom, tipedatanya
17
adalah tipe data dari kolom tersebut. Berikut ini perintah untuk merubah nama kolom
keterangan menjadi deskripsi_barang:
Atau:
18
Jika kita ingin menggunakan multi index, maka formatnya adalah sebagai berikut:
CREATE
INDEX
[nama_index]
on
[database]([kolom1](panjang_karakter1),
[kolom2](panjang_karakter2));
19
MODUL 2
MANIPULASI DATA DAN TABEL
2.1 Tujuan
Dengan menggunakan database MySQL akan mampu mengimplementasikan perintahperintah SQL DML.
2.2 DML
Data Language yang kedua adalah DML (Data Manipulation Language), merupakan Bahasa
yang berhubungan dengan proses manipulasi data pada tabel dan record.
1. INSERT
Perintah INSERT digunakan untuk menambahkan baris pada satu tabel. Terdapat dua cara
untuk menambah baris, yaitu:
Cara 1: Menambah baris dengan mengisi data pada setiap kolom:
INSERT INTO namatabel VALUES (nilai1,nilai2,nilai-n);
Cara 2: Menambah baris dengan hanya mengisi data pada kolom tertentu:
INSERT INTO namatabel (kolom1,kolom2,kolom-n) VALUES (nilai1,nilai2,nilai-n);
Berikut ini perintah untuk menambahkan baris pada tabel kategori:
Cara 1:
Cara 2:
Keterangan:
Jika data bertipe string, date atau time (contoh: kerudung, 2015-17-10) maka pemberian
nilainya diapit dengan tanda petik tunggal ( ) atau petik ganda ( ). Jika bertipe numeric
(2500,400) maka pemberian nilainya tidak diapit tanda petik tunggal maupun ganda.
Cara 3: memasukan beberapa data dalam satu baris syntax mysql.
Contoh:
INSERT INTO kategori VALUES (k003,Sepatu), (k004,Dress),(k005,Accesoris);
2. UPDATE
Perintah UPDATE digunakan untuk mengubah isi data pada satu atau beberapa kolom pada
suatu tabel.
Syntax:
20
Contoh 1: mengubah jenis kategori menjadi tas kulit pada kolom kategori dimana kode
kategorinya adalah k001:
Contoh 1: jika ingin menghapus seluruh baris pada tabel jenis film:
21
Contoh 2: jika ingin menghapus baris kemeja pada kolom kategori maka perintahnya sebagai
berikut:
4. SELECT
Perintah SELECT digunakan untuk menampilkan isi dari suatu tabel yang dapat dihubungkan
dengan tabel lainnya.
a. Menampilkan data untuk sema kolom menggunakan asterisk (*)
Syntax:
SELECT * FROM namatabel;
Berikut perintah untuk menampilkan semua
22
Berikutini perintah untuk menampilkan data pada tabel barang dimana barang tersebut
memiliki kode_kategori k001:
Beberapa operator perbandingan yang dapat digunakan pada klausa WHERE selain =
adalah: > (lebih dari), < (kurang dari), < > (tidak sama dengan), >= (lebih dari atau sama
dengan), <= (kurang dari atau sama dengan). Adapun operator lain, yaitu AND, OR, NOT,
BETWEEN-AND, IN dan LIKE. Berikut ini data barang dan harga yang ada pada tabel
barang:
Contoh 1: perintah untuk menampilkan data pada tabel barang dimana nilai harga berkisar
dari 150000 sampai 300000:
Atau
Contoh 2: perintah untuk menampilkan data pada tabel barang dimana harga sama
dengan 150000 atau 750000:
23
Atau
Contoh 3: perintah untuk menampilkan data pada tabel jenis barang dimana nilai pada
kolom nama_barang tidak sama dengan summer bag:
Atau
Contoh 4: perintah untuk menampilkan data pada tabel barang dimana data pada kolom
tertentu diawalii dengan nilai tertentu, misalnya pada kolom nama_barang dimana diawali
dngan karakter V:
24
f.
25
Berikut ini perintah untuk menampilkan semua data pada tabel barang dan kategori:
Berikut ini perintah untuk menampilkan beberapa kolom dari tabel barang dan kategori
menggunakan relasi kd_kategori:
26
27
MODUL 3
FUNGSI SQL LANJUTAN
(Perhitungan Data dan Fungsi)
3.1 Tujuan
Dapat membuat perintah-perintah SQL yang berhubungan dengan perhitungan data dalam
basis data dan menggunakan fungsi-fungsi yang ada dalam MySQL.
3.2 Langkah Praktikum
1. ARITHMETIC OPERATORS
Contoh :
Buat tabel angka dengan data berupa angka seperti tabel berikut :
Contoh:
28
2. AGGREGATE FUNCTIONS
Fungsi Aggregate : digunakan untuk mengambil data tunggal hasil dari perhitungan data
yang tersimpan dalam suatu kolom.
Contoh:
29
3. STRING FUNCTION
a. CHAR_LENGTH(), CHARACTER_LENGTH(), dan LENGTH()
CHAR_LENGTH() dan CHARACTER_LENGTH() untuk menghitung jumlah karakter
sedangkan LENGTH() yang dihitung adalah jumlah byte per karakter, bukan karakternya.
Contoh :
30
31
f.
SUBSTRING()
Contoh :
32
g. MID()
33
Contoh :
4. NUMERIC FUNCTION
a. CEIL(), CEILING(), dan FLOOR()
Contoh:
b. MOD()
Contoh:
c. PI()
Contoh:
34
f.
SQRT()
Contoh:
5. DATE/TIME FUNCTIONS
Buat tabel test_date dengan struktur dan data seperti tabel berikut :
35
Contoh:
36
37
Contoh :
38
39
f.
40
41
MODUL 4
FUNGSI SQL LANJUTAN
1. Fungsi Aggregate
42
hasilnya merupakan data tunggal yang menunjukkan jumlah baris (atau jumlah
transaksi) dalam tabel transaksi.
2. Group By
Menampilkan data pelanggan dan berapa banyak transaksi pembelian barang yang
telah dilakukannya.
Contoh:
ORDER BY tidak dapat digunakan pada Query yang hanya mengandung fungsi
Aggregate, yaitu tanpa ada GROUP BY.
43
Contoh:
4. HAVING
Digunakan dengan GROUP BY untuk mengkondisikan suatu group data hasil
perhitungan dari fungsi Aggregate. HAVING mempunyai fungsi dan sintak yang sama
dengan WHERE.
Contoh:
Menampilkan data pelanggan yang melakukan transaksi pembelian barang minimal 2
kali.
Buka cmd kemudian arahkan ke lokasi dimana MySQL atau XAMPP di install
44
Dengan menggunakan Explorer lihat hasil bacup di lokasi yang sudah ditentukan
sebelumnya, jika ada file dengan nama yang ditentukan diatas, maka backup database
berhasil dilakukan
45
Buka cmd kemudian arahkan ke lokasi dimana MySQL atau XAMPP di install
D:\
backup_tokoonline.slq
Masuk kembali kedalam MySql, kemudian pada database yang baru dibuat coba lihat
semua tabel yang ada pada database contoh_restore, jika isi tabel sama dengan isi pada
database yang sebelumnya dilakukan backup, maka restore database berhasil dilakukan.
46
MODUL 5
MEMBUAT ANTARMUKA PROGRAM
DENGAN AUTORITAS USER (ADMIN/OPERATOR)
5.1 Tujuan
1. Praktikan mampu membuat koneksi dan antarmuka untuk pengolahan database.
2. Praktikan mampu membuat antarmuka secara manual.
5.2 Langkah Praktikum
5.2.1 Menyiapkan Database dan Tabel MySQL
Berikut ini adalah langkah-langkah yang dilakukan untuk membuat sebuah website toko
online sederhana:
1. Langkah pertama yang dilakukan adalah membuat database baru dengan nama toko,
dengan menggunakan perintah:
CREATE DATABASE toko;
2. Buat 4 tabel berikut:
a. Tabel Kategori, untuk menyimpan data kategori produk:
CREATE TABLE IF NOT EXISTS `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`category` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
)
b. Tabel Produk, untuk menyimpan data produk:
CREATE TABLE IF NOT EXISTS `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`product_name` varchar(100) NOT NULL,
`price` bigint(20) NOT NULL,
`image` varchar(1000) NOT NULL,
`id_category` int(11) NOT NULL,
`deskripsi` text NOT NULL,
PRIMARY KEY (`id`)
)
c. Tabel keranjang, untuk menyimpan data sementara dari pesanan:
CREATE TABLE IF NOT EXISTS `keranjang` (
`id_keranjang` int(5) NOT NULL AUTO_INCREMENT,
`id_product` int(5) NOT NULL,
`id_session` varchar(100) COLLATE latin1_general_ci NOT NULL,
`tgl_keranjang` date NOT NULL,
`qty` int(4) NOT NULL,
PRIMARY KEY (`id_keranjang`)
)
d. tabel order pesanan, untuk menyimpan data pesanan:
47
Folder admin
Folder css
Folder foto
48
Folder include
: digunakan untuk menyimpan file php koneksi database dan fungsi untuk
dapat menjalankan web toko online
3. Buka folder include, Buat file yang diberi nama lib.php menggunakan software notepad. isilah
file tersebut dengan fungsi-fungsi berikut ini.
<?php
$seminggu =
array("Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu");
$hari = date("w");
$hari_ini = $seminggu[$hari];
$tgl_sekarang = date("Ymd");
$thn_sekarang = date("Y");
$jam_sekarang = date("H:i:s");
$nama_bln=array(1=> "Januari", "Februari", "Maret", "April", "Mei",
"Juni", "Juli", "Agustus", "September",
"Oktober", "November", "Desember");
//fungsi untuk keranjang belanja
function cart_content(){
$ct_content = array();
$sid = session_id();
$sql = mysql_query("SELECT * FROM keranjang WHERE
id_session='$sid'");
while ($r=mysql_fetch_array($sql)) {
$ct_content[] = $r;
}
return $ct_content;
}
//fungsi untuk menghapus keranjang
function deletecart(){
$del = date('Y-m-d', mktime(0,0,0, date('m'), date('d') - 1,
date('Y')));
mysql_query("DELETE FROM keranjang WHERE tgl_keranjang < '$del'");
}
$server = "localhost";
$username = "root";
$password = "";
$database = "toko";
mysql_connect($server,$username,$password) or die("Koneksi gagal");
mysql_select_db($database) or die("Database tidak bisa dibuka");
?>
4. Selanjutnya masuk ke dalam tahap cara menggunakan teknik modulasi. dengan teknik
modulasi ini dapat memudahkan dalam melakukan pengembangan dan perawatan suatu
aplikasi web, teknik modulasi ini merupakan suatu teknik pemisahan sebuah aplikasi
menjadi bagian-bagian kecil. buat file-file dibawah ini didalam folder include :
1. bottom.php
49
2. cart.php
3. cart2.php
4. home.php
5. left.php
6. order.php
7. product.php
8. top.php
5. Setelah membuat file diatas, isikan file tersebut dengan syntax berikut:
bottom.php
</div>
<br class="clearfloat" />
</div>
<div class="footer">
<p align="center">© <?php echo date('Y') ?> Praktikum Sistem
Basis Data</p>
</div>
</div>
</body>
</html>
File diatas berfungsi untuk menampilkan bagian bawah website toko online ini.
cart.php
<div class="BigContent">
<div class="RightContent">
<h1 class="Judul">Shopping Cart</h1>
<div class="KetProd">
<table class="TableCart" width="100%"
cellspacing="0" cellpadding="0" border="0" style="border-top: 1px
dotted #0; border-bottom: 1px dotted #0;">
<tr><th>No</th>
<th>Foto Produk</th>
<th>Nama Produk</th>
<th>Jumlah</th>
<th>Harga</th>
<th>Delete</th>
</th>
<?php
$sid = session_id();
$no = 1;
50
cart2.php
<?php
include "inc/koneksi.php";
$sid = session_id();
$sql = mysql_query("SELECT * FROM keranjang");
$row = mysql_num_rows($sql);
$jml = mysql_fetch_array($sql);
echo "<span class='KetCart'>$row item</span>";
?>
51
File diatas berfungsi untuk menampilkan produk yang telah dimasukan kedalam tabel
keranjang dan menghitungnya dengan menggunakan fungsi mysql_num_rows()
home.php
<div class="BigContent">
<div class="RightContent">
<h1 class="Judul">Produk terbaru</h1>
<?php
$sql = mysql_query("SELECT * FROM product ORDER BY id DESC")
or die ("Query gagal dengan error: ".mysql_error());
while($data=mysql_fetch_array($sql)){ ?>
<div class="produk">
<a href="?v=produk&id=<?php echo $data['id']; ?>">
<img title="<?php echo $data['product_name']; ?>"
class="FotoProduk" src="foto/<?php echo $data['image']; ?>"
height="110px" />
</a>
<br class="clearfloat" />
<div class="KotakKet">
<a class="pesanprod" href="input.php?input=add&id=<?php echo
$data['id']; ?>">Pesan</a>
<a class="detprod" href="index.php?v=produk&id=<?php echo
$data['id']; ?>">Detail</a>
</div>
</div>
<?php } ?>
left.php
<div class="LeftContent">
<div id="navigation">
<ul class="top-level">
<?php
$kat = mysql_query("SELECT category, category.id
from category join product on product.id_category=category.id group
by category");
while($list=mysql_fetch_array($kat)){
echo"<li><a
href='?v=produk&cat=$list[id]'>$list[category]</a></li>";
}
?>
</ul>
52
order.php
<div class="BigContent">
<div class="RightContent">
<h2 class="Judul">Form Pemesanan</h2>
<form action="input.php?input=inputform" method="post">
<table>
<tr>
<td>Nama</td>
<td><input class="form" type="text"
name="name"></td>
</tr>
<tr>
<td>Email</td>
<td><input class="form" type="text"
name="email"></td>
</tr>
<tr>
<td>Alamat</td>
<td><textarea class="form" name="address"
cols="40" rows="7"></textarea></td>
</tr>
<tr>
<td>No HP</td>
<td><input class="form" type="text"
name="telp"></td>
</tr>
<tr>
<td></td>
<td><input name="submit" type="submit"
value="order"> </td>
</tr>
</table>
</form>
File diatas berfungsi sebagai form dengan tujuan file yaitu input.php.
product.php
<div class="BigContent">
53
top.php
<?php
error_reporting(0);
session_start();
?>
<html>
<head>
<title>Toko Online</title>
<link
rel="StyleSheet"
type="text/css" />
href="css/style.css"
54
<link
type="text/css" />
</head>
rel="StyleSheet"
href="css/reset.css"
<body>
<div class="wrap">
<div class="header">
<div class="LeftOne">
<a href="index.php"><img width="150px"
src="images/toko-online.png" /></a>
</div>
<div class="RightOne">
<div class="cart">
<?php include "cart2.php"; ?>
</div>
<br class="clearfloat" />
<a
class="tocart"
href="index.php?v=cart">Keranjang</a>
</div>
</div>
<br class="clearfloat" />
6. buka file index.php yang telah dibuat sebelumnya, lalu isikan syntax berikut:
Index.php
<?php
include "include/lib.php";
include "include/top.php";
include "include/left.php";
$v = $_GET['v'];
if($v == 'produk') {
require_once "include/product.php";
} elseif ($v == 'cart') {
require_once "include/cart.php";
} elseif ($v == 'order') {
require_once "include/order.php";
} else {
require_once "include/home.php";
}
include "include/bottom.php";
?>
Syntax diatas berfungsi untuk me-load file lib.php yang berada pada folder include begitu
juga file-file lainnya seperti top.php, left.php dan bottom.php.
55
Pada index.php digunakan fungsi kontrol IF dan ELSE IF yang memanfaatkan $v sebagai
variabel yang dihasilkan menggunakan method $_GET. Pada bagian ini dibuat beberapa
kondisi pengontrolan seperti, jika variabel $v sama dengan (==) produk maka ikut sertakan
file product.php, begitu juga kondisi untuk memanggil file top.php, left.php dan bottom.php.
7. Buka file input.php yang telah dibuat sebelumnya lalu isikan syntax dibawah ini:
Input.php
<?php
session_start();
error_reporting(0);
include "include/lib.php";
$input=$_GET[input];
$sid = session_id();
$inputform=$_GET[inputform];
if($input=='add'){
$sql = mysql_query("SELECT id_product FROM keranjang
WHERE id_product='$_GET[id]' AND id_session='$sid'");
$num = mysql_num_rows($sql);
if ($num==0){
mysql_query("INSERT INTO keranjang(id_product,
id_session,
tgl_keranjang,
qty)
VALUES
('$_GET[id]',
'$sid',
'$tgl_sekarang',
'1')") or die (mysql_error());
}
else {
mysql_query("UPDATE keranjang SET qty = qty + 1
WHERE id_session = '$sid' AND id_product='$_GET[id]'") or die
(mysql_error());
}
deletecart();
header('location:index.php?v=cart');
}
elseif ($input=='delete'){
mysql_query("DELETE
FROM
keranjang
WHERE
id_keranjang='$_GET[id]'");
header('location:index.php?v=cart');
56
}
elseif ($input=='inputform'){
$ct_content = cart_content();
$jml = count($ct_content);
$now = date("Ymd");
for($i=0; $i<$jml; $i++){
mysql_query("INSERT INTO order_product(name,
email,
phone,
address,
id_product,
jumlah,
tanggal,
id_pemesan)
VALUES
('$_POST[name]',
'$_POST[email]',
'$_POST[telp]',
'$_POST[address]',
{$ct_content[$i]['id_product']},
{$ct_content[$i]['qty']},
'$now',
'$sid')");
}
for($i=0; $i<$jml; $i++){
mysql_query("DELETE
FROM
keranjang
id_keranjang = {$ct_content[$i]['id_keranjang']}");
}
echo "<script>window.alert('Terima Kasih
Anda Sedang Kami Proses');
window.location=('index.php')</script>";
}
WHERE
Pesanan
?>
57
8. Untuk membuat halaman administrator, siapkan file seperti berikut ini didalam folder
c:/xampp/htdocs/tokoonline/admin
JS berguna untuk menyimpan file Javascript dan library plugin-plugin .js dan jquery yang akan
dibutuhkan dalam website.
Folder Modul yang berguna untuk memisahkan bagian-bagian form yang nanti akan
dibutuhkan dalam halaman administrator.
Folder NICEDIT yang berguna untuk menyimpan plugin text editor, dan nanti akan dapat
memudahkan admin dalam menuliskan penginputan produk. nicedit merupakan plugin text
editor yang ditulis dalam bahasa javascript yang dapat memudahkan kita dalam mengelola
tulisan kita yang memanfaatkan tag textarea pada HTML, untuk info lebih lanjut silahkan klik
link http://www.nicedit.com
58
59
</div>
</div>
<br class="clearfloat" />
<div class="BigCOntent">
<div class="LeftContent">
<div id="navigation">
<ul class="top-level">
<li><a href="?mod=home">Home</a></li>
<li><a
href="?mod=product">Produk</a></li>
<li><a
href="?mod=category">Kategori</a></li>
<li><a
href="?mod=report">Report</a></li>
<li><a href=logout.php>Logout</a></li>
</ul>
</div>
</div>
<div class="RightContent">
<?php
if ($_GET[mod]=='home'){
echo
"<h1
class='Judul'>Selamat
Datang</h1>
Anda Telah masuk ke halaman
administrator silahkan gunakan menu yang tersedia :)</p>";
}
//Add Kategori
elseif ($_GET[mod]=='category'){
require_once
"modul/mod_kategori.php";
}
//Add Product
elseif ($_GET[mod]=='product'){
require_once
"modul/mod_produk.php";
}
//Report
elseif ($_GET[mod]=='report'){
require_once "modul/report.php";
}
?>
</div>
</div>
<br class="clearfloat" />
<div class="footer">
<p align="center">© <?php echo
date('Y') ?> Praktikum Sistem Basis Data</p>
</div>
</div>
</body>
</html>
60
<?php
?>
Halaman admin ini merupakan bagian dimana semua proses yang dibutuhkan dalam
penginputan dan beberapa proses lainnya dilakukan.
Pada baris ke 17 merupakan sintaks untuk me-load plugin text editor nicedit
Pada baris ke 19 sampai ke 44 merupakan sintaks untuk me-load plugin datatables beserta
konfigurasi datatables
Pada baris 45 sampai ke 48 merupakan sintaks konfigurasi dari plugin text editor nicedit dan
selanjutnya merupakan sintaks html yang mungkin sudah normal
Pada baris 78 sampai ke 94 merupakan sintaks php yang berfungsi sebagai proses pengujian,
jika kondisi mod sama dengan home maka akan di isi dengan statement admin yang berupa
string dan begitu juga pada pengujian selanjutnya pada category, product dan report yang
akan mengacu pada pembukaan file dengan menggunakan require_once.
Index.php
<html>
<head>
<title>Administrator</title>
<link rel="StyleSheet" href="css/login.css" type="text/css" />
</head>
<body>
<div id="header">
<div id="content">
<center>
<form method="POST" action="admin.php">
<table>
<tr><td>Username
</td><td><input
type="text"
name="username"></td></tr>
<tr><td>Password
</td><td><input
type="password"
name="password"></td></tr>
<tr><td
colspan="2"><input
type="submit"
name="Login"
value="Proses"></td></tr>
</table>
</form>
</center>
</div>
</div>
</body>
</html>
61
Pada bagian file index.php berisi sintaks HTML untuk menampilkan form login yang merujuk
pada file login.php
Login.php
<?php
include "include/lib.php";
error_reporting(0);
$pass=md5($_POST[password]);
$login=mysql_query("SELECT
*
FROM
user
id_user='$_POST[username]' AND password='$pass'");
$ketemu=mysql_num_rows($login);
$r=mysql_fetch_array($login);
WHERE
62
// Menghapus data
if (isset($mod) AND $act=='hapus'){
mysql_query("DELETE FROM ".$mod." WHERE id ='$_GET[id]'");
header('location:admin.php?mod='.$mod);
}
//Add Category
elseif ($mod=='category' AND $act=='input'){
$insert = mysql_query("INSERT INTO category (id,category) VALUES
('','$_POST[nama_kategori]')");
if($insert == FALSE){
echo "
Kategori gagal ditambahkan, alesannya:".(mysql_error())."
";
}
header('location:admin.php?mod='.$mod);
}
//Category Update
elseif ($mod=='category' AND $act=='update'){
$update = mysql_query("UPDATE category SET category = '$_POST[nama_kategori]'
WHERE id = '$_POST[id]'");
if($update ==FALSE){
echo "
Update gagal dilakukan karena:".(mysql_error())."
";
}
header('location:admin.php?mod='.$mod);
}
//Add Product
elseif ($mod=='product' AND $act=='input'){
$lokasi_file
= $_FILES['fgambar']['tmp_name'];
$tipe_file
= $_FILES['fgambar']['type'];
$nama_file
= $_FILES['fgambar']['name'];
move_uploaded_file($lokasi_file,"../foto/$nama_file");
$insert = mysql_query("INSERT INTO product (product_name,
price,
image,
id_category,
deskripsi)
VALUES ('$_POST[product_name]',
'$_POST[price]',
'$nama_file',
'$_POST[cat]',
'$_POST[deskripsi]')");
header('location:admin.php?mod='.$mod);
}
//Product Update
elseif ($mod=='product' AND $act=='update'){
$lokasi_file
= $_FILES['fgambar']['tmp_name'];
$tipe_file
= $_FILES['fgambar']['type'];
$nama_file
= $_FILES['fgambar']['name'];
//If the image doesnt change
if (empty($lokasi_file)){
63
file aksi.php ini berisi fungsi yang nanti akan di butuhkan dalam proses-proses baik itu
penginputan dan hal lainnya dalam mengelola form pada bagian admin.
Pada baris ke 7 dan 8 merupakan proses pengambilan variable yang di dapat dari
parameter mod dan act
Pada baris ke 12 sampai 15 merupakan sintaks php yang berguna untuk proses hapus
data pada tabel melalui variable mod dan id
Pada baris 19 sampai 25 merupakan sintaks php yang berguna untuk proses
penginputan kategori yang ke dalam tabel kategori
Pada baris 27 sampai 33 merupakan sintaks php yang berguna untuk melakukan proses
update pada tabel kategori
Pada baris 36 sampai 53 merupakan sintaks php yang berguna untuk melakukan proes
menambahkan produk yang berisi teks dan gambar yang disimpan pada folder foto yang
menggunakan fungsi php move_uploaded_file
Pada baris ke 55 sampai 78 merupakan sintaks php yang berguna untuk melakukan
proses update produk yang memanfaatkan fungsi update pada mysql query
10. Selanjutnya adalah membuat beberapa file didalam folder modul. Yaitu:
mod_kategori.php yang berisi form untuk penginputan kategori dalam halaman admin
mod_produk.php yang berisi form untuk penginputan produk dalam halaman admin
report.php berisi tabel untuk laporan hasil dari penjualan produk
Adapun Syntaxnya adalah sebagai berikut:
mod_kategori.php
<?php
64
switch($_GET[act]){
//Tampil Kategori
default:
echo"<h1 class='Judul'>List Category</h1>
<input
type=button
value=Tambah
kategori
onclick=location.href='?mod=category&act=addkategori'>
<table class='TableCart' id='datatables'>
<thead><tr><th>no</th><th>nama
kategori</th><th>aksi</th></tr></thead><tbody>";
$sql = mysql_query("SELECT * FROM category ORDER BY id DESC");
$no = 1;
while ($r=mysql_fetch_array($sql)){
echo"<tr><td>$no</td>
<td>$r[category]</td>
<td><a
href=?mod=category&act=editkategori&id=$r[id]>Edit</a>
<a
href=aksi.php?mod=category&act=hapus&id=$r[id]>Hapus</a>
</td>
</tr>";
$no++;
}
echo "</tbody></table>";
break;
//Form Add Kategori
case "addkategori":
echo"<h2>Tambah Kategori</h2>
<form
action=aksi.php?mod=category&act=input>
<table>
<tr><td>Nama Kategori</td>
<td>:<input
name=nama_kategori></td>
</tr>
<tr>
<td colspan=2>
<input
type=submit
value=Simpan>
<input
type=button
onClick=self.history.back()>
</td>
</tr>
</table></form>";
break;
method=POST
type=text
name=submit
value=Batal
65
<tr><td>Nama Kategori</td>
<td>: <input type=text name=nama_kategori
value='$r[category]'></td>
</tr>
<tr><td
colspan=2><input
type=submit
value=Update>
<input
type=button
value=Batal onClick=self.history.back()></td>
</tr>
</table>
</form>";
break;
}
?>
mod_produk.php
<?php
switch($_GET[act]){
//Tampil Kategori
default:
echo"<h2>List Produk</h2>
<input
type=button
value='Tambah
Produk
Baru'
onClick=location.href='?mod=product&act=addproduct'>
<table id='datatables' class='TableCart'>
<thead><tr><th>no</th><th>Nama
Produk</th><th>Harga</th><th>aksi</th></tr></thead><tbody>";
$sql = mysql_query("SELECT * FROM product ORDER BY id DESC");
$no = 1;
while ($r=mysql_fetch_array($sql)){
echo"<tr><td>$no</td>
<td>$r[product_name]</td>
<td>$r[price]</td>
<td><a
href=?mod=product&act=editproduct&id=$r[id]>Edit</a>
<a
href=aksi.php?mod=product&act=hapus&id=$r[id]>Hapus</a>
</td></tr>";
$no++;
}
echo "</tbody></table>";
break;
//Form Add Product
case "addproduct":
echo"<h2>Add Product</h2>
<form
enctype='multipart/form-data'
method=POST
action=aksi.php?mod=product&act=input>
<table class='TableCart'>
<tr><td>Nama Barang</td>
<td><input
type=text
name=product_name></td>
</tr>
<tr><td>Kategori</td><td><select
name=cat>";
66
67
<tr><td>Deskripsi</td><td><textarea
name=deskripsi
style='width:
277px;
67px;'>$d[deskripsi]</textarea></td></tr>
<tr><td></td><td><img
src='../foto/$d[image]' /></td></tr>
<tr><td>Gambar</td><td><input
id=fgambar name=fgambar size=40></td>
<tr><td colspan=2>
<input
type=submit
value=Simpan>
<input
type=button
onClick=self.history.back()>
</td>
</tr>
</table></form>";
break;
}
height:
width=100
type=file
name=submit
value=Batal
?>
68
MODUL 6
PERANCANGAN LAPORAN/REPORT
DAN IMPLEMENTASINYA
3. Selanjutnya kita akan mencetak laporan dengan menggunakan PHP, langkahnya adalah
sebagai berikut:
a. Isi file report.php pada folder modul di c:/xampp/htdocs/tokoonline/admin/modul
report.php
<?php
$sid = session_id();
$sql = mysql_query("SELECT * FROM order_product, product WHERE
order_product.id_product=product.id");
?>
<h1 class="Judul">Laporan</h1>
<!-- BUAT LINK POP UP KE HALAMAN PDF KONVERTER SEPERTI PADA CONTOH BERIKUT
-->
<p
align="left"><a
href="modul/print.php"
target="_blank">Cetak
Laporan</a></p>
<table id="datatables" class="TableCart">
<thead>
<tr><th>No</th>
<th>Nama Produk</th>
<th>Nama Pemesan</th>
<th>Alamat Pemesan</th>
<th>Telepon</th>
<th>Jumlah</th>
<th>Status</th>
</tr>
69
</thead>
<tbody>
<?php
$no = 1;
while ($r=mysql_fetch_array($sql)){
echo"<tr><td>$no</td>
<td>$r[product_name]</td>
<td>$r[name]</td>
<td>$r[address]</td>
<td>$r[phone]</td>
<td>$r[jumlah]</td>
<td>$r[status]</td>
</tr>";
$no++;
} ?>
</tbody></table>
b. Buat file print.php untuk menyimpan modul cetak laporan, pada folder yang sama
c:/xampp/htdocs/tokoonline/admin/modul
print.php
<?php
include "../include/lib.php";
$sid = session_id();
$sql = mysql_query("SELECT * FROM order_product, product WHERE
order_product.id_product=product.id");
?>
<html>
<head>
<title> Toko Online PSBD </title>
</HEAD>
<BODY onLoad="javascript:window.print()">
<?php
if (isset($_REQUEST['print']))
{
$print = $_REQUEST['print']; include "$print";
}
?>
<h1 align='center' class="Judul">Laporan Penjualan</h1>
<table align='center' id="datatables" class="TableCart" border="1"
bordercolor="#666666">
<tr><th bgcolor="#999999">No</th>
<th bgcolor="#999999">Nama Produk</th>
<th bgcolor="#999999">Nama Pemesan</th>
<th bgcolor="#999999">Alamat Pemesan</th>
<th bgcolor="#999999">Telepon</th>
<th bgcolor="#999999">Jumlah Pesanan</th>
<th bgcolor="#999999">Status</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
70
while ($r=mysql_fetch_array($sql)){
echo"<tr><td>$no</td>
<td>$r[product_name]</td>
<td>$r[name]</td>
<td>$r[address]</td>
<td>$r[phone]</td>
<td>$r[jumlah]</td>
<td>$r[status]</td>
</tr>";
$no++;
}
echo "<p align='center'>Laporan per-tanggal: ".date('d-m-Y')."</p>";
?>
</body>
</html>
71
MODUL 7
TUGAS BESAR
Gunakan fungsi-fungsi SQL lanjutan yang sudah dipelajari (Fungsi perhitungan, group
dll )
72