Implementasi dari desain sistem yang telah dibuat terbagi ke dalam dua bagian besar, yaitu:
a. Implementasi server
b. Implementasi perangkat lunak
Penjelasan mengenai masing-masing bagian diberikan berikut ini.
4.1. Implementasi Server
Server yang dipakai untuk implementasi dan pengujian perangkat lunak pada tugas akhir ini memiliki spesifikasi sebagai berikut:
a. Processor : Intel Pentium IV 1,5 GHz b. Motherboard : Intel SWD2N
c. Memory : Visipro 384 MB SDRAM d. Storage/hard disk : Maxtor 20 GB
4.1.1. Instalasi Server
Sistem operasi yang digunakan untuk server adalah Windows XP Profesional dan diinstall pada komputer server beserta dengan modul-modul yang diperlukan seperti:
a. Apache, sebagai web server yang di dalamnya juga terdapat PHP engine.
b. MySQL, sebagai database server.
4.1.2. Konfigurasi Server
Pada server perlu dilakukan beberapa tahap konfigurasi agar server berjalan sesuai dengan desain sistem yang telah dibuat. Konfigurasi yang dilakukan antara lain:
74
4.1.2.1.Konfirgurasi Apache Web Server
Konfigurasi web server dilakukan dengan menggun file konfigurasi yang terdapat pada /apache/httpd/conf/httpd.conf. Bagian file yang perlu dikonfigurasi untuk sistem ini adalah pada bagian DocumentRoot yang diset ke /apache/htdocs/
dan nama server yaitu localhost. Bagian DocumentRoot ini digun untuk pengaksesan halaman web dengan hanya mengetikkan nama dari server.
4.1.2.2.Konfigurasi Database Server
Pada MySQL sebagai database server dibuat sebuah database baru dengan nama database: peaceCell. Di mana database peaceCell tersebut berisi tabel-tabel dengan nama dan field-field yang telah didesain sebelumnya. Gambar 4.1 menjelaskan cara pembuatan database dengan menggun phpMyAdmin yang dijalankan pada Internet Explorer.
Gambar 4.1. Pembuatan Database PeaceCell Pada Database Server
4.2. Implementasi Program
Perangkat lunak sistem merup halaman-halaman web yang diletakkan pada
direktori /apache/htdocs/peaceCell pada server. Implementasi perangkat lunak dan
proses-proses yang dilakukan dijelaskan berdasarkan poin-poin yang ada pada bagian berikut ini.
4.2.1. Koneksi Database
Koneksi ke database digunakan untuk menghubungkan perangkat lunak dengan database yang digunakan dan terdapat pada setiap halaman web yang melakukan operasi database seperti: insert, update, delete, dan lain-lain.
Segmen Program 4.1. Proses Koneksi Database
mysql_connect("localhost", "", "");
mysql_select_db("peaceCell");
4.2.2. Halaman Utama
Gambar 4.2. merupakan halaman yang pertama kali ditampilkan saat user mengakses website. Halaman ini menampilkan enam produk terbaru dan lima ringkasan berita terbaru yang disertai dengan link untuk melihat detail produk atau berita tersebut.
Gambar 4.2. Halaman Utama
Segmen Program 4.2. Proses Halaman Utama
// Produk
$query ="SELECT a.productType, a.productImageSmall, a.productSize, a.productWeight, a.vendorId, b.vendorName, a.productTimeTalk, a.productTimeStandby,a.productPrice,a.productDateAdded
FROM product as a,vendor as b WHERE a.vendorId=b.vendorId ORDER BY productDateAdded desc LIMIT 0, 6";
$hasil = m // Berita
ysql_query($query) or die("error");
$query = "SELECT newsId,newsTitle,newsDesc,newsDateAdded FROM news
WHERE newsId != 0 ORDER BY newsId desc
LIMIT 0, 5";
$hasil = mysql_query($query) or die("error");
Keterangan: Program di atas menjelaskan query untuk mengambil data produk dan berita.
4.2.3. Menu Umum
Menu ini terdapat pada sebagian besar halaman web yang ada dan dapat diakses oleh semua user yang mengunjungi website ini. Bagian dari menu umum ini adalah:
a. Home
Menu ini menampilkan halaman awal yang juga merupakan halaman yang pertama kali ditampilkan saat website ini diakses.
b. Search
Menu ini menampilkan halaman untuk mencari produk sesuai dengan spesifikasi yang diinginkan.
c. Compare
Menu ini menampilkan halaman untuk membandingkan produk yang dipilih sesuai dengan jenisnya.
d. News
Menu ini menampilkan halaman yang berisi ringkasan berita-berita.
e. Product
Menu ini menampilkan halaman berisi produk yang dijual oleh website . f. Credit Simulation
Menu ini menampilkan halaman yang berisi form untuk melakukan simulasi
pembelian secara kredit.
g. Guest Book
Menu ini menampilkan halaman yang berisi komentar-komentar dan saran- saran dari pengujung website.
h. Information
Menu ini menampilkan halaman yang berisi informasi tentang website ini, seperti cara berbelanja dengan shopping cart, cara melakukan order dan lainnya.
Gambar 4.3. Menu Umum
4.2.4. Menu Login
Menu login ini tampil apabila user tidak melakukan login. Bagian dari menu login ini adalah:
a. Login
Menu ini terdiri dari input/editbox yang harus diisi dengan username dan password member.
b. Registrasi
Menu ini menampilkan halaman registrasi yang berisi form pendaftaran bagi user guest yang ingin mendaftar menjadi member.
Gambar 4.4. Menu Login
Menu login yang tampil pada setiap halaman apabila user belum
melakukan login. Hal ini dimaksudkan untuk mempermudah user apabila user
ingin melakukan login. User dapat login dari mana saja dan kapan saja. Adapun
baris perintah proses untuk login adalah sebagai berikut.
Segmen Program 4.3. Proses Pengecekan Field kosong
if (($username == '') || ($password == ''))
{ $komentar=" Field empty, Process Login Cancel";}
Keterangan: Program di atas melakukan pemeriksaan input field yang kosong.
Untuk semua form yang membutuhkan pengecekan field kosong menggunakan segmen program 4.3 untuk mencegah agar tidak ada data yang kosong pada database, khususnya untuk informasi-informasi penting.
Segmen Program 4.4. Proses Pengecekan Username dan Password
$nilai=mysql_query("SELECT customerUsername, customerPassword, customerName
FROM customer
WHERE customerUsername = '$username' &&
customerPassword = '$password' ");
$hasil=mysql_num_rows($nilai);
if ($hasil==0) { $komentar="Username and Password Not Valid";}
else
{ $thasil=mysql_fetch_array($nilai);
// Update Field CustomerLastLogin
mysql_query("UPDATE customer SET customerDateLastLogin=now() WHERE customerUsername='$username'");
setcookie("memberUser",$username,time()+31536000);
setcookie("memberName",$thasil[customerName],time()+31536000);
}
Keterangan: Program di atas menjelaskan pengecekan data username dan password yang diinputkan kemudian dicocokan dengan data yang ada dalam database. Apabila data sesuai maka dilakukan update field customerDateLastLogin dan dilakukan pengesetan variabel ‘cookie’ . Segmen program ini juga digunakan untuk halaman administrator login di mana yang membedakan hanya tabel dan nama variabel cookie.
4.2.5. Halaman Register
Halaman ini diakses melalui menu login. Halaman yang digunakan
untuk melakukan pendaftaran sebagai member.
Gambar 4.5. Halaman Register
Segmen Program 4.5. Proses Pengecekan Field Numeric
If (!is_numeric($postCode) && ($postCode <0)) { $komentar="Post Code value not correct";}
Keterangan: Program di atas melakukan pemeriksaan untuk format inputan data bilangan.
Segmen Program 4.6.Proses Pengecekan Field E-Mail
if (!is_email($emailAddress))
{ $komentar="The email address not correct"; }
Keterangan: Program di atas melakukan pemeriksaan untuk format inputan alamat email.
Segmen Program 4.7. Proses Fungsi is_email
function is_email($user_email) {
$chars = "/^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}\$/i";
if(strstr($user_email, '@') && strstr($user_email, '.'))
{ if (preg_match($chars, $user_email)) {return true;} else {return false;}
} else { return false;}
}
Keterangan: Program di atas merupakan fungsi yang dipakai untuk melakukan
pemeriksaan format input alamat email.
Segmen Program 4.8. Proses Pengecekan Untuk Isi Field yang Kembar
$data = mysql_query("select customerUsername from customer where customerUsername = '$username'");
$hasil = mysql_num_rows($data);
If ($hasil!=0)
{$komentar="$komentar"." Username has been use, type another username";}
Keterangan: Program di atas memeriksa input data yang disimpan dengan yang ada didalam database untuk menghindari data kembar. Segmen program ini digunakan pada setiap halaman yang memiliki form pengisian data seperti registrasi agar tidak ada nama username member yang sama. Contoh lainnya adalah halaman pengisian data produk
Segmen Program 4.9. Proses Halaman Register
// Pengecekan username agar tidak ada yang kembar mysql_query("INSERT INTO customer(customerUsername,
customerPasswordcustomerName, customerBod, customerEmailAddress, customerAddress, customerPostCode, customerProvince, customerCity, customerTelephone,customerHandphone, customerDateLastLogin) VALUES ('$username','$password','$name','$date',
'$emailAddress','$address', '$postCode', '$province', '$city', '$telephone', '$handphone',now())") or die('ERROR');
$dat = mysql_query("select customerId from customer where customerUsername = '$username'");
$hasil=mysql_fetch_array($dat);
// Menyimpan favorite vendor dari member kedalam tabel personalize for($i=1;$i<=$max;$i++)
{
$namavendor="vendor$i";
$namavendor2=$HTTP_POST_VARS[$namavendor];
if ($namavendor2!='')
mysql_query("INSERT INTO personalize(customerId,vendorId) VALUES ('$hasil[customerId]','$namavendor2')")or die('SQL SALAh');
}
Keterangan: Program di atas melakukan penyimpanan data member ke dalam tabel Customer.
4.2.6. Menu Member
Menu ini tampil apabila user sudah melakukan login. Menu ini tampil
pada semua halaman yang dapat diakses melalui menu umum maupun menu
lainnya. Menu ini menggantikan menu login.
Gambar 4.6. Menu Member
Selain menu member, ada link baru yang muncul untuk apabila member sudah melakukan login yaitu link add shopping cart.
Segmen Program 4.10. Proses Cek Untuk Menu Member
if (!empty($HTTP_COOKIE_VARS["memberUser"]))
{ // Tampilakan menu Member dan link add shopping cart }
Keterangan: Program di atas melakukan pemeriksaan hak akses untuk member.
4.2.7. Menu Vendor
Menu ini tampil pada semua halaman. Melalui menu ini user dapat menampilkan produk sesuai dengan jenis vendor yang dipilih.
Gambar 4.7. Menu Vendor
Segmen Program 4.11. Proses Menu Vendor
// Memilih semua jenis vendor dari tabel vendor.
$query=mysql_query("SELECT vendorId,vendorName
FROM vendor
ORDER BY vendorName asc") or die("ERROR");
Keterangan: Program di atas melakukan query untuk mengambil jenis vendor.
4.2.8. Menu Top Order
Menu ini tampil pada setiap halaman yang menampilkan lima produk
yang paling banyak terjual. Melalui menu ini user dapat menampilkan detail
produk sesuai dengan tipe produk yang dipilih.
Gambar 4.8. Menu Top Order
Segmen Program 4.12. Proses Menu Top Order
// Memilih 5 produk yang paling banyak terjual dari tabel detailOrd
$query=mysql_query("SELECT SUM(detailOrdQty) as total, b.detailProductId, c.productType
FROM detailOrd as a,detailProduct as b,product as c WHERE a.detailProductId=b.detailProductId &&
b.productType=c.productType
GROUP BY productType ORDER BY total desc LIMIT 0,5") or die("ERROR");
Keterangan: Program di atas melakukan query untuk mengambil lima produk yang paling laku terjual.
4.2.9. Menu Top Hit
Menu ini tampil pada setiap halaman yang menampilkan lima produk yang paling sering diakses oleh pengunjung website. Melalui menu ini user dapat menampilkan detail produk sesuai dengan tipe produk yang dipilih.
Gambar 4.9. Menu Top Hit
Segmen Program 4.13. Proses Menu Top Hit
// Memilih 5 produk yang paling sering diakses dari tabel product
$query=mysql_query("SELECT productHit,productType
FROM product
ORDER BY productHit desc LIMIT 0,5") or die("ERROR");
Keterangan: Program di atas melakukan query untuk mengambil lima produk
yang paling sering diakses.
4.2.10. Menu News Search
Menu ini tampil pada halaman dan dapat diakses melalui menu umum news dan detailNews. Menu ini digunakan untuk mencari berita-berita sesuai dengan bulan, tahun dan kata kunci yang diinginkan.
Gambar 4.10. Menu News Search
4.2.11. Halaman News
Halaman ini berisi ringkasan berita-berita selama tahun ini. Jika halaman ini diakses melalui menu umum maka halaman ini menampilkan semua berita tahun ini, tetapi apabila menggunakan menu search news maka ditampilkan berita sesuai dengan spesifikasi yang diinginkan.
Gambar 4.11. Halaman News
Segmen Program 4.14. Proses View News Melalui Menu Umum
$query = "SELECT newsId,newsTitle,newsDesc,newsDateAdded FROM news WHERE YEAR(newsDateAdded)=YEAR(now())ORDER BY newsId desc
LIMIT $indexId,$nilaiAwal";
Keterangan: Program di atas melakukan query untuk menampilakan ringkasan berita tahun ini.
Segmen Program 4.15. Proses Pengecekan Bulan, Tahun dan Keyword
if (($month!="") && ($year!="")) {
$str1="&&(MONTHNAME(newsDateAdded)='$month'
&&YEAR(newsDateAdded)='$year')";
}elseif ($month!="") {
$str1="&&(MONTHNAME(newsDateAdded)='$month')";
}
elseif ($year!="") {
$str1=" && ( YEAR(newsDateAdded)='$year') "; } if ($str1=="")
{if($keywor }
d==""){ $keyword="$%^";}
Keterangan: Program di atas melakukan pengecekan filter untuk query pencarian data news berdasarkan bulan, tahun dan kata kunci.
Segmen Program 4.16. Proses News Melalui Menu News Search
$hasil1=mysql_query("SELECT COUNT(newsId) as jum FROM news WHERE (newsDesc LIKE '%$keyword%' ||
newsTitle LIKE '%$keyword%') $str1 ") or die("ERROR");
Keterangan: Program di atas melakukan query pencarian data news berdasarkan bulan, tahun dan kata kunci.
Segmen Program 4.17 Proses Pengecekan Halaman
$temp=$nilai1[jum]/$nilaiAwal;$jumhal=ceil($temp);
if ($indexId=='') {
$indexId=0;$indexIdPrev=0;$indexIdNext=$nilaiAwal;
$page=($indexId/$nilaiAwal)+1;
}
if ($next=='true') {
$indexIdNext=$indexId+$nilaiAwal; $page=($indexId/$nilaiAwal)+1;
if($indexId>0)
{ $indexIdPrev=$indexId-$nilaiAwal;}
}
elseif ($back=='true')
{
$page=($indexId/$nilaiAwal)+1;
if($indexId>=0)
{ $indexIdPrev=$indexId-
$nilaiAwal;$indexIdNext=$indexId+$nilaiAwal;}
}
elseif ($backDetail==true) {
$indexId=$index;$indexIdNext=$indexId+$nilaiAwal;
$page=($indexId/$nilaiAwal)+1;
if($indexId>=0)
{$indexIdPrev=$indexId-$nilaiAwal;}
else{$indexIdPrev=0;}
}
elseif ($goto==true) {
$indexId=($temphal-1)*$nilaiAwal;
$indexIdNext=$indexId+$nilaiAwal;
$page=($indexId/$nilaiAwal)+1;
if($indexId>=0) { $indexIdPrev=$indexId-$nilaiAwal;}
else { $indexIdPrev=0;}
}
Keterangan: Program di atas menjalankan proses untuk memeriksa halaman yang diakses. Segmen program ini digunakan untuk semua halaman website yang menampilkan data dalam jumlah banyak seperti hasil search news, search product, view news, dan view product untuk menunjukan pada user posisi halaman yang sedang diakses.
4.2.12. Halaman Search Product
Halaman ini digunakan untuk mencari produk yang sesuai dengan spesifikasi yang dipilih. Halaman ini dapat diakses melalui menu utama.
Gambar 4.12. Gambar Halaman Search Product
4.2.13. Halaman Search Result
Halaman ini menampilakan data produk, hasil dari pencarian sesuai
dengan spesifikasi yang dipilih.
Gambar 4.13. Halaman Search Result
Segmen Program 4.18. Proses Pengecekan Jenis Vendor
if ($s2==""){$strQuery2="";}else{$strQuery2="&& vendorId='$s2'";}
Keterangan: Program di atas melakukan pengecekan filter query untuk jenis vendor.
Segmen Program 4.19. Proses Pengecekan Kisaran Harga
if ($s3=='null'){ $strQuery3=""; }
elseif($s3=='1'){ $strQuery3="&& productPrice<1000000";}
elseif($s3=='12'){$strQuery3=" && productPrice>1000000 &&
productPrice<2000000";}
elseif($s3=='24')
{ $strQuery3="&& productPrice<4000000 && productPrice>2000000";}
elseif($s3=='4'){ $strQuery3="&& productPrice>4000000";}
Keterangan: Program di atas melakukan pengecekan filter query untuk kisaran harga.
Segmen Program 4.20. Proses Pengecekan Jenis Feature
for($i=1;$i<=$max;$i++) {
$namafeature="feature$i";
if (isset($rhs))$namafeature2=$HTTP_POST_VARS[$namafeature];
else $namafeature2=$HTTP_GET_VARS[$namafeature];
if ($namafeature2!='') {
if ($strQuery=="") { $strQuery="featureId='$namafeature2'";}
else {$strQuery=$strQuery."|| featureId='$namafeature2'";}
$kirimStr=$kirimStr."&feature$i=$namafeature2";
} }
Keterangan: Program di atas melakukan pengecekan filter query untuk jenis
feature.
Segmen Program 4.21. Proses Query Search Product
$hasil = mysql_query("SELECT DISTINCT a.productType, `productPrice`,
`productSize`, `productWeight`, `productImageSmall`,
`productImageLarge`,
`productTimeTalk`,`productTimeStandby`,`productNetwork`,`productS creen`, `productSummary`,`productDateAdded`,`vendorId`
FROM product as a,productFeature as b
WHERE (a.productType=b.productType $strQuery2 $strQuery3) &&
($strQuery) ORDER BY `productDateAdded` DESC LIMIT $indexId,$nilaiAwal") or die("ERROR");
Keterangan: Program di atas melakukan query pencarian data produk berdasarkan jenis vendor,kisaran harga dan jenis feature.
4.2.14. Halaman Compare
Halaman ini digunakan untuk membanding produk yang diinginkan sesuai dengan tipe produk yang diinginkan. Halaman ini diakses melalui menu utama. Yang pertama dilakukan adalah memilih jenis vendor dari produk yang mau di bandingkan.
Gambar 4.14. Halaman Compare
4.2.15. Halaman Compare Result
Halaman ini menampilkan hasil perbandingan produk dari tipe produk
yang dipilih sesuai dengan jenis vendor. Segmen program 4.12 dilakukan
sebanyak produk yang mau dibandingkan. Minimum dua produk.
Gambar 4.15. Halaman Compare Result
Segmen Program 4.22. Proses Query Compare Product
$hasilProduct1 = mysql_query(" SELECT`productType` ,`productPrice`,
`productSize`, `productWeight`, `productImageSmall`,
`productImageLarge`, `productTimeTalk`, `productTimeStandby`,
`productNetwork`, `productScreen`, `productSummary`,
`productDateAdded`, productRingtone, productPhonebook, a.vendorId, b.vendorName
FROM `product` as a, vendor as b
WHERE `productType` ='$p1' && a.vendorId=b.vendorId");
$nilaiProduct1=mysql_fetch_array($hasilProduct1);
Keterangan: Program di atas melakukan query untuk menampilkan hasil dari perbandingan produk.
4.2.16. Halaman Product
Halaman ini diakses melalui menu umum dan menampilkan semua data
produk. Apabila user member sudah melakukan login maka data yang tampil
adalah produk dengan tipe vendor yang disukai oleh member tersebut. Halaman
product juga dapat diakses melalui menu vendor sehingga menampilkan produk
yang sesuai dengan vendor yang dipilih.
Gambar 4.16. Halaman Product
Segmen Program 4.23. Proses Query Product Umum
$hasil=mysql_query("SELECT DISTINCT a.productType, `productPrice`,
`productSize`, `productWeight`, `productImageSmall`,
`productImageLarge`,
`productTimeTalk`,`productTimeStandby`,`productNetwork`,`productSc reen`, `productSummary`,`productDateAdded`,`vendorId`
FROM product as a ORDER BY `productDateAdded` DESC
LIMIT $indexId,$nilaiAwal") or die("ERROR");
Keterangan: Program di atas melakukan query untuk menampilkan produk.
Segmen program ini juga digunakan untuk menampilkan halaman view order dan view account credit yang diakses melalui menu member. Namun yang membedakan adalah tabel dan filter data yang ditampilkan berdasarkan member yang melakukan login.
Segmen Program 4.24. Proses Pengecekan Jenis Vendor Favorit Member
$prsnQuery=mysql_query("SELECT vendorId FROM personalize WHERE customerId='$t'");
$jum=mysql_num_rows($prsnQuery);
$loop=1;
$strQuery="";
While ($hasilPrsnQuery=mysql_fetch_array($prsnQuery)) {
$tempHasil=$hasilPrsnQuery[vendorId];
if ($loop==1) {$strQuery=$strQuery."vendorId=$tempHasil";}
else{$strQuery=$strQuery."|| vendorId=$tempHasil";}$loop++;
}
Keterangan: Program di atas melakukan proses pemeriksaan jenis vendor yang disukai oleh member.
Segmen Program 4.25. Proses Query Product Untuk Member
if (!empty($HTTP_COOKIE_VARS["memberUser"]))
{
$hasil=mysql_query("SELECT DISTINCT a.productType, `productPrice`,
`productSize`, `productWeight`, `productImageSmall`,
`productImageLarge`, `productTimeTalk`, `productTimeStandby`,
`productNetwork`, `productScreen`,
`productSummary`,`productDateAdded`,`vendorId`
FROM product as a
WHERE $strQuery
ORDER BY `productDateAdded` DESC
LIMIT $indexId,$nilaiAwal") or die("ERROR");
}
Keterangan: Program di atas melakukan query untuk menampilkan produk sesuai dengan vendor favorite member.
Segmen Program 4.26. Proses Query Product Sesuai Jenis Vendor
if (isset($id)) {
$hasil=mysql_query("SELECT DISTINCT a.productType, `productPrice`,
`productSize`, `productWeight`, `productImageSmall`,
`productImageLarge`, `productTimeTalk`, `productTimeStandby`,
`productNetwork`, `productScreen`,
`productSummary`,`productDateAdded`,`vendorId`
FROM product as a
WHERE vendorId=$id
ORDER BY `productDateAdded` DESC
LIMIT $indexId,$nilaiAwal") or die("ERROR");
}
Keterangan: Program di atas melakukan query untuk menampilkan produk sesuai dengan jenis vendor.
4.2.17. Halaman Detail Product
Halaman ini menampilkan data produk yang dipilih secara jelas. Melalui halaman ini juga diberikan link add shopping cart dan link credit simulation.
Segmen Program 4.27. Proses Query Detail Product
$query = "SELECT productType, productImageLarge, productSize,
productWeight, vendorId,productTimeTalk, productTimeStandby,productPrice,productDateAdded,
productSummary,productScreen,productNetwork,productRingtone, productPhonebook, productBox
FROM product as a
WHERE a.productType='$id'";
$hasil = mysql_query($query) or die("ERROR");
Keterangan: Program di atas melakukan query untuk menampilkan detail product.
Segmen program ini juga digunakan untuk semua halaman yang menampilkan
detail data seperti halaman detail news, detail customer order dan detail account
credit. Juga digunakan pada halaman administrator untuk menampilkan detail data.
Gambar 4.17. Halaman Detail Product
4.2.18. Halaman Add Shopping Cart
Halaman ini digunakan oleh member untuk memilih warna dari produk
yang dimasukan ke shopping cart. Pada halaman Add Shopping Cart, juga
ditampilkan data detail produk seperti pada halaman detail product dengan
menggunakan segmen program 4.20. Pilihan warna diberikan apabila stok produk
masih ada.
Gambar 4.18. Halaman Add Shopping Cart
Segmen Program 4.28. Proses Filter Warna Produk
<?
$query2="SELECT `productType`,`detailProductColor`,`detailProductId`
,`detailProductStock`
FROM `detailProduct` WHERE productType='$id'";
$hasil2=mysql_query("$query2");
?>
<select name="menu2" onChange="MM_jumpMenu('self',this,0)">
<option selected value="addShopCart.php?id=<? echo"$id";?>">
---</option>
<?
while ($nilai2=mysql_fetch_array($hasil2)) { if($nilai2[detailProductStock]>0) {
?>
<option value="shopCart.php?id=<? echo"$nilai2[detailProductId]";?>"
>
<? echo"$nilai2[detailProductColor]";?></option>
<?
} }
?>
Keterangan: Program di atas menjalankan proses untuk menampilkan warna pilihan dari produk yang stoknya masih tersedia.
Segmen Program 4.29. Proses Pengecekan Hak Akses
function chek() {
global $HTTP_COOKIE_VARS;
if (!isset($HTTP_COOKIE_VARS["adminUser"])) { exit; } }
Keterangan: Program di atas digunakan untuk memeriksa hak akses dari tiap-tiap
halaman.
4.2.19. Halaman Shopping Cart
Shopping cart menyimpan daftar belanja member. Setiap member mempunyai shopping cart masing-masing.
Gambar 4.19. Halaman Shopping Cart
Segmen Program 4.30. Proses Penambahan Produk Di Shopping Cart
if (isset($HTTP_GET_VARS["id"])) {
$get=mysql_query("SELECT a.detailProductId,b.productType FROM shoppingCart as a, product as b, detailProduct as c
WHERE customerId='$hasilcari[customerId]' && a.detailProductId='$id' &&
a.detailProductId=c.detailProductId && b.productType=c.productType");
$jumGet=mysql_num_rows($get);
if ($jumGet==0) {
mysql_query("INSERT INTO shoppingCart ( shoppingCartQty, shoppingCartDateAdded, customerId, detailProductId)
VALUES ('1',now(),'$hasilcari[customerId]','$id')");
} else {
$hasilget=mysql_fetch_array($get);
$warning="$hasilget[productType] already in shopping cart";}
}
Keterangan: Program di atas melakukan query untuk menambah produk pada tabel shopping cart.
Segmen Program 4.31. Proses Query Shopping Cart
$nilai=mysql_query("SELECT shoppingCartQty, shoppingCartDateAdded, b.detailProductId, customerId, c.productPrice, c.productType, d.vendorName, a.detailProductColor, a.detailProductStock
FROM shoppingCart as b, detailProduct as a , product as c, vendor as d
WHERE customerId='$hasilcari[customerId]' &&
a.detailProductId=b.detailProductId &&
a.productType=c.productType && c.vendorId=d.vendorId ORDER BY shoppingCartDateAdded asc");
$jum=mysql_num_rows($nilai);
Keterangan: Program di atas menjalankan proses untuk menampilkan data shopping cart.
Segmen Program 4.32. Proses Remove Shopping Cart Data
$temp="scdelete$hasil[detailProductId]";
$temp=$HTTP_POST_VARS[$temp];
if ($temp!='') {
mysql_query("DELETE FROM shoppingCart
WHERE customerId='$hasilcari[customerId]' &&
detailProductId='$hasil[detailProductId]'");
}
Keterangan: Program di atas menjalankan proses menghapus data dari shopping cart yang pilih.
Segmen Program 4.33. Proses Update Quantity Shopping Cart
$temp="scqty$hasil[detailProductId]";
$temp=$HTTP_POST_VARS[$temp];
if ((is_numeric($temp)) && ($temp>0)) {
if ($temp > $hasil[detailProductStock]) {
if ($hasil[detailProductStock]==0)
{
$warning=$warning."$hasil[vendorName] $hasil[productType]
$hasil[detailProductColor] remove from shopcart, stock is empty !<br>";
mysql_query("DELETE FROM shoppingCart
WHERE customerId='$hasilcari[customerId]' &&
detailProductId='$hasil[detailProductId]'");
} else
{
$warning=$warning."Stok $hasil[vendorName]
$hasil[productType] $hasil[detailProductColor] is not available !<br>";
mysql_query("UPDATE shoppingcart
SET shoppingCartQty='$hasil[detailProductStock]'
WHERE customerId='$hasilcari[customerId]' &&
detailProductId='$hasil[detailProductId]'");
}
}else {
mysql_query("UPDATE shoppingCart SET shoppingCartQty='$temp'
WHERE customerId='$hasilcari[customerId]' &&
detailProductId='$hasil[detailProductId]'");
} }else
{
$warning="Shopping Cart Quantity $hasil[vendorName] $hasil[productType]
$hasil[detailProductColor] Value NOT VALID !";
}
Keterangan: Program di atas menjalankan proses untuk mengedit quantity pada
shopping cart.
Segmen Program 4.34. Proses Delete All Item
mysql_query("DELETE FROM shoppingCart
WHERE customerId='$hasilcari[customerId]' ");
$warning="Delete All Item In Shopping Cart, DONE";
Keterangan: Program di atas menjalankan proses untuk mengedit quantity pada shopping cart.
4.2.20. Halaman Delivery and Payment Data
Halaman ini berisi form yang harus diisi oleh member untuk melengkapi data pembelian. Data tersebut nantinya dibagi menjadi dua yaitu delivery data untuk disimpan ke dalam database dan payment data yang digunakan untuk memproses validasi kartu kredit secara virtual. Ada dua cara pembayaran yang dapat digunakan yaitu tranfer rekening dan kartu kredit.
Segmen Program 4.35. Proses Menyimpan Data Order dan Detail Order Metode Transfer
mysql_query("INSERT INTO `ord` ( `customerId`,`customerName`,
`customerAddress`,`customerPostCode`, `customerProvince`,
`customerCity`, `customerTelephone`, `customerHandphone`,
`customerEmailAddress`,
`delName`, `delAddress`, `delPostCode`, `delProvince`, `delCity`,
`datePurchased`,
`ordDelivery`,ordPayment,accountName,accountNumber)
VALUES ('$idCust', '$name', '$address', '$postCode', '$province', '$city','$telephone','$handphone','$emailAddress','$delName','$del Address','$delPostCode','$delProvince','$delCity',now(),'N','T','$
transfer_name','$transfer_accountnumber')");
$nilaiOrd=mysql_query("SELECT ordId FROM ord WHERE customerId='$idCust' ORDER BY ordId desc LIMIT 0,1");
$jumOrd=mysql_num_rows($nilaiOrd);
$hasilOrd=mysql_fetch_array($nilaiOrd);
$nilaiSc=mysql_query("SELECT shoppingCartQty, b.detailProductId, customerId, c.productPrice FROM shoppingCart as b,
detailProduct as a , product as c
WHERE customerId='$idCust' && a.detailProductId=b.detailProductId
&&a.productType=c.productType ");
$jumSc=mysql_num_rows($nilaiSc);
while($hasilSc=mysql_fetch_array($nilaiSc)) {
mysql_query("INSERT INTO `detailord` (`detailOrdQty`,
`detailOrdFinalPrice`, `ordId`, `detailProductId`)
VALUES ('$hasilSc[shoppingCartQty]', '$hasilSc[productPrice]', '$hasilOrd[ordId]', '$hasilSc[detailProductId]')");
mysql_query("UPDATE detailProduct
SET detailProductStock = detailProductStock-
$hasilSc[shoppingCartQty]
WHERE detailProductId='$hasilSc[detailProductId]'");
}
mysql_query("DELETE FROM shoppingCart
WHERE customerId='$idCust'");
Keterangan: Program ini melakukan penyimpanan data order untuk metode pembayaran secara transfer ke dalam database.
Gambar 4.20. Halaman Delivery and Payment Data
Segmen Program 4.36. Proses Penyimpanan Data Delivery Sementara Metode Kartu Kredit
session_start();
session_register("idCust","name","address","emailAddress","postCode","cit y","province","telephone","handphone","delName","delAddress","delPostCode
","delCity","delProvince");
Keterangan: Program di atas melakukan penyimpanan data pengiriman order
sebelum disimpan ke dalam database.
Segmen Program 4.37. Proses Encryption Payment Data Metode Kartu Kredit
$ccNumber="$cc1"."$cc2"."$cc3"."$cc4";
$temp=strlen("$ccNumber");
$s="";
for ($i=0;$i<$temp;$i++) {
$x=substr("$ccNumber","$i",1); $x=ord("$x");
$x=$x+1;$s.=chr($x);
}
$s=strrev("$s");
Keterangan: Program di atas melakukan melakukan proses enkripsi terhadap data nomor kartu kredit member.
4.2.21. Halaman Proses Validasi Kartu Kredit
Halaman ini digunakan untuk memeriksa validasi dari kartu kredit yang digunakan untuk pembayaran. Halaman ini mengakses database bank.
Segmen Program 4.38. Koneksi Database Bank
mysql_connect("localhost","","") or die("Koneksi server Gagal");
mysql_select_db("bank") or die("Koneksi database error)");
Keterangan: Program di atas melakukan koneksi ke server localhost dan dihubungkan ke database bank.
Segmen Program 4.39. Proses Decryption Payment Data
$temp=strlen("$number");
$number=strrev("$number");
for ($i=0;$i<$temp;$i++) {
$x=substr("$number","$i",1);
$x=ord("$x");
$x=$x-1;
$s.=chr($x);
}
Keterangan: Program di atas melakukan dekripsi terhadap data nomor kartu kredit member.
Segmen Program 4.40. Proses Pengecekan Validasi Kartu Kredit
$cc="false";
$query=mysql_query("SELECT
`ccNumber`,`ccName`,`ccLimit`,`ccExpire`,`ccType` FROM `creditcard");
while($nilai=mysql_fetch_array($query)) {
if (($s==$nilai[ccNumber])&& ($amount<=$nilai[ccLimit]) &&
($type==$nilai[ccType]) && ($expire==$nilai[ccExpire])) {
$y1=substr("$expire",2,2);$y2=date(y);
if ($y1>$y2) { $cc="true"; }
elseif ($y1==$y2)
{$m1=substr("$expire",0,2); $m2=date(m);
if($m1>=$m2){$cc="true"; }
}
} }
Keterangan: Program di atas melakukan pengecekan data kartu kredit member terhadap data yang ada pada database bank.
Segmen Program 4.41. Proses Pencatatan Transaksi Kartu Kredit
if ($cc=="true")
{ mysql_query("UPDATE creditcard
SET ccLimit=ccLimit-$amount
WHERE ccNumber='$s'") or die("sql die");
mysql_query("INSERT INTO customerTransaction (ccNumber,dateTransaction, descTransaction, amountTransaction)
VALUES ('$s',now(),'PeaceCell','$amount')") or die("SQL SALAH");
header("location:
http://localhost/peaceCell/cekValidation.php?valid=1");
}
elseif ($cc=="false") {
header("location: ://localhost/peaceCell/cekValidation.php?valid=0");
}
Keterangan: Program di atas melakukan penyimpanan data transaksi kartu kredit ke dalam database bank.
4.2.22. Halaman Proses Confirm Payment
Halaman ini digunakan untuk memeriksa hasil dari proses validasi kartu kredit yang sudah dilakukan sebelumnya dan proses penyimpanan data order.
Segmen Program 4.42. Proses Cek Hasil Validasi Kartu Kredit
if($valid==1) {
// Lakukan Proses Penyimpanan data order ketabel ord dan detailOrd $valid="Order Process Succes";
header("location:konfirmOrder.php?valid=$valid");
}
elseif ($valid==0) {
$valid="Order Process Failed";
header("location:konfirmOrder.php?valid=$valid");
}
Keterangan: Program di atas melakukan proses pemerikasaan validasi kartu kredit
yang dipakai untuk melakukan pembayaran.
Segmen Program 4.43. Proses Insert Data Order Untuk Metode Pembayaran Kartu Kredit
session_start();
mysql_query("INSERT INTO `ord` ( `customerId`, `customerName`,
`customerAddress`, `customerPostCode`, `customerProvince`,`customerCity`,
`customerTelephone`, `customerHandphone`, `customerEmailAddress`,
`delName`, `delAddress`, `delPostCode`, `delProvince`, `delCity`,
`datePurchased`, `ordDelivery`,`ordPayment`)
VALUES('$idCust','$name','$address','$postCode','$province','$city','$tel ephone','$handphone','$emailAddress','$delName','$delAddress','$delPostCo de','$delProvince','$delCity',now(),'N', 'C')");
Keterangan: Program di atas melakukan query penyimpanan data order untuk metode pembayaran dengan kartu kredit ke dalam database.
Segmen Program 4.44. Proses Insert Data Detail Order Untuk Metode Pembayaran Kartu Kredit
// Mengambil OrderId dari order yang baru disimpan
$nilaiOrd=mysql_query("SELECT ordId FROM ord WHERE customerId='$idCust' ORDER BY ordId desc LIMIT 0,1");
$jumOrd=mysql_num_rows($nilaiOrd);
$hasilOrd=mysql_fetch_array($ni // Mengambil Isi Shopping Cart
laiOrd);
$nilaiSc=mysql_query("SELECT shoppingCartQty, b.detailProductId, customerId, c.productPriceFROM shoppingCart as b, detailProduct as a , product as c
WHERE customerId='$idCust' && a.detailProductId=b.detailProductId
&&
a.productType=c.productType ");
$jumSc=mysql_num_rows($nilaiSc);
// Memindah Isi shopping cart Ke Order Detail,update stok dan delete shopping cart
while($hasilSc=mysql_fetch_array($nilaiSc))
{
mysql_query("INSERT INTO `detailord` (`detailOrdQty`,
`detailOrdFinalPrice`, `ordId`, `detailProductId`)
VALUES ('$hasilSc[shoppingCartQty]', '$hasilSc[productPrice]', '$hasilOrd[ordId]',
'$hasilSc[detailProductId]')");
mysql_query("UPDATE detailProduct
SET detailProductStock=detailProductStock-
$hasilSc[shoppingCartQty]
WHERE detailProductId='$hasilSc[detailProductId]'");
}
mysql_query("DELETE FROM shoppingCart WHERE customerId='$idCust'");
Keterangan: Program di atas melakukan query penyimpanan data detail order
untuk metode pembayaran dengan kartu kredit ke dalam database.
4.2.23. Menu Administrator
Menu administrator tampil berdasarkan status login. Ada dua status dari administrator yaitu administrator system yang bertugas untuk menangani maintenace data web dan administrator order yang menangani order customer dan shopping cart.
Gambar 4.21. Menu Administrator System
Gambar 4.22. Menu Administrator Order
4.2.24. Halaman Add Product
Halaman ini digunakan untuk menambah data produk baru oleh
administrator system.
Gambar 4.23. Halaman Add Product
Segmen Program 4.45. Proses Upload Picture
$imgalt=(isset($HTTP_POST_VARS['imgalt']))?$HTTP_POST_VARS['imgalt']:$img alt;
$image_name = (strlen($imgalt)) ? $HTTP_POST_VARS['imgalt'] :
$HTTP_POST_FILES['imageSmall']['name'];
$image_type = (strlen($imgalt)) ? $HTTP_POST_VARS['image_type'] :
$HTTP_POST_FILES['imageSmall']['type'];
$imgdesc = str_replace('"', '&quot;', $HTTP_POST_VARS['imgdesc']);
$imgtype = explode(".",$image_name);
$imgtype = " ".$imgtype[count($imgtype)-1]." ";
if (!ereg(strtolower($imgtype), strtolower($fileupload_allowedtypes))) { die (fatal_error($txt[110])); }
if (strlen($imgalt))
{ $pathtofile = $fileupload_realpath."/".$imgalt;
$image = $HTTP_POST_VARS['image'];
} else {
$pathtofile = $fileupload_realpath."/".$image_name;
$image = $HTTP_POST_FILES['imageSmall']['tmp_name'];
}
// memastikan agar file tidak ada yang sama, di rename
$i = 1;
$pathtofile2 = $pathtofile;
$tmppathtofile = $pathtofile2;
$img2_name = $image_name;
$imgdata = $image_name;
while (file_exists($pathtofile2))
{ $pos = strpos($tmppathtofile, '.'.trim($imgtype));
$pathtofile_start = substr($tmppathtofile, 0, $pos);
$pathtofile2 = $pathtofile_start.'_'.zeroise($i++, 2).'.'.trim($imgtype);
$img2_name = explode('/', $pathtofile2);
$img2_name =
$img2_name[count($img2_name)-1];
$setnew='true';
}
if($setnew=='true')$imgdata = $img2_name;
if (file_exists($pathtofile) && !strlen($imgalt)) {
$i = explode(" ",$fileupload_allowedtypes);
$i = implode(", ",array_slice($i, 1, count($i)-2));
move_uploaded_file($image, $pathtofile2) or die(fatal_error($txt[109]));
$imgalt='true';
}
if (!strlen($imgalt))
{ move_uploaded_file($image, $pathtofile) die(fatal_error($txt[111]));
}
$image_small=$imgdata;
Keterangan: Program di atas melakukan proses upload gambar.
Segmen Program 4.46. Fungsi Untuk Mengeluarkan Nilai Nol
function zeroise($number,$threshold) { $l=strlen($number);
if ($l<$threshold)
for ($i=0; $i<($threshold-$l); $i=$i+1) { $number='0'.$number;}
return($number);
}
Keterangan: Program di atas merupakan fungsi untuk mengeluarkan nilai nol.
Segmen Program 4.47. Proses Add Product
mysql_query("INSERT INTO
product(productType,vendorId,productPrice,productSize,
productWeight,productImageSmall,productImageLarge,productTimeTalk, productTimeStandby,productNetwork,productScreen,productRingtone,
productPhonebook,productSummary,productBox,productDateAdded, productHit)
VALUES('$productType','$select','$productPrice','$productSize', '$productWeight','$image_small','$image_large','$productTimeTalk', '$productTimeStandby','$productNetwork','$productScreen',
'$productRingtone', '$productPhonebook','$productSummary', '$box',now(),'0')") or die('ERROR');
Keterangan: Program di atas melakukan query penyimpanan data product.
Segmen program ini juga digunakan untuk semua penambahan data yang dilakukan oleh administrator system. Perbedaannya terletak pada tabelnya.
Halaman yang menggunakan segmen program 4.46 adalah halaman add customer,
add customer credit, add feature, add vendor, add news, add admin.
Segmen Program 4.48. Proses Add ProductFeature
$dat = mysql_query("select productType from product where productType =
$productType'");
$hasil=mysql_fetch_array($dat);
for($i=1;$i<=$max;$i++) {
$namafeature="feature$i";
$namafeature2=$HTTP_POST_VARS[$namafeature];
if ($namafeature2!='')
mysql_query("INSERT INTO productFeature(productType,featureId) VALUES ('$hasil[productType]','$namafeature2')")
or die(ERROR);
}
Keterangan: Program di atas melakukan query penyimpanan data product feature
4.2.25. Halaman Search Product
Halaman ini bertujuan mempermudah administrator system untuk mencari barang yang diedit datanya. Hasilnya ditampilkan pada halaman view product.
Gambar 4.24. Halaman Search Product
Segmen Program 4.49. Proses Query Search ProductFeature
if ($vendor!=""){ $str=" && vendorId='$vendor' ";}
$query = "SELECT`productType`, `productPrice`, `productSize`,
`productWeight`, `productImageSmall`, `productImageLarge`
,`productTimeTalk`, `productTimeStandby`, `productNetwork`,
`productScreen`, `productSummary`, `productDateAdded`,
`vendorId`
FROM `product`
WHERE productType LIKE '%$type%' $str ORDER BY `productDateAdded` DESC LIMIT $indexId,$nilaiAwal";
$hasil = mysql_query($query) or die("ERROR");
Keterangan: Program di atas menjalankan query untuk mencari data product
berdasarkan nama dan jenis vendor. Segmen program ini juga digunakan untuk
semua halaman search data yang dilakukan oleh administrator system dan order,
perbedaannya terletak pada tabelnya. Halaman yang menggunakan segmen
program 4.49 adalah halaman search customer, search customer credit, search
news, search customer order.
4.2.26. Halaman View Product
Halaman ini berfungsi untuk menampilkan semua data produk dan menampilkan hasil search product.
Gambar 4.25. Halaman View Product
Segmen Program 4.50. Proses Query View Product
$query = "SELECT `productType`, `productPrice`, `productSize`,
`productWeight`, `productImageSmall`, `productImageLarge`,
`productTimeTalk`, `productTimeStandby`, `productNetwork`,
`productScreen`, `productSummary`, `productDateAdded`, `vendorId`
FROM `product`
ORDER BY `productDateAdded` DESC
LIMIT $indexId,$nilaiAwal";
$hasil = mysql_query($query) or die("ERROR");
Keterangan: Program di atas menjalankan query untuk menampilkan data product .
Segmen program ini juga digunakan untuk menampilkan semua halaman view data yang diperlukan oleh administrator system dan order. Perbedaannya terletak pada tabelnya. Halaman yang menggunakan segmen program 4.50 adalah halaman view customer, view customer credit, view feature, view vendor, dan view customer order.
4.2.27. Halaman Edit Product
Halaman ini berfungsi untuk mengubah data produk yang dilakukan oleh
administrator system.
Gambar 4.26. Halaman Edit Product Segmen Program 4.51. Proses Query Edit Product
mysql_query("UPDATE product SET vendorId='$vendor',productPrice='$price', productSize='$productSize',productWeight='$productWeight',productT imeTalk='$productTimeTalk',
productTimeStandby='$productTimeStandby',
productNetwork='$productNetwork',productScreen='$productScreen', productSummary='$productSummary',productBox='$box'
WHERE productType='$id3' ") or die('ERROR');
Keterangan: Program di atas menjalankan query untuk mengedit data product.
Segmen program ini juga digunakan untuk mengubah data oleh administrator system dan order, perbedaannya terletak pada tabelnya. Halaman yang menggunakan segmen program 4.51 adalah halaman edit customer credit status, edit vendor, edit feature, edit news, edit admin, dan edit delivery order status.
Segmen Program 4.52. Proses Query Edit Product Feature
mysql_query("DELETE FROM productFeature
WHERE productType='$id3'")or die('ERROR');
for($i=1;$i<=$max;$i++) {
$namafeature="feature$i";
$namafeature2=$HTTP_POST_VARS[$namafeature];
if ($namafeature2!='')
mysql_query("INSERT INTO productFeature(productType,featureId) VALUES ('$id3','$namafeature2')")or die('ERROR');
}
Keterangan: Program di atas menjalankan query untuk mengedit data product feature.
4.2.28. Halaman Search Report Order
Halaman ini digunakan untuk melihat laporan order secara periode tertentu oleh administrator order. Hasilnya ditampilkan pada halaman report order.
Gambar 4.27. Halaman Search Report Order
4.2.29. Halaman Report Order
Halaman ini menampilkan hasil dari search report order. Laporan order yang ditunjukan berbeda dengan customer order di mana laporan order menampilkan jumlah tiap-tiap produk yang terjual dalam periode tertentu dan jumlah total order.
Gambar 4.28. Halaman Report Order
Segmen Program 4.53. Proses Query Report Order
$hasil=mysql_query("SELECT SUM(b.detailOrdQty*b.detailOrdFinalPrice) as total,
SUM(b.detailOrdQty) as jum, b.detailProductId, c.productType, d.vendorId,e.vendorName,c.detailProductColor
FROM ord as a,detailOrd as b,detailProduct as c,product as d, vendor as e WHERE a.datePurchased between '$date1' and '$date2' &&
a.ordId=b.ordId&& b.detailProductId=c.detailProductId &&
c.productType=d.productType && d.vendorId=e.vendorId GROUP BY b.detailProductId ")or die("ERROR");
Keterangan: Program di atas menjalankan query untuk menampilkan report order.
4.2.30. Link Delete Shopping Cart
Link ini digunakan untuk administrator order untuk menghapus data pada tabel shopping cart untuk member yang sudah tidak aktif lagi atau tidak mengunjungi website lebih dari tiga bulan.
Segmen Program 4.54. Proses Delete Shopping Cart
$hasil=mysql_query("SELECT customerId FROM customer
WHERE customerDaTeLastLogin<= DATE_SUB(NOW(), INTERVAL 3 MONTH)") or die("sqlSalah");