Perancangan Sistem Penjualan danan Pembelian Pakaian Berbasis E-Commerce Distro Rock ‘n’ Roll

$b Benar jika $a sama dengan $b,

dan keduanya memiliki type data yang sama.(hanya dalam PHP4)


(31)

3. Operator Logika

OPERATOR CONTOH BERNILAI BENAR jika :

AND / and $i && $j atau $i AND $j $i dan $j bernilai benar

OR / or $i || $j atau $i OR $j Salah satu atau kedua

variabel bernilai benar

XOR $i XOR $j Salah satu variabel bernilai

benar, tetapi tidak keduanya benar

NOT !$i $i tidak bernilai benar

4. Operator Penugasan (Assignment Operator)

CONTOH EKIVALEN DENGAN

$x + = $y $x = $x + $y $x -= $y $x = $x - $y $x * = $y $x = $x * $y $x / = $y $x = $x / $y $x % = $y $x = $x % $y $x &= $y $x = $x & $y $x | = $y $x = $x | $y $x ^ = $y $x = $x ^ $y $x .= $y $x = $x . $y $x > > = 2 $x = $x > > 2 $x < < = 2 $x = $x < < 2 $x+ + $x = $x + 1 $x-- $x = $x - 1


(32)

2.5 MySQL

MySQL dikembangkan perusahaan Swedia sekitar tahun 1994–1995 oleh Michael Widenius atau Monty. Pada versi awal, MySQL hanya berjalan di LINUX yang masih banyk terdapat kekurangan. Pada bulan Juni 2000, MySQL diumumkan merupakan software database yang bebas berlisensi. Maksudnya bebas digunakan siapa saja tanpa pemungutan biaya apapun demi kepentingan umum.

1. Connect ke MySQL

mysql_connect('host', 'username', 'password'); 2. Memilih database yang akan digunakan

mysql_select_db('nama_database'); 3. Mengambil data dari database

mysql_query("perintah mysql"); 4. Mengambil data menggunakan perintah SELECT

select * from berita order by id desc 5. Menampilkan hasil query

$result = mysql_query("select * from berita order by id desc"); 6. Memasukkan data kedalam database


(33)

2.6 Adobe Dreamweaver

Adobe Dreamweaver merupakan salah satu software untuk mendesain halaman web yang telah diakui kecanggihannya. Kelengkapan dan kemampuan software ini dalam mendesain sebuah halaman web mampu menambah kreasi pengguna dan sangat mudah membantu sipemakai dalam menggunakannya.

Tampilan Dreamweaver

2.7 Instalasi Xampp

1. Buka file setup Master Xampp. Hingga muncul dialog pertama instalasi, yaitu kotak penentuan bahasa instalasi.


(34)

2. Pilih bahasa english, lalu klik ok. Hingga masuk ke kotak dialog berikutnya .klik next saja. Lalu kotak berikutnya adalah penentuan folder tempat penyimpanan file instalasi. Biarakan default sesuai yang ada, klik install.


(35)

3. Hingga proses instalasi berlangsung.

4. Tunggu beberapa saat, hingga proses instalasi selesai. Hingga muncul gambar berikut:


(36)

5. biarkan sampai proses tersebut tertutup. Hingga muncul kotak dialog konfirmasi berikut:

6. Klik tombol Finish. Lalu muncul konfirmasi berikut:

7. Klik tombol yes, biarkan proses berlanjut, lalu muncul kotak konfirmasi berikut nya:


(37)

8. Klik tomblo yes lagi, Hingga tampil kotak konfirmasi terakhir yang memberitahukan bahwa proses selesai.


(38)

BAB 3

GAMBARAN DISTRO

3.1 Gambaran Perancangan

Pada website distro ini memiliki beberapa halaman. Tiap halaman masing-masing memiliki link yang merujuk setiap informasi yang berbeda–beda. Untuk menampilkan dan pengujian website perusahaan ini dengan mengetikkan pada address bar browsing: http://localhost /putri_distro. Maka tampilannya sebagai berikut:


(39)

Pada gambar 3.1 dapat dilihat halaman utama website berisi informasi produk-produk yang ditawarkan dan disertai beberapa link informasi lain seperti harga, designer, e-market dan comment form dimana bagi siapa saja yang ingin memberi kritik dan sarannya serta ingin menanyakan tentang produk.

Adapun prosedur penggunaan program secara manual dapat diuraikan sebagai berikut:

1. Aktifkan Mozilla Firefox dengan mengklik Start pada desktop, kemudian klik Mozila

Firefox.

2. Setelah jendela Mozila Firefox terbuka, pada address bar browsing maka tuliskan

/search dari search

engine (baik google maupun yahoo dan lainnya) dengan menulis keyword / kata

kunci distro rock ‘n’ roll.

3.1.1 Home

Home merupakan tampilan utama dari website Distro. Tampilan ini berisi informasi tempat dan himbauan produk-produk yang tersedia dan disertai link lainnya.


(40)

3.1.2 About Us

About Us merupakan tampilan Informasi berbagai macam koleksi busana dan produk– produk lainnya yang terdapat pada distro Rock ‘n’ Roll ini.

3.1.3 How To Order

How To Order merupakan link dimana penjelasan mengenai administrasi pembayaran barang yang akan dibeli. Pada link ini terdapat kemudahan cara bertransaksi tanpa menyita biaya dan waktu sipembeli. Kemudahan yang ditawarkan, setelah pembeli memilih produk mana yang diinginkan, pembeli dapat mengisi formulir yang tersedia dengan identifikasi diri yang lengkap lalu mentransfer jumlah uang yang sesuai dengan jumlah harga produk ke rekening pemilik distro ini. Setiap pembeli memiliki kode pelanggan dan password pelanggan. Verifikasi ini agar memberi keamanan terhadap tiap– tiap pelanggan.

Bagi siapa saja yang menjadi pengunjung website distro ini, diberi fasilitas kebebasan untuk memberi komentar kepada pengolah distro ini mengenai kualitas produk distro ini ataupun komentar lainnya. Segala bentuk komentar akan ditanggapi dengan baik. Komentar ini diharapkan menjadi acuan dalam memperbaiki sistem manajemen distro ini kearah yang lebih baik.


(41)

3.1.4 Contact Us

Link ini berisi informasi khusus mengenai kejelasan dan keberadaan distro yaitu nama, alamat, email dan message berupa tampilan isi dari pesan dan komentar yang telah masuk ke website distro ini.

3.1.5 Login

