Membuat Toko Online – PHP dan MySQL Part 2

Publish on October 3rd, 2012 by admin

Pada postingan sebelumnya telah dibahas mengenai pembuatan template sederhana untuk toko online ini. Pada bagian ini akan dibahas mengenai konfigurasi file dan desain database nya. Pada bagian Membuat Toko Online – PHP dan MySQL Part 2 pertama-tama saya akan membahas cara pembuatan database terlebih dahulu untuk memberikan bayangan mengenai sistem yang akan kita buat nanti. Oh ya sebelumnya jika kamu sudah membuat tampilan HTML+CSS nya di Membuat Toko Online – PHP dan MySQL Part 2 mungkin akan ada beberapa hal yang akan berbeda di tahap Membuat Toko Online – PHP dan MySQL Part 2 karena dalam tahap ini saya akan membagi bagian template-nya ke dalam beberapa bagian (dimaksudkan untuk dapat lebih mudah dalam pengembangan dan maintanance nanti) baiklah langsung aja check it out.

Membuat Tabel Database

tabel – category

CREATE TABLE IF NOT EXISTS `category` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `category` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;

Tabel – Keranjang

CREATE TABLE IF NOT EXISTS `keranjang` (
  `id_keranjang` int(5) NOT NULL AUTO_INCREMENT,
  `id_product` int(5) NOT NULL,
  `id_session` varchar(100) COLLATE latin1_general_ci NOT NULL,
  `tgl_keranjang` date NOT NULL,
  `qty` int(4) NOT NULL,
  PRIMARY KEY (`id_keranjang`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=394 ;

Tabel – Order Product

CREATE TABLE IF NOT EXISTS `order_product` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_product` int(11) NOT NULL,
  `id_pemesan` varchar(100) NOT NULL,
  `name` varchar(100) NOT NULL,
  `email` varchar(100) NOT NULL,
  `address` text NOT NULL,
  `phone` int(20) NOT NULL,
  `status` varchar(30) NOT NULL DEFAULT 'New',
  `jumlah` int(4) NOT NULL,
  `tanggal` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=70 ;

Tabel – Product

CREATE TABLE IF NOT EXISTS `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`product_name` varchar(100) NOT NULL,
`price` int(20) NOT NULL,
`image` varchar(1000) NOT NULL,
`id_category` int(11) NOT NULL,
`deskripsi` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=36 ;

Tabel – User

CREATE TABLE IF NOT EXISTS `user` (
  `id_user` varchar(50) COLLATE latin1_general_ci NOT NULL,
  `password` varchar(50) COLLATE latin1_general_ci NOT NULL,
  `email` varchar(100) COLLATE latin1_general_ci NOT NULL,
  `level` varchar(50) COLLATE latin1_general_ci NOT NULL DEFAULT 'user',
  PRIMARY KEY (`id_user`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

Membuat File Konfigurasi

Langkah selanjutnya adalah membuat file-file konfigurasi yang dibutuhkan dalam pembuatan Toko Online ini, seperti

  • Membuat fungsi PHP yang dibutuhkan
  • Memisahkan file-file PHP kedalam bagian-bagian terkecil atau biasa disebut dengan teknik modulasi

Sebelum melangkah pada pembuatan fungsi PHP buatlah terlebih dahulu folder dan file yang dapat dilihat hasilnya pada gambar dibawah ini,

Gambar Folder

Setelah dibuat folder dan filenya, ayoo kita lanjutkan pada tahap selanjutnya (semoga masih semangat yaaaa…! :D ). Bukalah folder “include” dan buatlah sebuah file diberi nama lib.php, isilah file tersebut dengan fungsi-fungsi berikut ini.

lib.php

<!--?php $seminggu = array("Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"); $hari = date("w"); $hari_ini = $seminggu[$hari]; $tgl_sekarang = date("Ymd"); $thn_sekarang = date("Y"); $jam_sekarang = date("H:i:s"); $nama_bln=array(1=--> "Januari", "Februari", "Maret", "April", "Mei",
                    "Juni", "Juli", "Agustus", "September",
                    "Oktober", "November", "Desember");
//fungsi untuk keranjang belanja
function cart_content(){
	$ct_content = array();
	$sid = session_id();
	$sql = mysql_query("SELECT * FROM keranjang WHERE id_session='$sid'");
	while ($r=mysql_fetch_array($sql)) {
		$ct_content[] = $r;
	}
	return $ct_content;
}
//fungsi untuk menghapus keranjang
function deletecart(){
	$del = date('Y-m-d', mktime(0,0,0, date('m'), date('d') - 1, date('Y')));
	mysql_query("DELETE FROM keranjang WHERE tgl_keranjang < '$del'"); 	} //fungsi untuk membuat koneksi database ke server function koneksi() { 	$server = "localhost"; 	$username = "root"; 	$password = ""; 	$database = "toko2"; 	mysql_connect($server,$username,$password) or die("Koneksi gagal"); 	mysql_select_db($database) or die("Database tidak bisa dibuka"); } ?>

ya…!! dalam membuat toko online ini fungsi diatas akan menjadi pilar dalam sistem toko online ini, selanjutnya kita akan masuk ke dalam tahap cara menggunakan teknik modulasi yang menurut saya sangat bermanfaat untuk membuat aplikasi web. Karena dengan teknik modulasi ini kita dapat mudah dalam melakukan pengembangan dan perawatan suatu aplikasi web, oh ya teknik modulasi ini merupakan suatu teknik pemisahan sebuah aplikasi menjadi bagian-bagian kecil…hhmmm, mungkin terlalu panjang bahasannya ya hehe, langsung ajalah buat file-file dibawah ini didalam folder “include” :

  1. bottom.php
  2. cart.php
  3. cart2.php
  4. home.php
  5. left.php
  6. order.php
  7. product.php
  8. top.php

Jika sudah dibuat, silahkan file tersebut isikan dengan syntax berikut,

bottom.php

</pre>
<div class="footer">
© <!--?php echo date('Y') ?--> Membuat Sistem Shopping Cart | PHP dan MySQL Developed by <a href="http://www.hitamcoklat.com/">hitamcoklat</a></div>
<pre>

File diatas berfungsi untuk menampilkan bagian bawah website toko online ini.

cart.php

</pre>
<div class="BigContent">
<div class="RightContent">
<h1 class="Judul">Shopping Cart</h1>
<div class="KetProd">$sid = session_id(); $no = 1; $sql = mysql_query("SELECT * FROM keranjang, product WHERE id_session='$sid' AND keranjang.id_product=product.id"); $hitung = mysql_num_rows($sql); if ($hitung < 1){echo""; } else { while($tian=mysql_fetch_array($sql)){ echo""; $no++; } } ?>
<table class="TableCart" style="border-top: 1px dotted #0; border-bottom: 1px dotted #0;" width="100%" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th>No</th>
<th>Foto Produk</th>
<th>Nama Produk</th>
<th>Jumlah</th>
<th>Harga</th>
<th>Delete</th>
<!--?php <br ?-->
<td>$no</td>
<td><img src="foto/$tian[image]" alt="" width="50" /></td>
<td>$tian[product_name]</td>
<td>$tian[qty]</td>
<td>$tian[price]</td>
<td><a href="input.php?input=delete&id=$tian[id_keranjang]">Hapus</a></td>
</tr>
</tbody>
</table>
 <a class="tombol" href="?v=order">Selesai</a>
 <a class="tombol" href="index.php">Belanja Lagi..</a></div>

File diatas berfungsi untuk menampilkan produk yang sudah dimasukan ke dalam keranjang

cart2.php

<!--?php <br ?-->include "inc/koneksi.php";
	$sid = session_id();
	$sql = mysql_query("SELECT * FROM keranjang");
	$row = mysql_num_rows($sql);
	$jml = mysql_fetch_array($sql);

	echo "<span class="KetCart">$row item</span>";
	?>

File diatas berfungsi untuk menampilkan produk yang telah dimasukan kedalam tabel keranjang dan menghitungnya dengan menggunakan fungsi mysql_num_rows()

home.php

</pre>
<div class="BigContent">
<div class="RightContent">
<h1 class="Judul">Produk terbaru</h1>
<!--?php 	$sql = mysql_query("SELECT * FROM product ORDER BY id DESC") or die ("Query gagal dengan error: ".mysql_error()); 	while($data=mysql_fetch_array($sql)){ ?-->
<div class="produk"><a href="?v=produk&id=<?php echo $data['id']; ?>">
 <img class="FotoProduk" title="<?php echo $data['product_name']; ?>" src="foto/<?php echo $data['image']; ?>" alt="" height="110px" />
 </a>
 <br class="clearfloat" />
<div class="KotakKet"><a class="pesanprod" href="input.php?input=add&id=<?php echo $data['id']; ?>">Pesan</a>
 <a class="detprod" href="product.php?id=<?php echo $data['id']; ?>">Detail</a></div>
</div>
<!--?php } ?-->

left.php

</pre>
<div class="LeftContent">
<div id="navigation">
<ul class="top-level">
<ul class="top-level"><!--?php <br ?--> $kat = mysql_query("SELECT category, category.id from category join product on product.id_category=category.id group by category");</ul>
</ul>
<ul class="top-level">
<ul class="top-level">while($list=mysql_fetch_array($kat)){</ul>
</ul>
<ul class="top-level">
<ul class="top-level">echo"
	<li><a href="?v=produk&cat=$list[id]">$list[category]</a></li>
</ul>
</ul>
<ul class="top-level">
<ul class="top-level">";</ul>
</ul>
<ul class="top-level">
<ul class="top-level">}</ul>
</ul>
<ul class="top-level">?></ul>
</div>
</div>
<pre>

File diatas berfungsi untuk menampilkan menu kategori dari tabel category dengan menggabungkan tabel product, dapat dilihat dari syntax mysqlnya,

mysql_query("SELECT category, category.id from category join product on product.id_category=category.id group by category");

order.php

</pre>
<div class="BigContent">
<div class="RightContent">
<h2 class="Judul">Form Pemesanan</h2>
<form action="input.php?input=inputform" method="post">
<table>
<tbody>
<tr>
<td>Nama</td>
<td><input class="form" type="text" name="name" /></td>
</tr>
<tr>
<td>Email</td>
<td><input class="form" type="text" name="email" /></td>
</tr>
<tr>
<td>Alamat</td>
<td><textarea class="form" name="address" rows="7" cols="40"></textarea></td>
</tr>
<tr>
<td>No HP</td>
<td><input class="form" type="text" name="telp" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="submit" value="order" /></td>
</tr>
</tbody>
</table>
</form>

File diatas berfungsi sebagai form dengan tujuan file yaitu input.php.

product.php

File ini berfungsi untuk menampilkan produk per kategori dan produk inti,

</pre>
<div class="BigContent">
<div class="RightContent"><!--?php <br ?--> $prod = $_GET['id'];
 $cat = $_GET['cat'];
 if($cat){
 $sql = mysql_query("SELECT * FROM category WHERE id = '$cat'"); //untuk mengambil tabel kategori berdasarkan id
 $jdl = mysql_fetch_array($sql);
 echo "
<h1 class="Judul">Kategori $jdl[category]</h1>
";
 $sql2 = mysql_query("SELECT * FROM product WHERE id_category='$cat'");
 while($t = mysql_fetch_array($sql2)){ ?>
<div class="produk"><a href="?v=produk&id=<?php echo $t['id']; ?>">
 <img class="FotoProduk" title="<?php echo $t['product_name']; ?>" src="foto/<?php echo $t['image']; ?>" alt="" height="110px" />
 </a>
 <br class="clearfloat" />
<div class="KotakKet"><a class="pesanprod" href="input.php?input=add&id=<?php echo $t['id']; ?>">Pesan</a>
 <a class="detprod" href="?v=produk&id=<?php echo $t['id']; ?>">Detail</a></div>
</div>
<!--?php 	} } elseif($prod){ ?-->
<!--?php //jika variable cat tidak terdefinisikan maka lanjut ke proses dibawah ini 	$sql = mysql_query("SELECT * FROM product WHERE id='$prod'"); 	$d = mysql_fetch_array($sql); 	?-->
<h1 class="Judul">Produk <!--?php echo $d['product_name']; ?--></h1>
<div class="KetProd"><img class="GambarKetProd" src="foto/<?php echo $d['image']; ?>" alt="" />
 <!--?php echo $d['deskripsi']; ?--></div>
 <a class="haha" href="javascript:history.go(-1)">Kembali</a> | <a class="haha" href="input.php?input=add&id=<?php echo $d['id']; ?>">Beli</a>
<!--?php } ?-->

top.php

<!--?php 	error_reporting(0); 	session_start(); 	?-->

		Toko Online
</pre>
<div class="wrap">
<div class="header">
<div class="LeftOne"><a href="index.php"><img src="images/toko-online.png" alt="" width="150px" /></a></div>
<div class="RightOne">
<div class="cart"></div>
 <br class="clearfloat" />
 <a class="tocart" href="cart.php">Keranjang</a></div>
</div>
 <br class="clearfloat" />

Dari syntax diatas dapat dilihat bahwa terdapat 2 alur pengerjaannya, yaitu jika kondisi pertama (yaitu variable cat dimana dihasilkan dari parameter URL) terpenuhi maka akan melanjutkan query pengambilan kategori dan apabila kondisi kedua (dimana variable cat tidak terdefinisikan) maka akan akan melanjutkan query pengambilan produk berdasarkan id. Dilanjutkan di bagian “Membuat Toko Online PHP dan MySQL Part3” ya :D

Ohh ya jika ada pertanyaan seputar pembuatan toko online ini silahkan isi komentar.

Hey ini ada tutorial lainnya yang seruu

Beberapa Teknik Looping Dalam PHP


Read More


41 Responses to “Membuat Toko Online – PHP dan MySQL Part 2”

  1. akbar says:

    Terima kasih tutorialnya, saya sendang belajar membuat web

  2. ciptahost says:

    Semoga banyak yang membaca artikel ini, sehingga banyak yang bisa membuat toko online sendiri.

  3. Very Interesting Blog! Thank You For Thi Blog!.

  4. kapten says:

    nama database nya apa ya om ?

  5. achyms says:

    top.php nya mana ya??

  6. dmitrirascalov says:

    min numpang liat ya buat tubes ane nih. mantap tutornya makasih min :)

  7. abdillah says:

    pokonya top lah,
    kembangin terus gan (y)

  8. Amatir says:

    Aku bingung baca relasi databasenya mas..
    1. Antara tabel keranjang dan tabel product yang menghubungkan field apa ya mas..? aku liat gak ada relasi disana.
    2. Untuk tabel product yang menjadi primary key nya :id atau product_id atau id_product? soalnya ditabel product aku liat id yang menjadi primary key tapi di tabel category aku liat ada field yang bernama product_id namun bukan id(mungkin maksudnya sebagai foreign key)tapi jadinya malah gak nyambung, begitu juga dengan tabel order_product disitu ada field yang bernama id_product(mungkin maksudnya juga sebagai foreign key)namun jika diperhatikan di tabel product gak ada field yang bernama id_product.
    3. Kayaknya untuk seluruh tabel kecuali tabel user primary key nya id ya mas..? apakah boleh setiap tabel mempunyai primary key yang sama..?
    Mohon pencerahannya mas…? :)

  9. insan says:

    Tolong jawab komentar atas ane gan. pliiisss

  10. dhani says:

    mas
    untuk cartnya jika mau update qty gmn ?
    dimanakah ditambah scriptnya mohon pencerahan

  11. jasa seo says:

    Terima kasih atas informasinya sangat kreatif dan inspiratif. Salam.

  12. Terima kasih untuk berbagi informasi yang berharga ini.

  13. chrisna praditya says:

    gan tambahin lg dunk form untuk menambah,edit, hapus, data prodaknya

  14. roey says:

    gan kok belom bisa masuk halaman admin yah?????? setiap login halaman nya blank..
    n makasih buat share coding nya gan

  15. faiq says:

    maaf mas pada tabel keranjang qty itu maksudnya apa ?

    • admin says:

      itu tadinya buat update-an toko online pada postingan selanjutnya gan, mohon maaf toko online nya belum bisa update quantity jadi niatnya saya akan bikin postingan lagi tentang kelanjutan toko online ini…tapi belum sempat diposting2 :( maaf gan

  16. faiq says:

    kok gak bisa muncul ya,
    mesti ada pemberithuan gini mas “Query gagal dengan error: No database selected”

  17. safa says:

    maaf mas css nya itu pakek css yang di part-1 ?

  18. angga says:

    login nya kenapa gk bisa mas?

  19. safa says:

    mas kalau download yang part4 dimana ?

  20. syavkei says:

    itu yang pertanyaan/komentar dari bang ‘Amatir’ yang ada tiga point itu tolong dijawab gan admin…
    saya juga sama bingung nya…

  21. kk says:

    bikin tutor video nya dong kk..:D
    masih pusing klo kaya gini..buat pemulakaya saya si kk,,:d

  22. m4rx says:

    Kalo tambah modul pemesanan dgn JNE gimana caranya?

  23. tito says:

    salam kenal,
    saya mau tanya, gimana struktur databasenya kalo barangnya multiple product? misalnya dalam toko online ini kita mau jualan banyak barang ada handphone, baju, sepatu, dll yang masing2 punya atribute yang beda2, kalo baju kan ada warna, ukuran x-m-l-xl yang masing2 pasti beda price nya?
    Terima kasih

  24. luhur says:

    terimakasih banyak om, ane coba

  25. yongki says:

    thanks…good programs

 

Leave a Reply to this Post



Sponsor

Space Space Space

Categories:

Blogroll: