Home > PHP > Sistem Transaksi Barang Sederhana

Sistem Transaksi Barang Sederhana

July 8th, 2008 1,890 views Leave a comment Go to comments

Bahasa pemrograman web spt PHP mempunyai fasilitas untuk penyimpanan data sementara yaitu SESSION, dan dengan fasilitas ini pula lahir beberapa sistem yang familiar di beberapa aplikasi web seperti Shopping Cart dan Orders System.

Saya coba memberikan sistem transaksi sederhana yang menjadi inti dari kedua sistem yang sy sebutkan diatas. Jadi data yang anda masukan atau anda pilih tidak langsung dimasukkan ke database, namun ditampung sementara di dalam variable SESSION.

Langkah pertama siapkan database anda, sy implementasikan sistem ini di MySQL, jadi copy syntax di bawah ini agar tercipta 1 buah table bernama ‘barang’.

CREATE TABLE `barang` (
  `id_barang` char(5) NOT NULL,
  `nama_barang` varchar(40) NOT NULL,
  `jumlah` int(5) NOT NULL,
  PRIMARY KEY  (`id_barang`)
)

Lalu salin file 2 file di bawah ini sebagai barang.class.php dan session.class.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?	
	class Barang{		
 
		var $table = 'barang';	
 
		function Barang(){
			mysql_connect('localhost','root','');
			mysql_select_db('test');
		}
 
		function insert($data){
			$fields = array();
			$values = array();
 
			foreach($data as $key=>$value){
				$fields[] = $key;
				$values[] = "'".$value."'";
			}
 
			$sql = "INSERT INTO ".$this->table."(".implode(',',$fields).") VALUES(".implode(',',$values).")";
			$result = mysql_query($sql) or die(mysql_error());
			return $result;
		}
 
		function truncate(){
			$result = mysql_query('TRUNCATE TABLE '.$this->table) or die(mysql_error());
			return $result;
		}
 
		function get(){
			$sql = mysql_query('SELECT * FROM '.$this->table) or die(mysql_error());
			$data = array();
			if(!$sql || @mysql_num_rows($sql) == 0){
			  return NULL;
			}else{
			  while($row = mysql_fetch_object($sql)){
			  	$data[] = $row;
			  }		
			  return $data;
			}			
		}
	}
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?
	@session_start(); // klo session mesti diawali dengan fungsi di ini
 
	class StoreSession{
		var $name = 'barang';
		var $error = '';
 
		function StoreSession(){
			if(!isset($_SESSION[$this->name])){
				$_SESSION[$this->name] = array();
			}
		}
 
		function add($id,$nama,$jumlah){
			if(!array_key_exists($id,$_SESSION[$this->name])){	
				$_SESSION[$this->name][$id] = array('nama'=>$nama,'jumlah'=>$jumlah);
			}else $_SESSION[$this->name][$id]['jumlah'] += $jumlah;
		}
 
		function get(){
			return $_SESSION[$this->name];
		}
 
		function delete($id=false){
			if($id)	unset($_SESSION[$this->name][$id]);
			else unset($_SESSION[$this->name]);
		}
 
		function isNull(){
			if(!isset($_SESSION[$this->name])) return true;
			else return empty($_SESSION[$this->name]);
		}		
	}	
?>

Class Barang dipakai ketika transaksi sudah selesai dilakukan dan user menekan tombol simpan dan seketika itu semua data yang disimpan sementara akan disimpan di table barang.

Class StoreSession adalah class utama dalam trick penyimpanan barang sementara ini, semua metode seperti menambah, mengedit dan menghapus data ada disini. Data yang disimpan sementara berupa data array 2 dimensi.

Berikut adalah interfacenya dimana user melakukan proses transaksi dan pemilihan barang:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?
	require('session.class.php');
 
	$sess = new StoreSession();
 
	if(isset($_GET['delete'])){
		$sess->delete($_GET['delete']);
		header('Location: ./');
	}	
 
	if(isset($_GET['save'])){
		require('barang.class.php');
                $cart = $sess->get();
		$barang = new Barang();
		$barang->truncate();
		foreach($cart as $key=>$value){
			$post = array(
				'id_barang' => $key,
				'nama_barang' => $value['nama'],
				'jumlah' => $value['jumlah']
			);
			$barang->insert($post);                        
		}
                $sess->delete();
		header('Location: result.php');
	}	
 
 
	if(isset($_POST['submit'])){
		$sess->add($_POST['id_barang'],$_POST['nama_barang'],$_POST['jumlah']);
	}	
?>
<html>
<head>
<title>Data Transaction</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
  Kode Barang : 
  <input name="id_barang" type="text" id="id_barang" size="5" maxlength="5" />
  <br />
Nama Barang : 
<input name="nama_barang" type="text" id="nama_barang" size="30" />
<br />
Jumlah : 
<input name="jumlah" type="text" id="jumlah" size="4" maxlength="5" />
 <br />
 <input name="submit" type="submit" id="submit" value="Submit" />
 <input type="reset" name="Submit2" value="Reset" />
</form>
 