Link Login ini terbagi atas 3 jalur yaitu: login administrator, login pengunjung, dan login pelanggan. Login administrator merupakan karyawan dari distro tersebut. Hak layak dan segala sesuatu kerahasiaan yang terdapat pada distro ini hanya diketahui administrator. Login pengunjung merupakan pengunjung yang mengunjungi website distro ini. Login pelanggan ini merupakan privasi setiap pelanggan yang telah menjadi pelanggan distro ini. Segala sesuatu kerahasiaan pelanggan menjadi tanggung jawab sipelanggan. Segala bentuk kecurangan dan kejahatan yang ditimbulkan tidak menjadi tanggung jawab pemilik distro dan administrator. Kepercayaan dalam bentuk apapun yang diberikan kepada pihak distro, menjadi acuan, konsekuensi dan bagian yang sangat berharga bagi pihak distro ini sendiri.


(42)

Tampilan gambar sebagai berikut:

3.1.1 Home


(43)

(44)

(45)

BAB 4

PERANCANGAN DAN IMPLEMENTASI SISTEM

4.1 Konsep Dasar Sistem

Adapun pendekatan dalam pendefinisian sistem yaitu: merupakan elemen yang akan saling berinteraksi untuk mencapai suatu tujuan tertentu. Komponen – komponen dalam suatu sistem tidak dapat berdiri sendiri, melainkan harus saling berinteraksi dan saling berhubungan membentuk satu kesatuan untuk mencapai sasaran.

Suatu sistem mempunyai beberapa karakteristik antara lain:

1. Komponen Sistem

Suatu sistem terdri dari sejumlah komponen yang saling berinteraksi, saling berhubungan dan saling bekerja sama dalam menjalankan suatu fungsi yang akan mempengaruhi proses kerja suatu sistem.

2. Batas Sistem

Merupakan daerah yang membatasi daerah suatu sistem dengan sistem yang lain. Batas–batasan tersebut merupakan penunjuk ruang lingkup dari suatu sistem.


(46)

3. Ruang Lingkup Luar

Lingkungan luar dari sistem juga akan mempengaruhi operasi sistem. Lingkungan luar terkadang juga menguntungkan ataupun merugikan. Lingkungan luar yang menguntungkan merupakan energi sistem. 4. Penghubung Sistem

Penghubung (interface) merupakan media penghubung antara suatu sistem dengan sub-sistem. Melalui ini pengaliran sumber daya dari suatu sub-sistem menuju sub-sistem lainnya.

5. Masukan dan Keluaran Sistem

Masukan (input) merupakan energi yang terdapat dalam suatu sistem. Masukan berupa perawatan (maintenance) dan sinyal (signal). Keluaran (output) merupakan hasil proses masukan yang akan menjadi masukan kembali melalui penghubung sistem dari satu sub-sistem ke sub-sistem lain.


(47)

4.2 Perencanaan Sistem

Sebelum program dikembangkan, terlebih dahulu merancang sistem tersebut. Perencanaan sistem ini menyangkut kebutuhan fisik, data, dana dan perancang yang akan mendukung penerapan sistem.

4.3 Analisis Sistem

Tahapan ini dilakukan setelah perancanaan telah dilaksanakan. Tahapan ini merupakan tahapan kritis dari sistem. Tahapan ini merupakan langkah awal dari perancangan suatu sistem yang akan dikembangkan.

4.4 Identifikasi Masalah

Pada tahapan ini mengkaji pangkal permasalahan yang ditemukan selama ini serta mengidentifikasi subjek–subjek permasalahan yang mengacu pada aliran pengolahan data manual. Setelah itu mengidentifikasi titik – titik keputusan. Titik keputusan menunjukkkan kondisi penyebab sesuatu yang terjadi.

4.5 Desain Sistem

Desain sistem memberikan gambaran lengkap suatu program serta aspek–aspek terkait. Adapun sasaran–sasaran desain sistem antara lain:


(48)

1. Sistem harus berguna terhadap banyak pihak, baik dari sisi toko tersebut maupun masyarakat luar, mudah dipahami, dan mudah digunakan.

2. Sistem harus cermat dan efektif.

4.6 Implementasi Sistem

Tahap implementasi merupakan tahap peletakan sistem yang akan dioperasikan. Adapun tahapan–tahapan implementasi sistem tersebut terdiri dari:

1. Penerapan Rencana

Rencana merupakan tahapan awal dalam tahapan implementasi sistem. Rencana ini menyangkut pengaturan waktu dan kebutuhan fisik.

2. Kegiatan Implementasi

Kegiatan yang dilakukan dalam tahap ini adalah menginstalasi dan melaksanakan pelatihan program yang telah selesai dirancang.

3. Perawatan Sistem

Perlunya perawatan sistem diakibatkan:

1. mengurangi kesalahan dan kelemahan sistem yang tidak terdeteksi pada

saat pengetesan program. 2. Sistem tetap Up to date.


(49)

4.7 Algoritma

Algoritma merupakan urutan struktur atau langkah-langkah dalam proses perancangan sistem. Untuk memudahkan proses perancangan sistem ini ada 2 bentuk yaitu dengan menggunakan flowchart dan DFD (data flow diagram).

4.7.1 Flowchart

True False

4.7.1 Flowchart Start

Menu Halaman

Category

Shopping Cart


(50)

4.7.2 Simbol-simbol DFD (Data Flow Diagram)

Tabel 4.7.2.1 Simbol-simbol DFD

No Gambar Nama Fungsi

1 Kesatuan Luar

(External Entity)

Memberikan input atau menerima output dari sistem.

2 Proses (Process) Kegiatan dari hasil suatu arus data

yang masuk dalam proses untuk dihasilkan arus data yang akan

keluar atau mengubah input menjadi output

3 Aliran Data

(Data Flow)

Data mengalir melalui sistem, dimulai dengan sebagian input dan

diubah atau diproses menjadi output

4 Penyimpanan

Data ( Data Storage)

Data disimpan untuk keperluan berikutnya.

Exit / end


(51)

4.7.3 Diagram Level Konteks

- category - Category

- product - Product

- shop config - Shop config

- Contact Us

- Order - Contact Us

Gambar 4.7.3 DFD Level Konteks Costumer

Sistem e-Commerce

Admin


(52)

BAB 5

KESIMPULAN

Setelah melakukan pembelajaran dan pembahasan ulang, akhirnya dapat diambil kesimpulan sebagai berikut:

1. Program adalah kumpulan intruksi dimana dapat dijalankan oleh komputer. Kumpulan program yang tersusun disebut dengan Perangkat Lunak (software). Komputer sebagai perangkat kerasnya (Hardware) dan manusia yang membuat program disebut dengan brainware .

2. Level Bahasa Pemrograman

a. Level rendah: Level bahasa yang mendekati level bahasa mesin, instruksi yang diberikan akan langsung dipahami oleh komputer. Program yang diintruksikan berupa data angka( kode heksa atau biner ).

