in php, Tutorial

Membuat Toko Online – PHP dan MySQL Part 2

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.

Write a Comment

Comment

45 Comments

  1. 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…? :)

    • 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

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

  3. 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

  4. gan di product.php saya coba gini
    Notice: Undefined index: id in D:\xampp\htdocs\web\include\product.php on line 4

    Notice: Undefined index: cat in D:\xampp\htdocs\web\include\product.php on line 5

  5. Bagaimana jika tidak memakai id session tp memakai id user agar yang sudah login dapat memesan barbarang?

Webmentions

  • Nur July 8, 2015

    Bagaimana jika tidak memakai id session tp memakai id user agar yang sudah login dapat memesan barbarang?

  • iddm July 8, 2015

    gan di product.php saya coba gini
    Notice: Undefined index: id in D:\xampp\htdocs\web\include\product.php on line 4

    Notice: Undefined index: cat in D:\xampp\htdocs\web\include\product.php on line 5

  • rhe dwi yuni July 8, 2015

    gan, mau namba user, tp kog tidak bisa digunakan waktu login ya?
    apakah bisa login selain pake admin?

  • Ulfatun Khasanah July 8, 2015

    kak kalau bikin detail per produk itu gimana ya?

  • tyo July 8, 2015

    mas kok gk bisa ya lib.php nya

  • adhi July 8, 2015

    Numpang tanya: Tabel kategori fungsinya untuk apa? Thanks

  • yongki July 8, 2015

    thanks…good programs

  • luhur July 8, 2015

    terimakasih banyak om, ane coba

  • tito July 8, 2015

    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

  • m4rx July 8, 2015

    Kalo tambah modul pemesanan dgn JNE gimana caranya?

  • kk July 8, 2015

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

  • syavkei July 8, 2015

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

  • safa July 8, 2015

    mas kalau download yang part4 dimana ?

  • admin July 8, 2015

    error nya seperti apa mas?

  • angga July 8, 2015

    login nya kenapa gk bisa mas?

  • admin July 8, 2015

    iya mas

  • safa July 8, 2015

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

  • admin July 8, 2015

    database nya belum dipilih mas…

  • faiq July 8, 2015

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

  • faiq July 8, 2015

    mksih infonya :)

  • admin July 8, 2015

    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

  • faiq July 8, 2015

    maaf mas pada tabel keranjang qty itu maksudnya apa ?

  • admin July 8, 2015

    hhmm…, kalo blank coba cek URL nya gan.., barangkali ke load URL yang salah…

  • roey July 8, 2015

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

  • admin July 8, 2015

    udah gan, coba cek tkp ke Membuat Toko Online Part 3 dan Membuat Toko Online Part 4 :D

  • chrisna praditya July 8, 2015

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

  • adaptor notebook July 8, 2015

    Terima kasih untuk berbagi informasi yang berharga ini.

  • jasa seo July 8, 2015

    Terima kasih atas informasinya sangat kreatif dan inspiratif. Salam.

  • dhani July 8, 2015

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

  • insan July 8, 2015

    Tolong jawab komentar atas ane gan. pliiisss

  • Amatir July 8, 2015

    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…? :)

  • admin July 8, 2015

    maaf gan, jadi gini… untuk nama database nya terserah agan…
    nah di artikel udah ada sintaks mysql-nya tinggal di ikutin aja …. :)

    setelah itu rubah nama database nya dengan database yang agan buat tadi di file lib.php ada di folder include baris ke 31

  • willy July 8, 2015

    bneran ga ada gan databasenya,

  • keren gan,,, July 8, 2015

    btw…. nyubiiii

  • admin July 8, 2015

    udah ane update gann, mohon maaf ketinggalan file-nyaa :D

  • admin July 8, 2015

    monggo-monggo, silahkan di lihat-lihat :D

  • admin July 8, 2015

    makasih gan :)

  • abdillah July 8, 2015

    pokonya top lah,
    kembangin terus gan (y)

  • dmitrirascalov July 8, 2015

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

  • achyms July 8, 2015

    top.php nya mana ya??

  • admin July 8, 2015

    perasaan database nya udah saya upload ya?

  • kapten July 8, 2015

    nama database nya apa ya om ?

  • ugg boots outle July 8, 2015

    Very Interesting Blog! Thank You For Thi Blog!.

  • admin July 8, 2015

    amiiinn :D

  • ciptahost July 8, 2015

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

  • admin July 8, 2015

    sama-sama, PART selanjutnya menyusul :D

  • akbar July 8, 2015

    Terima kasih tutorialnya, saya sendang belajar membuat web