Ecommerce Dengan PHP MySQL
Ecommerce Dengan PHP MySQL
id
12
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 3
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) 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
Appserver
Appserver adalah bundle software yang terdiri dari beberapa komponen, diantaranya adalah MySQL, PHP, Apache dan PHPMyAdmin. Dengan menggunakan Appserv kita tidak perlu menginstall program satu persatu. Dari semua program diatas, program yang paling Nampak adalah PHPMyAdmin. Aplikasi ini adalah tool berbasis web untuk mengolah data MySQL. Anda bisa mendapatkannya di http://www.appservnetwork.com/
Notepad++
Notepad++ adalah standar programmer editor. Sebenarnya selain notepad++, juga masih banyak editor yang lain. Anda boleh saja menggunakan sembarang editor, namun disarankan editor yang dipakai adalah editor yang mempunyai 3 fitur utama yaitu Syntax Higlighting, Code folding dan Line numbering. Notepad++ dipakai untuk editing file secara cepat (misal Bugfix) atau mengedit satu dua baris yang error.
Aptana IDE Aptana IDE adalah IDE untuk membuat program berbasis Web. anda boleh saja memakai DreamWeaver , namun saya sendiri memilih Aptana IDE mengingat IDE ini besifat open source, mampu bejalan di banyak Platform (Windows, Linux, Mac) dan GRATIS. Namun hal yang paling penting dengan adanya ide adalah adanya project manajement.
Kelebihan utama dari Aptana di banding dreamweaver atau editor notepad++ adalah kemampuannya untuk memformat code sekaligus mengecek kesalahan syntax langsung di editor.
Google Chrome Google chrome di pakai untuk mentesting website. Boleh saja menggunakan browser lain, justru yang disarankan, kita mencoba di setiap browser untuk memastikan tampilan dan aplikasi yang kita buat berjalan dengan benar. Namun Google Chrome mempunyai kelebihan karena sederhana dan adanya fitur Developer tool yang canggih( penjelasan lebih lanjut di praktik).
MySQL Workbench
Hal yang paling penting saat mendesain database adalah membuat relasi antar table. Anda bisa saja membuat menggunakan tool perancangan biasa. MySQL workbench lebih dari itu, dia bisa membuat table beserta relasinya dan secara Automagic dia akan
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) membuat SQL scripnya. MySQL workbench juga bisa membuat diagram relasi table langsung dari MySQL script (reverse engine) .
Sekarang ubahlah get menjadi POST! Teknik Include Page Untuk membuat sebuah halaman website yang komplek. Ada beberapa teknik agar efektif dalam hal desain dan source code. Teknik yang paling sering di pakai adalah teknik include page. Codenya utamanya adalah sbb:
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) Code.1.2 snippet include page <?php /* kode untuk meload halaman yang berbeda*/ if(isset($_GET['pg'])){ $page=$_GET['pg'].".php"; include($page); }else{ include('home.php'); } ?>
Untuk membuat link ke home dan cara pesan, minimal seperti ini di code 1.2 kemudian buatlah file home.php dn cara pesan.php dalam format html biasa
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) 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>
Sedangkan halaman contact.php sbb: Code 1.4 contact.php <h1>Alamat kami</h1> <p> Jalan Lurus no 5 Yogyakarta <br> Telp (0274) 123456 <br> Email:[email protected] </p>
10
Login
Untuk membuat halaman login, 3 hal utama yang perlu di lakukan adalah sbb: 1. Membuat table pengelola 2. Membuat halaman form login 3. Mengecek user di database 4. Jika sukses, menyimpan username kedalam session 5. Redirect user ke halaman admin. Tabel pengelola
Form Login Code 2.1 form login !--table pengolahan data nanti disini--> <h1> Login page</h1> <form id="form1" name="form1" method="post" action="pengelola_check_login.php"> <table <tr> <td >username*</td> <td ><input name="username" type="text" id="username" </tr> <tr> <td>password*</td> <td><input name="password" type="password" id="password" <tr> <td colspan="3" align="right"> <input type="submit" name="Submit" value="Submit" /> /></td> /></td> align="center">
11
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) <input type="reset" name="" value="Reset" /></td> </tr>
Cek Login dan 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"); } ?> 12
Jangan lupa buat file config.php yang berisi konfigurasi database 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 Library Validasi Javascript Untuk memvalidasi form, ada berbagai macam teknik. Namun secara umum dibagi dua, yaitu server side check dan client side check. Modul ini hanya membahas sc ript validasi menggunakan script dari http://www.javascript-coder.com/html-form/javascript-form-validation.phtml.
13
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) Teknik Validasi Berbagai Macam Input Script yang disediakan diatas sudah mencakup berbagai macam validasi diantaranya adalah Validation required or req maxlen=??? or maxlength=??? minlen=??? or minlength=??? alphanumeric or alnum alphanumeric_space alnum_s num numeric alpha alphabetic alpha_s alphabetic_space Input harus huruf dan atau spasi Usage Harus di isi
Untuk menggunakan teknik validasi ini, pertama tambahkan code dibawah ini Code 2.3 script validasi <script src="js/validjs.js"></script> 14
Dan letakan scipt validasi persis dibawah form 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, letakan dimana pesan error ingin ditampilkan Code 2.5 cara menampilkan output validasi <div id="form1_errorloc" style="color:red"> </div>
15
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) Berikut ini adalah tampilan kalau login gagal
16
Crud adalah proses pengelohan data standar yang terdiri dari 4 operasi dasar yaitu create, retrieve, update dan delete. Dalam bab ini, kita hanya akan membahas table pengelola . Untuk setiap table, kita membutuhkan 5 file, file file itu adalah 1. Pengelola_view 2. Pengelola_form_add 3. Pengelola_add 4. Pengelola_form_edit 5. Pengelola_edit Biasakan menggunakan format <namatabel>_action.php. Penamaan seperti ini akan memudahkan ketika nanti terjadi error dan lebih mudah dipahami.
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" /> 17
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) <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", kosong "); frmvalidator.addValidation("password", kosong "); frmvalidator.addValidation("username", tidak boleh lebih dari 20 "); frmvalidator.addValidation("password", tidak boleh ada spasi "); </script> "req", "username masih "req", "password masih
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 18
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) if ($result) { header('location:index.php?page=pengelola_view&status=0'); } else { header('location:index.php?page=pengelola_view&status=1'); } mysql_close(); } ?>
Tampil Data
Code 3.3 pengelola_view <?php include ('inc/config.php'); ?> <h1> Tabel pengelola</h1> <table width="600px" border=0> <td width="200px">Username</td><td>Password</td><td width="100px">Operasi</td> </tr> <?php /* <tr style="background-color:#F79307">
19
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) * 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 }else{ $sql="SELECT * FROM } $result=mysql_query($sql) or die(mysql_error()); pengelola"; pengelola where username like '%$cari%'";
//proses menampilkan data while($rows=mysql_fetch_array($result)){ ?> <tr> <td><? <td><? echo $rows['username'];?></td> echo $rows['password'];?></td>
<td><a href="index.php?page=pengelola_form_edit&id=<? echo $rows['username']?>"> <img src="image/b_edit.png"></a><a href="index.php?page=pengelola_view&del=true&id=<? echo $rows['username']?>" </tr> <? } onclick="return askUser()";> <img src="image/b_drop.png"></a></td>
20
//tutup koneksi ?> <tr> <td align=right colspan='2'><?php if (isset($_GET['status'])) { if ($_GET['status'] == 0) { echo " <div style='color:blue'>Operasi data berhasil</div>"; } else { echo "operasi gagal"; } } ?></td> <td align=right><a href="index.php?page=pengelola_form_add"> <img src="image/add.jpg"> Add</a></td> </tr> <tr></tr> </table> <? mysql_close(); //close database //tampilan siapa yang pengelola ?>
21
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) Tampilan dari pengelola view
Update Data
Code 3.4 pengelola_form_edit <?php include ('inc/config.php'); $id = $_GET['id']; //ambil data dari table feedback $sql = "select * from pengelola where username='$id' "; $result = mysql_query($sql) or die(mysql_error()); ?> <h2>Change password</h2> <table> <form id="form1" name="form1" method="post" action="pengelola_edit.php"> <? //proses menampilkan data while($rows=mysql_fetch_array($result)){ ?> <td width="120">username</td> <td width="350"><? echo $rows['username'];?> /> echo $rows['username'];?></td> <input type="hidden" id="username" name="username" value=<?
22
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) <!--<input type="text" id="username" name="username" value=<? echo $rows['username'];?> /> --></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="submitUser" value="Submit" /> <input type="reset" name="resetbtn" value="Reset" /> </td> </tr> <? //loop while } ?> </form> </table>
23
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) Code 3.5 Code untuk mengupdate 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); }
24
Kategori produk dalam hal ini adalah kategori buku degenerate secara dinamis menggunakan kode 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']?>)--> 25
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) </a></li> <? } ?> </ul>
?>
26
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) <div class="meta floatLeft width25"> <a href="index.html" title="View Project" class="thumb"> <img src="cover/<?=$get_data['cover']?>" width='150px' heigth='150px'> </a> <dl> <dt> <span>Harga</span> </dt> <dd> <?=$get_data['harga'] ?> </dd> <dt> <span>Pengarang</span> </dt> <dd> <?=$get_data['pengarang'] ?> </dd> </dl> </div> <!-- .text: content of post --> <div class="meta floatRight width50"> <a name="inspiration"></a> <h1><?=$get_data['judul'] ?></h1> <h2>Deskripsi </h2> <p> <?=$get_data['deskripsi'];?> </p> <a href="index.php?page=cart&action=add&id=<?=$get_data['kd_buku']?>">Add to cart</a> </div>
27
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) <div style=clear:both></div> ; <? } ?>
28
29
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) $newcart .= ',' . $item; } else { $newcart = $item; } } } $cart = $newcart; } break; case 'update' : if ($cart) { $newcart = ''; foreach ($_POST as $key => $value) { if (stristr($key, 'qty')) { $id = str_replace('qty', '', $key); $items = ($newcart != '') ? explode(',', $newcart) : explode(',', $cart); $newcart = ''; foreach ($items as $item) { if ($id != $item) { if ($newcart != '') { $newcart .= ',' . $item; } else { $newcart = $item; } } } for ($i = 1; $i <= $value; $i++) { if ($newcart != '') { $newcart .= ',' . $id; } else { $newcart = $id; } }
30
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) } } } $cart = $newcart; break; } $_SESSION['cart'] = $cart; ?> <div id="shoppingcart"> <h1>Keranjang belanja anda</h1> <?php echo writeShoppingCart(); ?> </div> <div id="contents"> <h3>Cek keranjang belanja</h3> <?php echo showCart(); ?>
Code 5.2 Kode untuk form data pembeli <h1>Form Pengiriman barang</h1> <a href="index.php?page=cart&action=finish&kirim=true">Bungkus</a> <?php if(isset($_GET['kirim'])){ ?> <form id="form1" name="form1" method="post" action="pemesan_add.php"> <td> 31
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) <table> <!--<tr> <td width="120">kd_pemesan</td> <td width="350"><input name="kd_pemesan" type="text" id="kd_pemesan" size="40" /></td> </tr>--> <tr> <td width="120">Nama</td> <td width="350"> <input name="Nama" type="Nama" id="Nama" size="40" /> </td> </tr> <tr> <td width="120">Alamat</td> <td width="350"> <input name="Alamat" type="Alamat" id="Alamat" size="40" /> </td> </tr> <tr> <td width="120">kd_pos</td> <td width="350"> <input name="kd_pos" type="kd_pos" id="kd_pos" size="40" /> </td> </tr> <tr> <td width="120">No_telp</td> <td width="350"> <input name="No_telp" type="No_telp" id="No_telp" size="40" /> </td>
32
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) </tr> <tr> <td width="120">Email</td> <td width="350"> <input name="Email" type="Email" id="Email" size="40" /> </td> </tr> <?php?> <tr> <td width="120">Kota</td> <td width="350"> <select name='id_kota' id='id_kota'> <? $get_kota=mysql_query('select * from biaya_kirim order by nama_kota'); while ($rows=mysql_fetch_array($get_kota)){ ?> <option value="<?=$rows['id_kota']?>"><?=$rows['nama_kota'] ?></option> <? }//end while ?> </select></td> </tr> <tr> <td> </td> <td> <input type="submit" name="tambah" value="Tambah" /> <input type="reset" name="resetbtn" value="Reset" /> </td>
33
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) </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 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 masih
34
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) angka "); frmvalidator.addValidation("email", "maxlen=50", "maksimal panjang email 50 karakter"); </script> <? } ?> </div>
35
Tampilan chart
36
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) Code 2.3 Laporan daftar buku <html> <head> <link rel="stylesheet" type="text/css" media="screen" href="style2.css" /> </head> <body> <h2 align="center"> Laporan Daftar Buku </h2> <h1 align="center"> Toko Buku murah </h1> <p align="center"> jl Lurus no 5 Yogyakarta </p> <hr> <br/> <?php?> <table align='center'> <tr style="background-color:#F79307"> <td>No</td><td>Kd buku</td><td>Judul</td><td>Pengarang</td> <td>Harga</td> </tr> <?php include ('inc/config.php'); $sql="SELECT * FROM buku"; $result=mysql_query($sql) or die(mysql_error()); //proses menampilkan data $no=1; while($rows=mysql_fetch_array($result)){ ?> <tr> <td><?=$no;?></td> <td><? <td><? <td><? <td><? 37 echo $rows['kd_buku'];?></td> echo $rows['judul'];?></td> echo $rows['pengarang'];?></td> echo $rows['harga'];?></td>
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) </tr> <? $no++; } ?> </table> <?mysql_close(); ?> </body> </html>
38
Membangun eCommerce Berbasis PHP MySQL (http://www.candra.web.id) Program eCommerce diatas masih perlu di kembangkan. Beberapa ide untukmengembangkan adalah sbb: 1. Adanya pendaftaran user 2. Adanya stok barang 3. Pencarian catalog produk 4. Mengembangkan kea rah mobile commerce dengan jQuery Mobile
39