b. Level menengah: level bahasa yang merupakan gabungan bahasa mesin dengan mendekati bahasa manusia berkomunikasi.

Contoh : bahasa assembler dan bahasa C dan C++.

c. Level tinggi: bahasa pemrograman yang mendekati bahasa manusia berkomunikasi.


(53)

3. Web browser adalah program untuk menampilkan halaman yang berbentuk kode HTML.

4. HTML adalah teks yang dapat dibuat dengan editor teks sembarang yang berfungsi untuk memformat teks biasa untuk dapat ditampilkan pada web browser dengan bantuan yang sudah ditentukan.

5. Defenisi E-Commerce: transaksi komersial jasa dalam format elektronik yang berkaitan dengan aktifitas transmisi data yang digitalisasikan, termasuk teks, suara, dan gambar, electronic share trading, electronic bil of landing, commercial auctions, kolaborasi desain dan rekayasa, online sourcing, public procurement, direct consumer marketing, dan layanan purna jual.


(54)

DAFTAR PUSTAKA

Abrahamsson, P., Salo, O., Ronkainen, J., dan Juhani , W. 2004. Agile Software

Development Methods: Review and Analysis. VTT Publication 478. Finland.

Beck, K., Jeffries, R., dan Ward C. 2000. Extreme Programming: Embrace Change. Addison-Wesley.

Fagan, M. 2005. Compiring Traditional and Agile Development Approach: The Case of

Extreme Programming.Issues in Information Systems. Volume VI No.2

Hayes, S. 2001. An Introduction to Extreme Programming. Khatovar Technology.

Hayes, S., dan Martin, A. 2001. An Introduction to Agile Methods. Khatovar Technology. Januri, M. 2008. Handout Aplication System. 3thEdition.

Leffingwell, D., dan Don, W. 2000. Managing Software Requiremnents: A Unified

Approach. Addison-Wesley. Boston.

Laudon, K., dan Laudon, P. 2007. Sistem Informasi Manajemen. Edisi ke-10.

Terjemahan Chriswan Sungkono dan Machmudin Eka P. Jakarta: Salemba Empat. Paulk, M. 2001. Extreme Programming from a CMM Perspective.

Pressman, R. 2005. Software Engineering: A Practitioner’s Approach. 6thEdition. McGraw-Hill.

Panduan Tata Cara Penulisan Skripsi dan Tugas Akhir. 2005. Dokumen Nomor:

Akad/05/2005. Medan: Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara.


(55)

LISTING PROGRAM

1. Index . html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"> <head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Distro Rock n Roll</title>

<style type="text/css"> <!--

body {

background-color: #333333; background-image: url(bk3.gif); margin-left: 0px;

margin-top: 0px; margin-right: 0px; margin-bottom: 0px; }

--> </style>

<link href="style.css" rel="stylesheet" type="text/css"> <style type="text/css">

<!--

.style3 {color: #FF99CC; font-size: 12px;

font-family: Arial, Helvetica, sans-serif; }

a:link {text-decoration: none;} a:visited {text-decoration: none;} a:hover {text-decoration: none;} a:active {text-decoration: none;} -->

</style>

<script type="text/JavaScript"> <!—

function MM_preloadImages() { //v3.0

var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();

var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}} //-->


(56)

</head> <body onload="MM_preloadImages('images/sliced2_06.gif','images/sliced2_08.gif','images/slic ed2_09.gif')"> <div align="center"> <blockquote> <blockquote> <p>&nbsp;</p>

<p><a href="home.php"><img src="images/Color-Versions.gif" border="0" width="383" height="288"><br>

<hr color="#FF66CC" size="1" />

<span class="header">ENTER</span></a><br> </p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp; </p> <p>&nbsp;</p> <p>&nbsp; </p> <p>&nbsp;</p> </blockquote> </blockquote> </div> </body> </html>

2. Index . php

<?php

require_once 'library/config.php';

require_once 'library/category-functions.php'; require_once 'library/product-functions.php'; require_once 'library/cart-functions.php';

$_SESSION['shop_return_url'] = $_SERVER['REQUEST_URI']; $catId = (isset($_GET['c']) && $_GET['c'] != '1') ? $_GET['c'] : 0; $pdId = (isset($_GET['p']) && $_GET['p'] != '') ? $_GET['p'] : 0; require_once 'include/header.php';

?>

<table width="780" border="1" align="center" cellpadding="0" cellspacing="0"> <tr>

<td colspan="3">

<?php require_once 'include/top.php'; ?> </td>

</tr>


(57)

<td width="150" height="400" id="leftnav"> <?php require_once 'include/leftNav.php'; ?> </td> <td> <?php

if ($pdId) {require_once 'include/productDetail.php';} else if ($catId) {require_once 'include/productList.php';} else {require_once 'include/categoryList.php';}

?> </td>

<td width="130" align="center"><?php require_once 'include/miniCart.php'; ?></td> </tr>

</table> <?php

require_once 'include/footer.php'; ?>

3. Home . php

<?php

require_once 'library/config.php';

require_once 'library/category-functions.php'; require_once 'library/product-functions.php'; require_once 'library/cart-functions.php';

$_SESSION['shop_return_url'] = $_SERVER['REQUEST_URI']; $catId = (isset($_GET['c']) && $_GET['c'] != '1') ? $_GET['c'] : 0; $pdId = (isset($_GET['p']) && $_GET['p'] != '') ? $_GET['p'] : 0; $all= (isset($_GET['all']) && $_GET['all'] != '') ? $_GET['all'] : 0; ?>

<!-- menu header -->

<?php include ("include/header.php"); ?> <!-- menu-->

<?php include ("include/menu.php"); ?> <tr>

<td valign="top" width="50%"><div align="center"> <?php

if ($pdId) {require_once 'include/productDetail.php';} else if ($catId) {require_once 'include/productList.php';} else if ($all==1) {require_once 'include/categoryList.php';} else {$name=$_REQUEST['name'];

if($name!="")

{ require_once $name;} else {


(58)

?>

<d align="center" class="style1"><p><img src="images/open.jpg" alt="open"></p> <p class="style1" align="left">Sekarang telah hadir &quot;Distro Rock n Roll&quot; di kota Medan. Kamu mau cari pakaian gaul?? Buat Cewek Cowok ada DISINI!!! <br> Buruan belanja disini, dijamin kamu bakal puas dan g ketinggalan jaman dechhh....Jangan bilang kamu gauL,kalau kamu belum pakai produk distro ini...!!! <br>

Karena Distro Rock n Roll nyediain barang-barang

uptodate dengan kualitas tinggi. So...tunggu apa lagi. Belanja Pakaian?? ya Distro Rock n Rool aja .... :>

</p>

<p class="style1" align="center">Surga Belanja Kamu...</p>

<p class="style1" align="center"><img src="images/sp_lady.jpg" alt="belanja" width="371" height="432"> </p>

<p class="style1" align="center">&nbsp;</p> </d>

</div> <?php } ?> <?php } ?> <?php