<br />
<table border="1" cellspacing="0" cellpadding="0" width="83%">
  <tr>
    <th width="13%" scope="col">ID Barang </th>
    <th width="54%" scope="col">Nama Barang </th>
    <th width="12%" scope="col">Jumlah</th>
    <th width="21%" scope="col">Hapus</th>
  </tr>
  <? foreach($sess->get() as $key=>$value): ?>
  <tr>
    <td align="center"><?=$key?></td>
    <td><?=$value['nama']?></td>
    <td align="center"><?=$value['jumlah']?></td>
    <td align="center"><a href="?delete=<?=$key?>">Hapus</a></td>
  </tr>
  <? endforeach; ?>
</table>
<? if(!$sess->isNull()): ?>
	<center><input type="button" value="Save" onClick="document.location='?save=1'" /></center>
<? endif; ?>
</body>
</html>

Dan ini adalah tampilan dari script diatas:

trans

Pada interface diatas ada tombol save yang ketika ditekan akan menuju file result.php yang dimana file result.php ini yang menjadi interface terakhir dalam proses transaksi, pada file ini pula data yang selama proses transaksi disimpan akan dimasukkan ke dalam database. Berikut adalah source dari result.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<html>
<head>
 <title>Data Result</title>
</head>
<body>
<?
		require('barang.class.php');
		$barang = new Barang();
?>
<table border="1" cellspacing="0" cellpadding="0" width="83%">
  <tr>
    <th width="18%" scope="col">ID Barang </th>
    <th width="63%" scope="col">Nama Barang </th>
    <th width="19%" scope="col">Jumlah</th>
  </tr>
  <? foreach($barang->get() as $row): ?>
  <tr>
    <td align="center"><?=$row->id_barang?></td>
    <td><?=$row->nama_barang?></td>
    <td align="center"><?=$row->jumlah?></td>
  </tr>
  <? endforeach; ?>
</table>
</body>
</html>

Untuk melihat demo dari artikel ini di link ini.

Source code lengkap dapat anda download di sini

Catatan: (09-09-2009)
Sebelum melakukan penyimpanan di table barang, data lama di hapus terlebih dahulu memang disengaja karena pada artikel ini saya lebih menonjolkan permainan session dalam transaksi pemesanan barang.

Semoga dapat membantu menambah wawasan anda…. ^_^

Categories: PHP Tags: , ,
(2 votes, average: 3.50 out of 5) KurangBiasaLumayanBagusLuar Biasa
Loading ... Loading ...
  1. September 2nd, 2008 at 21:44 | #1

    I disagree
    Can you give more info?

  2. February 20th, 2009 at 16:44 | #2

    alow mas chandra script ini ga bs download, mo nanya 1 lagi, klu idbarangan increment gimana ya? otomatis jadi td input manual?
    b001 ,b002 dst..
    trims byk

  3. February 20th, 2009 at 16:54 | #3

    sori klo gk bisa download coz file-nya aku upload ke server lama.
    nanti ya tak cari2 dulu file mentahannya dan aku upload ke server baru.
    utk ID barang increment itu tergantung di aplikasi master barang, klo disini data barang cuma perumpamaan aja, intinya di proses penyimpanan transaksi, anggap saja data barang sudah ada sebelumnya, gitu.

  4. May 7th, 2009 at 21:59 | #4

    ha ha ha ..

    bagus..
    gitu doonk.. -_-’

  5. September 9th, 2009 at 00:18 | #5

    Thanks ya udah merhatiin, kyknya trik di saat nyimpen data blom sempurna deh, udah saya benerin dan dah saya coba-coba dan gak ada error. Sekali lagi thanks atas informasinya

  6. fox
    September 9th, 2009 at 03:43 | #6

    Mas chandra kalau pas savenya kok error ya?
    yang demonya juga

  7. fox
    September 9th, 2009 at 11:04 | #7

    Wah responnya Cepet banget adminnya nih
    baru kemarin post langsung di benerin. Mantapz
    Mas Chandra table barang sistemnya update yah? setiap input barang baru , yang lama langsung terhapus.
    Mas chandra gimana kalau mau nambah table misalnya barang1 yang kemudian semua inputan itu di tampung di sana.
    Script simpan ke barang1 nya harus di tambah dimana ya mas?
    terima kasih

  8. September 9th, 2009 at 11:23 | #8

    Sebelum melakukan penyimpanan di table barang, data lama di hapus terlebih dahulu memang disengaja karena pada artikel ini saya lebih menonjolkan permainan session dalam transaksi pemesanan barang. (aku dah tambah kalimat ini di catatan kecil bagian paling bawah artikel ini),,, Thanks atas pertanyaannya

  9. najmakeysa
    October 28th, 2009 at 00:02 | #9

    mas ikutan nanya nich, kalo transaksi satu barang udah ter record di table, sekali manggil nomernya aja sekalian udah nampak nama nya juga bisa ga. dalam sekali enter dr field nomer barang tersebut… makasih

  10. October 28th, 2009 at 11:07 | #10

    Itu pake ajax, jadi ketika dimasukan kode barang, ketika event onBlur bisa dikasih fungsi ajax untuk mendapatkan detail dari barang dengan kode tersebut

  1. No trackbacks yet.