PHP MySQL; Membuat Shopping Cart (Keranjang Belanja) dengan Menggunakan Session
41 Balasan

Tampilan Contoh Aplikasi Shopping Cart
Dalam aplikasi e-commerce tentunya terdapat shopping cart. Shopping
cart digunakan untuk menampung sementara dari produk-produk yang akan
dibeli oleh pengunjung situs e-commerce. Dalam tulisan ini akan
menjelaskan secara singkat tentang shopping cart yaitu dengan
menggunakan fasilitas session yang ada dalam PHP dan menggunakan MySQL
untuk menyimpan data secara permanen.1. Perancangan Database
Dalam tulisan ini menggunakan MySQL Workbench untuk merancang database MySQL. Atur rancangan database seperti gambar di bawah ini.

Relasi Antar Tabel
Source code di bawah ini merupakan hasil generated code dari rancangan database di atas.file shoppingcart.sql
SET
@OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET
@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET
@OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=
'TRADITIONAL,ALLOW_INVALID_DATES'
;
CREATE
SCHEMA
IF
NOT
EXISTS `shoppingcart`
DEFAULT
CHARACTER
SET
latin1
COLLATE
latin1_swedish_ci ;
USE `shoppingcart`;
CREATE
TABLE
IF
NOT
EXISTS `shoppingcart`.`barang` (
`id`
INT
(11)
NOT
NULL
AUTO_INCREMENT ,
`nama`
VARCHAR
(255)
NULL
DEFAULT
NULL
,
`deskripsi` TEXT
NULL
DEFAULT
NULL
,
`gambar`
VARCHAR
(60)
NULL
DEFAULT
NULL
,
`hpp`
DECIMAL
(22,2)
NULL
DEFAULT
NULL
,
`harga`
DECIMAL
(22,2)
NULL
DEFAULT
NULL
,
`waktu_masuk`
TIMESTAMP
NULL
DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
,
PRIMARY
KEY
(`id`) )
ENGINE = InnoDB
DEFAULT
CHARACTER
SET
= latin1
COLLATE
= latin1_swedish_ci;
CREATE
TABLE
IF
NOT
EXISTS `shoppingcart`.`pelanggan` (
`id`
INT
(11)
NOT
NULL
AUTO_INCREMENT ,
`nama`
VARCHAR
(60)
NULL
DEFAULT
NULL
,
`alamat`
VARCHAR
(255)
NULL
DEFAULT
NULL
,
`telepon`
VARCHAR
(20)
NULL
DEFAULT
NULL
,
`email`
VARCHAR
(45)
NULL
DEFAULT
NULL
,
PRIMARY
KEY
(`id`) )
ENGINE = InnoDB
DEFAULT
CHARACTER
SET
= latin1
COLLATE
= latin1_swedish_ci;
CREATE
TABLE
IF
NOT
EXISTS `shoppingcart`.`penjualan` (
`id`
INT
(11)
NOT
NULL
AUTO_INCREMENT ,
`tanggal`
DATE
NULL
DEFAULT
NULL
,
`pelanggan_id`
INT
(11)
NOT
NULL
,
`total`
DECIMAL
(22,2)
NULL
DEFAULT
NULL
,
`biaya_pengiriman`
DECIMAL
(22,2)
NULL
DEFAULT
NULL
,
`jumlah_total`
DECIMAL
(22,2)
NULL
DEFAULT
NULL
,
PRIMARY
KEY
(`id`) ,
INDEX
`fk_penjualan_pelanggan1_idx` (`pelanggan_id`
ASC
) ,
CONSTRAINT
`fk_penjualan_pelanggan1`
FOREIGN
KEY
(`pelanggan_id` )
REFERENCES
`shoppingcart`.`pelanggan` (`id` )
ON
DELETE
CASCADE
ON
UPDATE
CASCADE
)
ENGINE = InnoDB
DEFAULT
CHARACTER
SET
= latin1
COLLATE
= latin1_swedish_ci;
CREATE
TABLE
IF
NOT
EXISTS `shoppingcart`.`item_penjualan` (
`id`
INT
(11)
NOT
NULL
AUTO_INCREMENT ,
`penjualan_id`
INT
(11)
NOT
NULL
,
`barang_id`
INT
(11)
NOT
NULL
,
`harga`
DECIMAL
(22,2)
NULL
DEFAULT
NULL
,
`kuantitas`
DECIMAL
(22,2)
NULL
DEFAULT
NULL
,
`jumlah_harga`
DECIMAL
(22,2)
NULL
DEFAULT
NULL
,
PRIMARY
KEY
(`id`) ,
INDEX
`fk_item_pembelian_barang1_idx` (`barang_id`
ASC
) ,
INDEX
`fk_item_penjualan_penjualan1_idx` (`penjualan_id`
ASC
) ,
CONSTRAINT
`fk_item_pembelian_barang10`
FOREIGN
KEY
(`barang_id` )
REFERENCES
`shoppingcart`.`barang` (`id` )
ON
DELETE
CASCADE
ON
UPDATE
CASCADE
,
CONSTRAINT
`fk_item_penjualan_penjualan1`
FOREIGN
KEY
(`penjualan_id` )
REFERENCES
`shoppingcart`.`penjualan` (`id` )
ON
DELETE
CASCADE
ON
UPDATE
CASCADE
)
ENGINE = InnoDB
DEFAULT
CHARACTER
SET
= latin1
COLLATE
= latin1_swedish_ci;
SET
SQL_MODE=@OLD_SQL_MODE;
SET
FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET
UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Eksekusi file sql di atas
2. Buat file conn.php
File ini digunakan untuk koneksi ke database. Berikut ini merupakan source code conn.php
2. Buat file conn.php
File ini digunakan untuk koneksi ke database. Berikut ini merupakan source code conn.php
<?php
$hostname_conn
=
"localhost"
;
$database_conn
=
"shoppingcart"
;
$username_conn
=
"root"
;
$password_conn
=
""
;
$conn
= mysql_connect(
$hostname_conn
,
$username_conn
,
$password_conn
)
or
die
(mysql_error());
?>
3. Buat file cart.php
File ini digunakan untuk menyimpan fungsi-fungsi yang berkaitan dengan cart yaitu untuk menambah, menghapus dan mengubah. Berikut ini merupakan source code file cart.php
File ini digunakan untuk menyimpan fungsi-fungsi yang berkaitan dengan cart yaitu untuk menambah, menghapus dan mengubah. Berikut ini merupakan source code file cart.php
<?php
require_once
(
"conn.php"
);
if
(!isset(
$_SESSION
)) {
session_start();
}
if
(isset(
$_GET
[
'act'
]) && isset(
$_GET
[
'ref'
])) {
$act
=
$_GET
[
'act'
];
$ref
=
$_GET
[
'ref'
];
if
(
$act
==
"add"
) {
if
(isset(
$_GET
[
'barang_id'
])) {
$barang_id
=
$_GET
[
'barang_id'
];
if
(isset(
$_SESSION
[
'items'
][
$barang_id
])) {
$_SESSION
[
'items'
][
$barang_id
] += 1;
}
else
{
$_SESSION
[
'items'
][
$barang_id
] = 1;
}
}
}
elseif
(
$act
==
"plus"
) {
if
(isset(
$_GET
[
'barang_id'
])) {
$barang_id
=
$_GET
[
'barang_id'
];
if
(isset(
$_SESSION
[
'items'
][
$barang_id
])) {
$_SESSION
[
'items'
][
$barang_id
] += 1;
}
}
}
elseif
(
$act
==
"min"
) {
if
(isset(
$_GET
[
'barang_id'
])) {
$barang_id
=
$_GET
[
'barang_id'
];
if
(isset(
$_SESSION
[
'items'
][
$barang_id
])) {
$_SESSION
[
'items'
][
$barang_id
] -= 1;
}
}
}
elseif
(
$act
==
"del"
) {
if
(isset(
$_GET
[
'barang_id'
])) {
$barang_id
=
$_GET
[
'barang_id'
];
if
(isset(
$_SESSION
[
'items'
][
$barang_id
])) {
unset(
$_SESSION
[
'items'
][
$barang_id
]);
}
}
}
elseif
(
$act
==
"clear"
) {
if
(isset(
$_SESSION
[
'items'
])) {
foreach
(
$_SESSION
[
'items'
]
as
$key
=>
$val
) {
unset(
$_SESSION
[
'items'
][
$key
]);
}
unset(
$_SESSION
[
'items'
]);
}
}
header (
"location:"
.
$ref
);
}
?>
4. Buat file cart_view.php
File ini digunakan untuk menampilkan daftar barang-barang yang ada dalam cart (yang telah dipilih untuk dibeli). Berikut ini merupakan source code cart_view.php
File ini digunakan untuk menampilkan daftar barang-barang yang ada dalam cart (yang telah dipilih untuk dibeli). Berikut ini merupakan source code cart_view.php
<table width=
"100%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
class
=
"viewer"
>
<tr>
<th align=
"left"
scope=
"col"
>Kode Barang</th>
<th align=
"left"
scope=
"col"
>Nama Barang</th>
<th align=
"right"
scope=
"col"
>Harga</th>
<th align=
"right"
scope=
"col"
>Qty</th>
<th align=
"right"
scope=
"col"
>Jumlah Harga</th>
<th align=
"right"
scope=
"col"
>Aksi</th>
</tr>
<?php
$total
= 0;
if
(isset(
$_SESSION
[
'items'
])) {
foreach
(
$_SESSION
[
'items'
]
as
$key
=>
$val
){
$query
= mysql_query (
"select barang.id, barang.nama, barang.harga from barang where barang.id = '$key'"
);
$rs
= mysql_fetch_array (
$query
);
$jumlah_harga
=
$rs
[
'harga'
] *
$val
;
$total
+=
$jumlah_harga
;
?>
<tr>
<td><?php
echo
$rs
[
'id'
]; ?></td>
<td><?php
echo
$rs
[
'nama'
]; ?></td>
<td align=
"right"
><?php
echo
number_format(
$rs
[
'harga'
]); ?></td>
<td align=
"right"
><?php
echo
number_format(
$val
); ?></td>
<td align=
"right"
><?php
echo
number_format(
$jumlah_harga
); ?></td>
<td align=
"right"
><a href=
"cart.php?act=plus&barang_id=<?php echo $key; ?>&ref=index.php"
>+</a> | <a href=
"cart.php?act=min&barang_id=<?php echo $key; ?>&ref=index.php"
>-</a> | <a href=
"cart.php?act=del&barang_id=<?php echo $key; ?>&ref=index.php"
>Hapus</a></td>
</tr>
<?php
mysql_free_result(
$query
);
}
}
?>
<tr>
<td> </td>
<td> </td>
<td align=
"right"
> </td>
<td align=
"right"
> </td>
<td align=
"right"
><?php
echo
number_format(
$total
); ?></td>
<td align=
"right"
><a href=
"cart.php?act=clear&ref=index.php"
>Clear</a></td>
</tr>
</table>
5. Buat file index.php
File ini digunakan untuk menampilkan daftar produk. Berikut ini merupakan source code index.php
File ini digunakan untuk menampilkan daftar produk. Berikut ini merupakan source code index.php
<?php
require_once
(
"conn.php"
);
if
(!isset(
$_SESSION
)) {
session_start();
}
?>
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<head>
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
/>
<title>Contoh Aplikasi Shopping Cart</title>
<style>
h1, h2, h3, p {
margin-top:0px;
margin-bottom:10px;
}
</style>
</head>
<body>
<h1>Contoh Aplikasi Shopping Cart</h1>
<h2>List Produk</h2>
<hr />
<table width=
"100%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<tr valign=
"top"
>
<td width=
"55%"
><table width=
"100%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<?php
mysql_select_db(
$database_conn
,
$conn
);
$query
= mysql_query (
"select * from barang"
);
while
(
$rs
= mysql_fetch_array (
$query
)) {
?>
<tr>
<td width=
"160"
valign=
"top"
><img src=
"<?php echo $rs['gambar']; ?>"
alt=
""
style=
"width:140px; margin-right:20px; margin-bottom:20px;"
/></td>
<td valign=
"top"
><h3><?php
echo
$rs
[
'nama'
]; ?></h3>
<p><?php
echo
$rs
[
'deskripsi'
]; ?></p>
<p>Harga : <?php
echo
number_format(
$rs
[
'harga'
]); ?> - <a href=
"cart.php?act=add&barang_id=<?php echo $rs['id']; ?>&ref=index.php"
>Beli</a></p></td>
</tr>
<?php
}
?>
</table></td>
<td> </td>
<td width=
"40%"
><p>Keranjang Anda</p>
<hr />
<?php
require
(
"cart_view.php"
); ?></td>
</tr>
</table>
<p> </p>
</body>
</html>
Sekarang coba jalankan!!!
Sekian dulu, silakan dikembangkan sendiri aplikasi sederhana ini, semoga bermanfaat… :D
Sekian dulu, silakan dikembangkan sendiri aplikasi sederhana ini, semoga bermanfaat… :D