echo "<div align='center'>"; include ("include/baner.php"); echo "</div>"; ?>

</td>

<?php include ("include/right_bar.php"); ?> </tr> </tbody></table> </div></td> </tr> </tbody></table></td> </tr> <tr>

<td background="images/sliced3_19.jpg" height="37"><img src="images/sliced3_19.jpg" alt="" width="126" height="37"></td> </tr>

</tbody></table>

<?php include ("include/footer.php"); ?> </body></html>

4. About Us . php

<style type="text/css"> <!--

.style1 {color: #FFFFFF} -->


(59)

</style>

<img src="images/Back.jpg" alt="about_us" /><img src="images/damama.jpg" />

5. Config. Php

<?php

ini_set('display_errors', 'Off'); //ob_start("ob_gzhandler"); error_reporting(E_ALL); // start the session

session_start();

// database connection config $dbHost = 'localhost';

$dbUser = 'root'; $dbPass = '';

$dbName = 'distro_rnr_1';

// setting up the web root and server root for // this shopping cart application

$thisFile = str_replace('\\', '/', __FILE__);

$docRoot = $_SERVER['DOCUMENT_ROOT'];

$webRoot = str_replace(array($docRoot, 'library/config.php'), '', $thisFile); $srvRoot = str_replace('library/config.php', '', $thisFile);

define('WEB_ROOT', $webRoot); define('SRV_ROOT', $srvRoot);

// these are the directories where we will store all // category and product images

define('CATEGORY_IMAGE_DIR', 'images/category/'); define('PRODUCT_IMAGE_DIR', 'images/product/'); // some size limitation for the category

// and product images

// all category image width must not // exceed 75 pixels

define('MAX_CATEGORY_IMAGE_WIDTH', 75); // do we need to limit the product image width? // setting this value to 'true' is recommended define('LIMIT_PRODUCT_WIDTH', true); // maximum width for all product image

define('MAX_PRODUCT_IMAGE_WIDTH', 300); // the width for product thumbnail

define('THUMBNAIL_WIDTH', 75);

if (!get_magic_quotes_gpc()) {if (isset($_POST)) {foreach ($_POST as $key => $value) {$_POST[$key] = trim(addslashes($value));}}

if (isset($_GET)) {foreach ($_GET as $key => $value) {$_GET[$key] = trim(addslashes($value));}}}


(60)

// since all page will require a database access // and the common library is also used by all // it's logical to load these library here require_once 'database.php';

require_once 'common.php';

// get the shop configuration ( name, addres, etc ), all page need it $shopConfig = getShopConfig();

?>

6. Login . php

<?php

require_once '../library/config.php'; require_once './library/functions.php'; $errorMessage = '&nbsp;';

if (isset($_POST['txtUserName'])) {

$result = doLogin(); if ($result != '') {

$errorMessage = $result; }}

?> <html> <head>

<title>Shop Admin - Login</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link href="include/admin.css" rel="stylesheet" type="text/css">

<style type="text/css"> <!--

.style2 {color: #FF3399} -->

</style> </head> <body>

<table width="750" border="0" align="center" cellpadding="0" cellspacing="1"> <tr>

<td><img src="include/banner-top.gif" width="750" height="75"></td> </tr>

<tr>

<td valign="top"> <table width="100%" border="0" cellspacing="1" cellpadding="20" bgcolor="#FF3399">

<tr >

<td class="contentArea" style="background-color:#FFC1E0"> <form method="post" name="frmLogin" id="frmLogin">


(61)

<p>&nbsp;</p>

<table width="350" border="0" align="center" cellpadding="5" cellspacing="1" bgcolor="#FF3399">

<tr style="background-color:#000000">

<td><span class="style2">:: Admin Login ::</span></td> </tr>

<tr>

<td class="contentArea">

<div class="errorMessage" align="center"><?php echo $errorMessage; ?></div>

<table width="100%" border="0" cellpadding="2" cellspacing="1" class="text">

<tr align="center">

<td colspan="3">&nbsp;</td> </tr>

<tr class="text">

<td width="100" align="right">User Name</td> <td width="10" align="center">:</td>

<td><input name="txtUserName" type="text" class="box" id="txtUserName" value="admin" size="10" maxlength="20"></td>

</tr> <tr>

<td width="100" align="right">Password</td> <td width="10" align="center">:</td>

<td><input name="txtPassword" type="password" class="box" id="txtPassword" value="admin" size="10"></td>

</tr> <tr>

<td colspan="2">&nbsp;</td>

<td><input name="btnLogin" type="submit" class="box" id="btnLogin" value="Login"></td> </tr> </table></td> </tr> </table> <p>&nbsp;</p> </form></td> </tr> </table></td> </tr> </table> <p>&nbsp;</p> </body> </html>


(62)

7. Menu . php <style type="text/css"> <!-- a:link { text-decoration: none; } a:visited { text-decoration: none; } a:hover { text-decoration: none; } a:active { text-decoration: none; } --> </style><tr>

<td background="images/sliced_18.gif" valign="top" width="157"><a href="home.php" onmouseout="MM_swapImgRestore()" ><img src="images/sliced_06.gif" alt="HOME" name="Image20" id="Image20" border="0" width="157" height="36"></a><br>

<a href="home.php?name=include/about_us.php"

onmouseout="MM_swapImgRestore()" ><img src="images/sliced_08_1.gif" alt="About us " name="Image21" id="Image21" border="0" width="157" height="24"></a>

<a href="home.php?name=include/hto.php" onmouseout="MM_swapImgRestore()" ><br>

<img src="images/sliced_09.gif" alt="Spa Info" name="Image22" id="Image22" border="0" width="157" height="24"></a>

<br>

<a href="home.php?name=include/contact.php"

onmouseout="MM_swapImgRestore()" ><img src="images/sliced_10.gif" alt="Waxing" name="Image23" id="Image23" border="0" width="157" height="24"></a>

<a href="http://phrizbie-design.com/Bliss_Laser_Spa/facials.html" onmouseout="MM_swapImgRestore()" ><br>

<img src="images/sliced_11.gif" alt="Facials" name="Image24" id="Image24" border="0" width="157" height="25"><br>

</a><a

href="http://phrizbie-design.com/Bliss_Laser_Spa/microdermabrasion.html"

onmouseout="MM_swapImgRestore()" ><img src="images/sliced_12.gif"

alt="Microbermabrasion" name="Image26" id="Image26" border="0" width="157" height="23"></a><br>

<a href="http://phrizbie-design.com/Bliss_Laser_Spa/contact.html"

onmouseout="MM_swapImgRestore()" ><img src="images/sliced_15.gif" alt="Contact" name="Image29" id="Image29" border="0" width="157" height="25"></a><br>


(63)

<img src="images/sliced_16.gif" alt="" width="157" height="88" /></td> </tr>

<tr>

<td valign="top">

<div align="center"> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"

codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#vers ion=7,0,19,0" width="150" height="150" title="clock">

<param name="movie" value="C-001.swf" /> <param name="quality" value="high" /> <embed src="C-001.swf" quality="high"

pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="150" height="150"></embed>

</object></div>

<img src="images/sliced_16_1.gif" /> <p>&nbsp;</p></td></tr>

<tr>

<td background="images/sliced_18.gif" valign="middle"><div

align="center"><img src="images/sliced_16.gif" /><p><img src="images/TH120x90-1.gif" alt="travel" /><p><img src="images/tra34.gif" alt="ibu_hamil" /><p><img src="images/ngeborong.gif" /></div><img src="images/sliced_16_1.gif" /> <p>&nbsp;</p></td>

</tr> <tr>

<td background="images/sliced_18.gif" valign="middle"> <img src="images/sliced_16.gif" /><iframe title="banner" src="show_image.php" scrolling="auto" width="165" frameborder="0" height="310"

align="middle"></iframe><br /><img src="images/sliced_16_1. gif" /> <p>&nbsp;</p></td>

</tr>

</tbody></table></td>

<td bgcolor="#000000" valign="top"><div align="center">

<table border="0" cellpadding="10" cellspacing="0" width="80%"> <tbody><tr>

<td colspan="2" valign="top"><div align="center"><img src="images/sliced-ing1_06.gif" alt="Welcome!" width="271" height="99"></div></td>

</tr>

8. Success . php

function setPaymentInfo(isChecked) {

with (window.document.frmCheckout) {if (isChecked) txtPaymentFirstName.value = txtShippingFirstName.value; txtPaymentLastName.value = txtShippingLastName.value; txtPaymentAddress1.value = txtShippingAddress1.value;


(64)

txtPaymentAddress2.value = txtShippingAddress2.value; txtPaymentPhone.value = txtShippingPhone.value; txtPaymentState.value = txtShippingState.value; txtPaymentCity.value = txtShippingCity.value;

txtPaymentPostalCode.value = txtShippingPostalCode.value; txtPaymentFirstName.readOnly = true;

txtPaymentLastName.readOnly = true; txtPaymentAddress1.readOnly = true; txtPaymentAddress2.readOnly = true; txtPaymentPhone.readOnly = true; txtPaymentState.readOnly = true; txtPaymentCity.readOnly = true; txtPaymentPostalCode.readOnly = true; }

else {txtPaymentFirstName.readOnly = false; txtPaymentLastName.readOnly = false; txtPaymentAddress1.readOnly = false; txtPaymentAddress2.readOnly = false; txtPaymentPhone.readOnly = false; txtPaymentState.readOnly = false; txtPaymentCity.readOnly = false; txtPaymentPostalCode.readOnly = false; }}}

function checkShippingAndPaymentInfo() {

with (window.document.frmCheckout)

{if (isEmpty(txtShippingFirstName, 'Enter first name'))

{return false;} else if (isEmpty(txtShippingLastName, 'Enter last name')) {return false;} else if (isEmpty(txtShippingAddress1, 'Enter shipping address')) {return false;} else if (isEmpty(txtShippingPhone, 'Enter phone number')) {return false;} else if (isEmpty(txtShippingState, 'Enter shipping address state')) {return false;} else if (isEmpty(txtShippingCity, 'Enter shipping address city')) {return false;} else if (isEmpty(txtShippingPostalCode, 'Enter the shipping address postal/zip code'))

{return false;} else if (isEmpty(txtPaymentFirstName, 'Enter first name')) {return false;} else if (isEmpty(txtPaymentLastName, 'Enter last name'))

{return false;} else if (isEmpty(txtPaymentAddress1, 'Enter Payment address')) {return false;} else if (isEmpty(txtPaymentPhone, 'Enter phone number'))

{return false;} else if (isEmpty(txtPaymentState, 'Enter Payment address state')) {return false;} else if (isEmpty(txtPaymentCity, 'Enter Payment address city')) {return false;} else if (isEmpty(txtPaymentPostalCode, 'Enter the Payment address postal/zip code'))

{return false;} else {return true;

}}}


(65)

<?php require_once 'library/config.php'; require_once 'library/cart-functions.php'; require_once 'library/checkout-functions.php'; if (isCartEmpty()) {

// the shopping cart is still empty // so checkout is not allowed header('Location: cart.php');

} else if (isset($_GET['step']) && (int)$_GET['step'] > 0 && (int)$_GET['step'] <= 3) { $step = (int)$_GET['step'];

$includeFile = ''; if ($step == 1) {

$includeFile = 'shippingAndPaymentInfo.php'; $pageTitle = 'Checkout - Step 1 of 2';

} else if ($step == 2) {

$includeFile = 'checkoutConfirmation.php'; $pageTitle = 'Checkout - Step 2 of 2'; } else if ($step == 3)

{

$orderId = saveOrder();

$orderAmount = getOrderAmount($orderId); $_SESSION['orderId'] = $orderId;

// our next action depends on the payment method // if the payment method is COD then show the // success page but when paypal is selected // send the order details to paypal

if ($_POST['hidPaymentMethod'] == 'cod') {

header('Location: success.php'); exit;

} else {

$includeFile = 'paypal/payment.php'; }

} } else {

// missing or invalid step number, just redirect header('Location: index.php');

}

require_once 'include/header.php'; require_once 'include/menu.php'; ?>


(66)

<script language="JavaScript" type="text/javascript" src="library/checkout.js"></script> <?php

require_once "include/$includeFile"; require_once 'include/footer.php'; ?>

10. Common . php

<?php /*

Contain the common functions required in shop and admin pages */

require_once 'config.php'; require_once 'database.php'; /*

Make sure each key name in $requiredField exist in $_POST and the value is not empty

*/

function checkRequiredPost($requiredField) {

$numRequired = count($requiredField); $keys = array_keys($_POST); $allFieldExist = true;

for ($i = 0; $i < $numRequired && $allFieldExist; $i++) {

if (!in_array($requiredField[$i], $keys) || $_POST[$requiredField[$i]] == '')

{

$allFieldExist = false; }}

return $allFieldExist; }

function getShopConfig() {

// get current configuration

$sql = "SELECT sc_name, sc_address, sc_phone, sc_email, sc_shipping_cost, sc_order_email, cy_symbol

FROM tbl_shop_config sc, tbl_currency cy WHERE sc_currency = cy_id";

$result = dbQuery($sql);

$row = dbFetchAssoc($result); if ($row)

{


(67)

$shopConfig = array('name' => $sc_name, 'address' => $sc_address, 'phone' => $sc_phone, 'email' => $sc_email,

'sendOrderEmail' => $sc_order_email, 'shippingCost' => $sc_shipping_cost,

'currency' => $cy_symbol); } else

{

$shopConfig = array('name' => '', 'address' => '',

'phone' => '', 'email' => '',

'sendOrderEmail' => '', 'shippingCost' => '', 'currency' => ''); } return $shopConfig; } function displayAmount($amount) { global $shopConfig;

return $shopConfig['currency'] . number_format($amount); }

/*

Join up the key value pairs in $_GET into a single query string

*/

function queryString() {

$qString = array();

foreach($_GET as $key => $value) {

if (trim($value) != '') {

$qString[] = $key. '=' . trim($value); } else

{

$qString[] = $key; }}

$qString = implode('&', $qString); return $qString;

} /*


(68)

*/

function setError($errorMessage) {

if (!isset($_SESSION['plaincart_error'])) {

$_SESSION['plaincart_error'] = array(); }

$_SESSION['plaincart_error'][] = $errorMessage; }

/*

print the error message */

function displayError() {

if (isset($_SESSION['plaincart_error']) && count($_SESSION['plaincart_error'])) {

$numError = count($_SESSION['plaincart_error']);

echo '<table id="errorMessage" width="550" align="center" cellpadding="20" cellspacing="0"><tr><td>';

for ($i = 0; $i < $numError; $i++) {

echo '&#8226; ' . $_SESSION['plaincart_error'][$i] . "<br>\r\n"; }

echo '</td></tr></table>';

// remove all error messages from session $_SESSION['plaincart_error'] = array(); }

}

/************************** Paging Functions

***************************/

function getPagingQuery($sql, $itemPerPage = 10) {

if (isset($_GET['page']) && (int)$_GET['page'] > 0) {

$page = (int)$_GET['page']; } else

{

$page = 1; }

// start fetching from this row number $offset = ($page - 1) * $itemPerPage;


(69)

} /*

Get the links to navigate between one result page to another. Supply a value for $strGet if the page url already contain some GET values for example if the original page url is like this : http://www.phpwebcommerce.com/plaincart/index.php?c=12 use "c=12" as the value for $strGet. But if the url is like this : http://www.phpwebcommerce.com/plaincart/index.php then there's no need to set a value for $strGet

*/

function getPagingLink($sql, $itemPerPage = 10, $strGet = '') {

$result = dbQuery($sql); $pagingLink = '';

$totalResults = dbNumRows($result);

$totalPages = ceil($totalResults / $itemPerPage); // how many link pages to show

$numLinks = 10;

// create the paging links only if we have more than one page of results if ($totalPages > 1)

{

$self = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ; if (isset($_GET['page']) && (int)$_GET['page'] > 0)

{

$pageNumber = (int)$_GET['page']; } else

{

$pageNumber = 1; }

// print 'previous' link only if we're not // on page one

if ($pageNumber > 1) {

$page = $pageNumber - 1; if ($page > 1)

{

$prev = " <a href=\"$self?page=$page&$strGet/\">[Prev]</a> "; } else

{

$prev = " <a href=\"$self?$strGet\">[Prev]</a> "; }

$first = " <a href=\"$self?$strGet\">[First]</a> "; } else

{

$prev = ''; // we're on page one, don't show 'previous' link $first = ''; // nor 'first page' link


(70)

}

// print 'next' link only if we're not // on the last page

if ($pageNumber < $totalPages) {

$page = $pageNumber + 1;

$next = " <a href=\"$self?page=$page&$strGet\">[Next]</a> "; $last = " <a href=\"$self?page=$totalPages&$strGet\">[Last]</a> "; } else

{

$next = ''; // we're on the last page, don't show 'next' link $last = ''; // nor 'last page' link

}

$start = $pageNumber - ($pageNumber % $numLinks) + 1; $end = $start + $numLinks - 1;

$end = min($totalPages, $end); $pagingLink = array();

for($page = $start; $page <= $end; $page++) {

if ($page == $pageNumber) {

$pagingLink[] = " $page "; // no need to create a link to current page } else

{

if ($page == 1) {

$pagingLink[] = " <a href=\"$self?$strGet\">$page</a> "; } else

{

$pagingLink[] = " <a href=\"$self?page=$page&$strGet\">$page</a> "; }}}

$pagingLink = implode(' | ', $pagingLink); // return the page navigation link

$pagingLink = $first . $prev . $pagingLink . $next . $last; }

return $pagingLink; }

?>

11. Database . php

<?php

require_once 'config.php';

$dbConn = mysql_connect ($dbHost, $dbUser, $dbPass) or die ('MySQL connect failed. ' . mysql_error());


(71)

mysql_select_db($dbName) or die('Cannot select database. ' . mysql_error()); function dbQuery($sql)

{

$result = mysql_query($sql) or die(mysql_error()); return $result; } function dbAffectedRows() { global $dbConn; return mysql_affected_rows($dbConn); }

function dbFetchArray($result, $resultType = MYSQL_NUM) { return mysql_fetch_array($result, $resultType);

} function dbFetchAssoc($result) { return mysql_fetch_assoc($result); } function dbFetchRow($result) { return mysql_fetch_row($result); } function dbFreeResult($result) { return mysql_free_result($result); } function dbNumRows($result) { return mysql_num_rows($result); } function dbSelect($dbName) { return mysql_select_db($dbName); } function dbInsertId() { return mysql_insert_id(); } ?>

12. Google . php

<table width="100%" align="left" cellpadding="1" cellspacing="1"> <tbody><tr>


(72)

<form method="get" action="http://www.google.co.id/custom" target="_top"> <table bgcolor="#ffffff" border="0">

<tbody><tr><td valign="top" align="left" height="32" nowrap="nowrap"> <a href="http://www.google.com/">

<img src="page_main-2.php_files/Logo_25wht.gif" alt="Google" align="middle" border="0"></a>

<br>

<input name="domains" value="butikgaul.com" type="hidden">

<label for="sbi" style="display: none;">Masukkan istilah pencarian Anda</label> <input name="q" size="20" maxlength="255" id="sbi" type="text">

<label for="sbb" style="display: none;">Kirim formulir pencarian</label> <input name="sa" value="Cari" id="sbb" type="submit">

</td></tr> <tr> <td nowrap="nowrap"> <table> <tbody> <tr> <td>

<input name="sitesearch" value="" id="ss0" type="radio"> <label for="ss0" title="Cari Web"><font color="#000000" size="-1">Web</font></label></td>

<td>

<input name="sitesearch" value="butikgaul.com" checked="checked" id="ss1" type="radio">

<label for="ss1" title="Cari butikgaul.com"><font color="#000000" size="-1">butikgaul.com</font></label></td>

</tr>

</tbody></table>

<input name="client" value="pub-5589335227431955" type="hidden"> <input name="forid" value="1" type="hidden">

<input name="ie" value="ISO-8859-1" type="hidden"> <input name="oe" value="ISO-8859-1" type="hidden"> <input name="cof"

value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBG C:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" type="hidden">

<input name="hl" value="in" type="hidden"> </td></tr></tbody></table>

</form>

<!-- SiteSearch Google --></td> </tr>

</tbody> </table>


(73)

13. Error . php

<?php

require_once 'library/config.php'; $pageTitle = 'Checkout Error'; require_once 'include/header.php'; ?>

<p>&nbsp;</p><table width="500" border="0" align="center" cellpadding="1" cellspacing="0">

<tr>

<td align="left" valign="top" bgcolor="#333333"> <table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td align="center" bgcolor="#EEEEEE"> <p>&nbsp;</p>

<p>We are really sorry for this inconvenience but there was an error when processing your order. Please contact the site administrator. To go to the main page please

<a href="plaincart1/index.php">click here</a></p> <p>&nbsp;</p></td> </tr> </table></td> </tr> </table> <br> <br> <?php require_once 'include/footer.php'; ?>

14. Cart . php

<?php

require_once 'library/config.php';

require_once 'library/cart-functions.php';

$action = (isset($_GET['action']) && $_GET['action'] != '') ? $_GET['action'] : 'view'; switch ($action)

{

case 'add' :

addToCart(); break; case 'update' :

updateCart(); break; case 'delete' :

deleteFromCart(); break;


(74)

case 'view' : }

$cartContent = getCartContent(); $numItem = count($cartContent); $pageTitle = 'Shopping Cart'; require_once 'include/header.php'; require_once 'include/menu.php';

// show the error message ( if we have any ) displayError();

if ($numItem > 0 ) {

?>

<form action="<?php echo $_SERVER['plaincart1/PHP_SELF'] . "?action=update"; ?>" method="post" name="frmCart" id="frmCart">

<table width="780" border="0" align="center" cellpadding="5" cellspacing="1" class="entryTable">

<tr class="entryTableHeader">

<td colspan="2" align="center">Item</td> <td align="center">Unit Price</td>

<td width="75" align="center">Quantity</td> <td align="center">Total</td>

<td width="75" align="center">&nbsp;</td> </tr>

<?php

$subTotal = 0;

for ($i = 0; $i < $numItem; $i++) {

extract($cartContent[$i]);

$productUrl = "home.php?c=$cat_id&p=$pd_id"; $subTotal += $pd_price * $ct_qty;

?>

<tr class="content">

<td width="80" align="center"><a href="<?php echo $productUrl; ?>"><img src="<?php echo $pd_thumbnail; ?>" border="0"></a></td>

<td><a href="<?php echo $productUrl; ?>"><?php echo $pd_name; ?></a></td> <td align="right"><?php echo displayAmount($pd_price); ?></td>

<td width="75"><input name="txtQty[]" type="text" id="txtQty[]" size="5" value="<?php echo $ct_qty; ?>" class="box" onKeyUp="checkNumber(this);"> <input name="hidCartId[]" type="hidden" value="<?php echo $ct_id; ?>"> <input name="hidProductId[]" type="hidden" value="<?php echo $pd_id; ?>"> </td>

<td align="right"><?php echo displayAmount($pd_price * $ct_qty); ?></td> <td width="75" align="center"> <input name="btnDelete" type="button" id="btnDelete" value="Delete" onClick="window.location.href='<?php echo $_SERVER['PHP_SELF'] . "?action=delete&cid=$ct_id"; ?>';"


(75)

</td> </tr> <?php } ?> <tr class="content">

<td colspan="4" align="right">Sub-total</td>

<td align="right"><?php echo displayAmount($subTotal); ?></td> <td width="75" align="center">&nbsp;</td>

</tr>

<tr class="content">

<td colspan="4" align="right">Shipping </td>

<td align="right"><?php echo displayAmount($shopConfig['shippingCost']); ?></td> <td width="75" align="center">&nbsp;</td>

</tr>

<tr class="content">

<td colspan="4" align="right">Total </td>

<td align="right"><?php echo displayAmount($subTotal + $shopConfig['shippingCost']); ?></td>

<td width="75" align="center">&nbsp;</td> </tr>

<tr class="content">

<td colspan="5" align="right">&nbsp;</td> <td width="75" align="center">

<input name="btnUpdate" type="submit" id="btnUpdate" value="Update Cart" style="background:url(images/submit.gif)"> </td> </tr> </table> </form> <?php } else { ?>

<p>&nbsp;</p><table width="550" border="0" align="center" cellpadding="10" cellspacing="0">

<tr>

<td><p align="center">You shopping cart is empty</p>

<p>If you find you are unable to add anything to your cart, please ensure that your internet browser has cookies enabled and that any other security software is not blocking your shopping session.</p>

</td> </tr> </table> <?php }


(76)

$shoppingReturnUrl = isset($_SESSION['shop_return_url']) ? $_SESSION['shop_return_url'] : 'index.php';

?>

<table width="550" border="0" align="center" cellpadding="10" cellspacing="0"> <tr align="center">

<td><input name="btnContinue" type="button" id="btnContinue" value="&lt;&lt; Continue Shopping" onClick="window.location.href='<?php echo $shoppingReturnUrl; ?>';" style="background:url(images/submit.gif)"></td>

<?php

if ($numItem > 0) {

?>

<td><input name="btnCheckout" type="button" id="btnCheckout" value="Proceed To Checkout &gt;&gt;" onClick="window.location.href='checkout.php?step=1';"

style="background:url(images/submit.gif)"></td> <?php

} ?>

</tr><tr><td> <?php

require_once 'include/footer.php'; ?></td></tr>

</table>

15. Category-function . php

<?php

require_once 'config.php';

/********************************************************* * CATEGORY FUNCTIONS

*********************************************************/ /*

Return the current category list which only shows the currently selected category and it's children.This function is made so it can also handle deep category levels ( more than two levels )

*/

function formatCategories($categories, $parentId) {

// $navCat stores all children categories // of $parentId


(1)

{

$name = $_POST['txtName'];

$description = $_POST['mtxDescription']; $image = $_FILES['fleImage'];

$parentId = $_POST['hidParentId'];

$catImage = uploadImage('fleImage', SRV_ROOT . 'images/category/');

$sql = "INSERT INTO tbl_category (cat_parent_id, cat_name, cat_description, cat_image)

VALUES ($parentId, '$name', '$description', '$catImage')"; $result = dbQuery($sql) or die('Cannot add category' . mysql_error());

header('Location: index.php?catId=' . $parentId); }

/*

Upload an image and return the uploaded image name */

function uploadImage($inputName, $uploadDir) {

$image = $_FILES[$inputName]; $imagePath = '';

// if a file is given

if (trim($image['tmp_name']) != '') {

// get the image extension

$ext = substr(strrchr($image['name'], "."), 1);

// generate a random new file name to avoid name conflict $imagePath = md5(rand() * time()) . ".$ext";

// check the image width. if it exceed the maximum // width we must resize it

$size = getimagesize($image['tmp_name']);

if ($size[0] > MAX_CATEGORY_IMAGE_WIDTH) {

$imagePath = createThumbnail($image['tmp_name'], $uploadDir . $imagePath, MAX_CATEGORY_IMAGE_WIDTH);

} else {

// move the image to category image directory // if fail set $imagePath to empty string

if (!move_uploaded_file($image['tmp_name'], $uploadDir . $imagePath)) {

$imagePath = ''; }} }

return $imagePath; }

/*

Modify a category */


(2)

function modifyCategory() {

$catId = (int)$_GET['catId']; $name = $_POST['txtName'];

$description = $_POST['mtxDescription']; $image = $_FILES['fleImage'];

$catImage = uploadImage('fleImage', SRV_ROOT . 'images/category/'); // if uploading a new image

// remove old image

if ($catImage != '') {

_deleteImage($catId);

$catImage = "'$catImage'"; } else

{

// leave the category image as it was $catImage = 'cat_image'; }

$sql = "UPDATE tbl_category

SET cat_name = '$name', cat_description = '$description', cat_image = $catImage

WHERE cat_id = $catId";

$result = dbQuery($sql) or die('Cannot update category. ' . mysql_error()); header('Location: index.php');

} /*

Remove a category */

function deleteCategory() {

if (isset($_GET['catId']) && (int)$_GET['catId'] > 0) {

$catId = (int)$_GET['catId']; } else

{

header('Location: index.php'); }

// find all the children categories

$children = getChildren($catId);

// make an array containing this category and all it's children $categories = array_merge($children, array($catId)); $numCategory = count($categories);

// remove all product image & thumbnail // if the product's category is in $categories


(3)

FROM tbl_product

WHERE cat_id IN (" . implode(',', $categories) . ")"; $result = dbQuery($sql);

while ($row = dbFetchAssoc($result)) {

@unlink(SRV_ROOT . PRODUCT_IMAGE_DIR . $row['pd_image']); @unlink(SRV_ROOT . PRODUCT_IMAGE_DIR .

$row['pd_thumbnail']); }

// delete the products

$sql = "DELETE FROM tbl_product

WHERE cat_id IN (" . implode(',', $categories) . ")"; dbQuery($sql);

// then remove the categories image _deleteImage($categories);

// finally remove the category from database; $sql = "DELETE FROM tbl_category

WHERE cat_id IN (" . implode(',', $categories) . ")";

dbQuery($sql);

header('Location: index.php'); }

/*

Recursively find all children of $catId */

function getChildren($catId) {

$sql = "SELECT cat_id ". "FROM tbl_category ".

"WHERE cat_parent_id = $catId "; $result = dbQuery($sql);

$cat = array();

if (dbNumRows($result) > 0) {

while ($row = dbFetchRow($result)) {

$cat[] = $row[0];

// call this function again to find the children

$cat = array_merge($cat, getChildren($row[0])); }}

return $cat; }

/*

Remove a category image */

function deleteImage() {


(4)

if (isset($_GET['catId']) && (int)$_GET['catId'] > 0) {

$catId = (int)$_GET['catId']; } else

{

header('Location: index.php'); }

_deleteImage($catId); // update the image name in the database

$sql = "UPDATE tbl_category SET cat_image = ''

WHERE cat_id = $catId"; dbQuery($sql);

header("Location: index.php?view=modify&catId=$catId"); }

/*

Delete a category image where category = $catId */

function _deleteImage($catId) {

// we will return the status

// whether the image deleted successfully $deleted = false;

// get the image(s)

$sql = "SELECT cat_image FROM tbl_category WHERE cat_id ";

if (is_array($catId)) {

$sql .= " IN (" . implode(',', $catId) . ")"; } else

{

$sql .= " = $catId"; }

$result = dbQuery($sql);

if (dbNumRows($result)) {

while ($row = dbFetchAssoc($result)) {

// delete the image file

$deleted = @unlink(SRV_ROOT . CATEGORY_IMAGE_DIR . $row['cat_image']);

}}

return $deleted; }


(5)

37. Modify . php <?php

if (!defined('WEB_ROOT')) {

exit; }

// make sure a category id exists

if (isset($_GET['catId']) && (int)$_GET['catId'] > 0) {

$catId = (int)$_GET['catId']; } else

{

header('Location:index.php'); }

$sql = "SELECT cat_id, cat_name, cat_description, cat_image FROM tbl_category

WHERE cat_id = $catId"; $result = dbQuery($sql);

$row = dbFetchAssoc($result); extract($row);

?>

<p>&nbsp;</p>

<form action="processCategory.php?action=modify&amp;catId=<?php echo $catId; ?>" method="post" enctype="multipart/form-data" name="frmCategory" id="frmCategory"> <table width="100%" border="0" align="center" cellpadding="5" cellspacing="1" class="entryTable">

<tr>

<td width="150" class="label">Category Name</td>

<td class="content"><input name="txtName" type="text" class="box" id="txtName" value="<?php echo $cat_name; ?>" size="30" maxlength="50"></td>

</tr> <tr>

<td width="150" class="label">Description</td>

<td class="content"> <textarea name="mtxDescription" cols="50" rows="4" class="box" id="mtxDescription"><?php echo $cat_description; ?></textarea></td> </tr>

<tr>

<td width="150" class="label">Image</td> <td class="content">


(6)

<input name="fleImage" type="file" id="fleImage" class="box"> <?php

if ($cat_image != '') {

?> <br>

<img src="<?php echo WEB_ROOT . CATEGORY_IMAGE_DIR . $cat_image; ?>"> &nbsp;&nbsp;<a href="javascript:deleteImage(<?php echo $cat_id; ?>);">Delete

Image</a> <?php }

?> </td> </tr> </table>

<p align="center">

<input name="btnModify" type="button" id="btnModify" value="Save Modification" onClick="checkCategoryForm();" class="box">

&nbsp;&nbsp;<input name="btnCancel" type="button" id="btnCancel" value="Cancel" onClick="window.location.href='index.php';" class="box">

</p> </form>