3. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
3
Table of Contents
BAB I INSTALASI DAN DASAR PHP .......................................................................................................5
Konsep Apache,PHP, Mysql............................................................................................................5
Tool Yang Dipakai ...........................................................................................................................5
Appserver.......................................................................................................................................5
Notepad++..................................................................................................................................5
Aptana IDE..................................................................................................................................6
Google Chrome...........................................................................................................................6
MySQL Workbench......................................................................................................................6
Memahami Konfigurasi PHP ............................................................................................................7
Membuat Kerangka dasar website...................................................................................................7
Konsep GET Dan POST.................................................................................................................7
Teknik Include Page.....................................................................................................................7
BAB II Perancangan Database, Login Dan Validasi Form......................................................................10
Perancangan Database..................................................................................................................10
Login............................................................................................................................................11
Tabel pengelola.........................................................................................................................11
Form Login................................................................................................................................11
Cek Login dan redirect...............................................................................................................12
Form Validasi ...................................................................................................................................13
Mengenal Library Validasi Javascript...........................................................................................13
Teknik Validasi Berbagai Macam Input........................................................................................14
BAB III CRUD.....................................................................................................................................17
Insert Data ...................................................................................................................................17
Tampil Data..................................................................................................................................19
Update Data.................................................................................................................................22
4. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
4
Delete Data..................................................................................................................................24
BAB IV Membuat Katalog Produk.......................................................................................................25
Menu Kategori Produk Dinamis .....................................................................................................25
Daftar Produk Dinamis .................................................................................................................26
BAB V Transaksi Dan Laporan............................................................................................................29
Membuat Cart Belanja..................................................................................................................29
Tampilan chart..............................................................................................................................36
Membuat Laporan Penjualan.........................................................................................................36
Tampilan laporan buku..................................................................................................................38
5. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
5
BAB I INSTALASI DAN DASAR PHP
Konsep Apache, PHP, MySQL
Apache adalahwebserveryangbertugasuntukmemberikanhalamanwebsiteyangdimintaoleh
Browser
PHP adalahbahasa pemrogramanwebuntukmembuatwebsite yangdinamis
MySQL adalahdatabase serveryangdipakai untukmenyimpandatatermasukdataadmin,databarang
data transaksi dansebagainya
Tool Yang Dipakai
Appserver
Appserveradalahbundlesoftware yangterdiridari beberapa
komponen,diantaranyaadalahMySQL,PHP,Apache danPHPMyAdmin.
DenganmenggunakanAppservkitatidakperlumenginstall programsatu
persatu.Dari semuaprogram diatas,programyang palingNampak
adalahPHPMyAdmin.Aplikasi ini adalahtool berbasiswebuntukmengolahdataMySQL. Andabisa
mendapatkannyadi http://www.appservnetwork.com/
Notepad++
Notepad++adalahstandar programmereditor.Sebenarnyaselain
notepad++,jugamasihbanyakeditoryanglain.Andabolehsaja
menggunakan sembarangeditor,namundisarankaneditoryangdipakai
adalaheditoryangmempunyai 3fiturutama yaituSyntax Higlighting,Code
foldingdanLine numbering. Notepad++dipakai untukeditingfilesecaracepat(misal Bugfix) atau
mengeditsatuduabarisyang error.
6. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
6
AptanaIDE
AptanaIDE adalah IDE untukmembuatprogramberbasisWeb. anda bolehsajamemakai
DreamWeaver,namunsaya sendiri memilihAptanaIDEmengingatIDEini besifatopensource,
mampubejalandi banyakPlatform(Windows,Linux,Mac) dan GRATIS.Namunhal yang paling
pentingdenganadanyaide adalahadanyaprojectmanajement.
Figure 1 Logo Aptana IDE
Kelebihanutamadari Aptanadi bandingdreamweaverataueditornotepad++ adalah
kemampuannyauntukmemformatcode sekaligusmengecekkesalahansyntax langsungdi editor.
GoogleChrome
Google chrome di pakai untuk mentestingwebsite.Bolehsajamenggunakanbrowserlain,justru
yang disarankan,kitamencobadi setiapbrowseruntukmemastikantampilandanaplikasi yangkita
buat berjalandenganbenar.NamunGoogle Chrome mempunyai kelebihankarenasederhanadan
adanyafiturDevelopertool yangcanggih( penjelasanlebihlanjutdi praktik).
MySQLWorkbench
Hal yangpalingpentingsaatmendesaindatabase adalahmembuat
relasi antartable.Andabisasaja membuatmenggunakantool
perancanganbiasa.MySQL workbenchlebihdari itu,diabisa
membuattable besertarelasinyadansecaraAutomagicdiaakan
7. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
7
membuatSQL scripnya.MySQLworkbenchjugabisamembuatdiagramrelasi table langsungdari
MySQL script (reverse engine) .
Memahami Konfigurasi PHP
SebelumandamembautprogrammenggunakanPHP,andaharusfahamdua hal yang palingutama,dua
hal tersebutadalahshort_open_tagdanerror_reporting. Duahal ini dibahasdi kelas.
Membuat Kerangka dasar website
KonsepGET DanPOST
GET dan POSTadalahdua teknikmengirimdatake server,namunapasihperbedaannya? Buatlah
program sederhanasepertidibawahini untukmengetahui.
Code 1.1 konverter.php
<form action="konverter.php" >
<input type="text" name="dollar">
<input type="submit" value="konversi">
</form>
<?php
$dollar=$_GET['dollar'];
$rupiah=$dollar* 8500;
echo $dollar." US dollar =".$rupiah;
?>
Sekarangubahlahgetmenjadi POST!
TeknikIncludePage
Untuk membuatsebuahhalamanwebsite yangkomplek.Adabeberapateknikagarefektif dalamhal
desaindansource code.Teknikyangpalingseringdi pakai adalahteknikinclude page.Codenya
utamanyaadalahsbb:
8. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
8
Code.1.2 snippetinclude page
<?php
/* kode untuk meload halaman yang berbeda*/
if(isset($_GET['pg'])){
$page=$_GET['pg'].".php";
include($page);
}else{
include('home.php');
}
?>
Gambar 1.1 Tampilan layout website
Untuk membuatlinkke home dancara pesan, minimal sepertiini di code 1.2 kemudianbuatlahfile
home.phpdncara pesan.php dalamformathtml biasa
9. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
9
Code 1.3 home.php
<!home.php
<h1>Selamat datang di toko buku murah</h1>
<P>
disini anda bisa membeli dan memesan buku dengan mudah, anda
tinggal klik, maka buku sampai di tempat anda.
tidak perlu lagi jauh jauh ke toko buku
</p>
Sedangkanhalamancontact.phpsbb:
Code 1.4 contact.php
<h1>Alamat kami</h1>
<p>
Jalan Lurus no 5 Yogyakarta
<br> Telp (0274) 123456
<br> Email:bukumurah@gmail.com
</p>
12. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
12
<input type="reset" name="" value="Reset" /></td>
</tr>
CekLogindan redirect
Code 2. 2 cek_login
<?php
session_start();
session_register('username');
//file konfigurasi
include ('inc/config.php');
$username = $_POST['username'];
$password = $_POST['password'];
$password = md5($password);
$sql = "select * from pengelola where username='$username'
and password='$password' ";
$userquery = mysql_query($sql) or die(mysql_error());
// $valid=false;
if (mysql_num_rows($userquery) == 1) {
header('location:index.php');
$valid = true;
$_SESSION['username'] = $username;
}
if ($valid == false) {
header("Location:form_login.php?status=1");
}
?>
13. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
13
Janganlupa buatfile config.phpyangberisi konfigurasidatabase
Code 2.3 konfigurasi database
<?php
$host = "localhost";
// Host name
$username = "root";
// Mysql username
$password = "root";
// Mysql password
$db_name = "bookdb";
// Database name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password") or die("cannot
connect" . mysql_error());
mysql_select_db("$db_name") or die(mysql_error());
?>
Form Validasi
Mengenal LibraryValidasi Javascript
Untuk memvalidasi form,adaberbagai macamteknik.Namunsecaraumumdibagi dua,yaituserverside
checkdan clientside check. Modul ini hanyamembahasscript validasi menggunakanscriptdari
http://www.javascript-coder.com/html-form/javascript-form-validation.phtml.
14. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
14
TeknikValidasi Berbagai MacamInput
Scriptyang disediakandiatassudahmencakupberbagai macamvalidasi diantaranyaadalah
Validation Usage
required or
req
Harus di isi
maxlen=??? or
maxlength=???
Validasi input dengan maxmal karakter tertentu
minlen=??? or
minlength=???
Validasi input dengan minimal karakter tertentu
alphanumeric or
alnum
Input harus alphanumeric (huruf dan angka tanpa spasi)
alphanumeric_space
alnum_s
Input harus alphanumeric (huruf dan angka plus spasi)
num
numeric
Input harus angka
alpha
alphabetic
Input harus huruf atau symbol
alpha_s
alphabetic_space Input harus huruf dan atau spasi
email Validasi email
lt=???
lessthan=???
Lebih kecil dari
gt=???
greaterthan=???
Lebih besar dari
Untuk menggunakanteknikvalidasi ini,pertamatambahkan code dibawahini
Code 2.3 scriptvalidasi
<script src=/slideshow/e-commerce-dengan-php-mysql-48077643/48077643/"js/validjs.js"></script>
15. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
15
Dan letakansciptvalidasi persisdibawahform
Code 2.4 cara memvalidasi form
<script language="JavaScript" type="text/javascript"
xml:space="preserve">//<![CDATA[
var frmvalidator = new Validator("form1");
frmvalidator.EnableOnPageErrorDisplaySingleBox();
frmvalidator.EnableMsgsTogether();
frmvalidator.addValidation("username", "req", "Username masih kosong
");
frmvalidator.addValidation("password", "req", "Password masih kosong
");
//]]></script>
Langkah terakhir,letakandimana pesanerroringinditampilkan
Code 2.5 cara menampilkanoutputvalidasi
<div id="form1_errorloc" style="color:red">
</div>
17. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
17
BAB III CRUD
Crud adalahprosespengelohandatastandaryangterdiri dari 4 operasi dasaryaitucreate,retrieve,
update dandelete.Dalambabini,kitahanyaakan membahastable pengelola.Untuksetiaptable,kita
membutuhkan5file,filefileituadalah
1. Pengelola_view
2. Pengelola_form_add
3. Pengelola_add
4. Pengelola_form_edit
5. Pengelola_edit
Biasakanmenggunakanformat <namatabel>_action.php.Penamaanseperti ini akan
memudahkanketikananti terjadierrordanlebihmudahdipahami.
Insert Data
Code 3.1 pengelola_Form_add
<form id="form1" name="form1" method="post"
action="pengelola_add.php">
<td>
<table>
<tr>
<td width="120">username</td>
<td width="350">
<input name="username" type="text" id="username"
size="40" />
</td>
</tr>
<tr>
<td width="120">password</td>
<td width="350">
<input name="password" type="password" id="password"
size="40" />
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" name="tambahPengelola"
value="Tambah" />
18. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
18
<input type="reset" name="resetbtn" value="Reset" />
</td>
</tr>
<tr>
<td colspan='2'><div id="form1_errorloc"
style="color:red"></div></td>
</tr>
</table></td>
</form>
<script language="javaScript" type="text/javascript"
xml:space="preserve">
//You should create the validator only after the definition of
the HTML form
var frmvalidator = new Validator("form1");
frmvalidator.EnableOnPageErrorDisplaySingleBox();
frmvalidator.EnableMsgsTogether();
frmvalidator.addValidation("username", "req", "username masih
kosong ");
frmvalidator.addValidation("password", "req", "password masih
kosong ");
frmvalidator.addValidation("username", "maxlen=20", " username
tidak boleh lebih dari 20 ");
frmvalidator.addValidation("password", "alnum_s", "password
tidak boleh ada spasi ");
</script>
Code 3.2 pengelola_add
<?php
include ('inc/config.php');
//data dari user
if (isset($_POST['tambahPengelola'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$password = md5($password);
$sql = "INSERT INTO pengelola(username,password)
VALUES('$username', '$password')";
$result = mysql_query($sql) or die(mysql_error());
//check if query successful
19. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
19
if ($result) {
header('location:index.php?page=pengelola_view&status=0');
} else {
header('location:index.php?page=pengelola_view&status=1');
}
mysql_close();
}
?>
Tampilandari formtambah pengelola
Gambar 4 halaman tambah pengelola
Tampil Data
Code 3.3 pengelola_view
<?php
include ('inc/config.php');
?>
<h1> Tabel pengelola</h1>
<table width="600px" border=0>
<tr style="background-color:#F79307">
<td width="200px">Username</td><td>Password</td><td
width="100px">Operasi</td>
</tr>
<?php
/*
20. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
20
* kode untuk menghapus data
*/
if(isset($_GET['del'])){
$username=$_GET['id'];
$hapus ="delete from pengelola where username='$username'";
mysql_query($hapus);
}
$sql="";
if(isset($_POST['btnCari'])){
$cari=$_POST['cari'];
//ambil data dari table admin
$sql="SELECT * FROM pengelola where username like '%$cari%'";
}else{
$sql="SELECT * FROM pengelola";
}
$result=mysql_query($sql) or die(mysql_error());
//proses menampilkan data
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td><? echo $rows['username'];?></td>
<td><? echo $rows['password'];?></td>
<td><a href="index.php?page=pengelola_form_edit&id=<? echo
$rows['username']?>"> <img src=/slideshow/e-commerce-dengan-php-mysql-48077643/48077643/"image/b_edit.png"></a><a
href="index.php?page=pengelola_view&del=true&id=<? echo
$rows['username']?>" onclick="return askUser()";> <img
src="image/b_drop.png"></a></td>
</tr>
<?
}
24. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
24
Code 3.5 Code untukmengupdate data
<?php
include ('inc/config.php');
//data dari user
if (isset($_POST['submitUser'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$password = md5($password);
$sql = " update pengelola set password='$password' where
username='$username'";
//echo $sql;
$result = mysql_query($sql) or die(mysql_error());
//check if query successful
if ($result) {
header('location:index.php?page=pengelola_view&status=0');
} else {
header('location:index.php?page=pengelola_view&status=1');
}
mysql_close();
}
?>
Delete Data
Code 3.6
if(isset($_GET['del'])){
$username=$_GET['id'];
$hapus ="delete from pengelola where username='$username'";
mysql_query($hapus);
}
25. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
25
BAB IV Membuat Katalog Produk
Menu Kategori Produk Dinamis
Bab ini langsungmembahashalamanwebsite di depan, untukhalamanadminkategori,andabuat
sendiri.Berikutini adalahdatadi halamanadminuntuktable kategori
Gambar 6 Kategori produk
Kategori produkdalamhal ini adalahkategori bukudegeneratesecaradinamismenggunakankode
sebagai berikut
Code 4.1 kategori.php
<h1> Pilih Kategori buku</h1>
<ul>
<?php
include('backsite/inc/config.php');
$kat="select kd_kategori,nama_kategori from kategori";
$hasil=mysql_query($kat) or die(mysql_error());
while($get_data=mysql_fetch_array($hasil)){
?><li><a
href="index.php?page=detail&id=<?=$get_data['kd_kategori']?>">
<? echo $get_data['nama_kategori']?>
<!--(<?=$get_data['jumlah']?>)-->
26. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
26
</a></li>
<?
}
?>
</ul>
Tampilankategori produkdi website
Gambar 7 Kategori buku
Daftar Produk Dinamis
Untuk meleihatdetail produk,andaharusmengklikkategori yangada.Berikutini adalahkode untuk
menampilkanproduk
Code 4.2 detail produk
<h2> Pilih Buku yang mau dibeli </h2>
<?php
$kd_kategori=$_GET['id'];
include('backsite/inc/config.php');
$kat="select * from buku where kd_kategori='$kd_kategori'";
$hasil=mysql_query($kat) or die(mysql_error());
while($get_data=mysql_fetch_array($hasil)){
?>
34. Membangun eCommerceBerbasisPHPMySQL(http://www.candra.web.id)
34
</tr>
<tr>
<td colspan='2'><div id="form1_errorloc"
style="color:red"></div></td>
</tr>
</table></td>
</form>
<script language="javaScript" type="text/javascript"
xml:space="preserve">
//You should create the validator only after the definition
of the HTML form
var frmvalidator = new Validator("form1");
frmvalidator.EnableOnPageErrorDisplaySingleBox();
frmvalidator.EnableMsgsTogether();
frmvalidator.addValidation("kd_pemesan", "req", "kode
pemesan masih kosong ");
frmvalidator.addValidation("Nama", "req", "nama masih
kosong ");
frmvalidator.addValidation("Alamat", "req", "alamat masih
kosong ");
frmvalidator.addValidation("kd_pos", "req", "kode pos masih
kosong ");
frmvalidator.addValidation("No_telp", "req", "no. telp
masih kosong");
frmvalidator.addValidation("email", "req", "email masih
kosong");
frmvalidator.addValidation("kd_pemesan", "alnum_s ", "kode
pemesan tidak boleh ada spasi ");
frmvalidator.addValidation("Alamat", "minlen=10", "alamat
kurang lengkap ");
frmvalidator.addValidation("kd_pos", "num", "input harus
angka ");
frmvalidator.addValidation("No_telp", "num", "input harus