alexa-tracking

[ASK] pengurangan stok di php & mysql

Main Content

1024
1024
KASKUS
51
244
https://www.kaskus.co.id/thread/53c1f2baa4cb17dd018b459e/ask-pengurangan-stok-di-php-amp-mysql
[ASK] pengurangan stok di php & mysql
ane punya tabel barang
-idbarang
-namabarang
-spek
-harga
-stok

dan tabel detail
-idbarang
-idtrans
-jumlah

$update="UPDATE barang,detail set barang.stok=barang.stok-detail.jumlah where barang.id_barang=tail.id_barang='$id_barang'";
mysql_query($update)or die (mysql_error());

tolong bantu koreksi gan.ketika ada transaksi stok barang di tabel barang berkurang dengan jumlah yang di pesan (tabel detail) mohon dibantu ya.
terima kasih
Quote:


yah tinggal di query 2x

query pertama untuk edit stok table barang
query kedua untuk edit stok table detail

Quote:


coding yang itu masih salah gan setelah transaksi stok tetep atau tidak berkurang.
KASKUS Ads
kalo ane gak salah tangkap dgn kamsud TS, sepertinya table detail gk perlu diupdate/edit,
krn `jumlah' udah merupakan hasil insert/update, TS pengen update stok di table barang
berdasarkan jumlah di table detail utk id_barang tertentu.

kalo id_trans diabaikan, bisa coba pake query gini:
PHP Code:
UPDATE `barangt1 
INNER JOIN 
`detailt2 ON (t2.id_barang=t1.id_barang AND t2.id_barang='$id_barang')
SET t1.stok t1.stok t2.jumlah 
Quote:

iya bener gan...udah ane coba saran agan tapi malah Query was empty ..
image-url-apps
Coba ini gan

Update barang set stok = stok - ( select jumlah from detail where id_barang = '$id_barang' ) where id_barang = '$id_barang'
Quote:


ga ada error tapi tetep ga berkurang gan stoknya
ini coding lengkapnya gan..

<?php
if(!empty($_SESSION['id_member']))
{
include"admin/koneksi.php";//panggil koneksi

//dari konfirm pesan
$id_barang = $_POST['id_barang'];//kode barang
$total = $_POST['total'];
$kota = $_POST['kota']; //kota pengiriman
$alamat = $_POST['alamat'];
$norekening = $_POST['norekening'];
$namarekening = $_POST['namarekening'];
$gambar = $_FILES['gambar'] ['name'];

//id_transaksi
$a = "TR";
$b = date("YmdHis");
$id_transaksi = $a.$b;//var_dump($id);exit();
//variable transaksi
$tgl =date("Y-m-d/h:i:s");
$id_member = $_SESSION['id_member'];

//simpan transaksi ke tabel transaksi

$simpan1="insert into tran values('$id_transaksi','$id_member','$tgl','$kota','$alamat','$total','PESAN')";
copy($_FILES['gambar']['tmp_name'],"gambar/".$gambar);

//query transaksi
$cek=mysql_query($simpan1)or die(mysql_error());
if($cek)
{
//menyimpan ke detail
$detail="INSERT INTO etail(id_barang,id_transaksi,jumlah)SELECT keranjang.id_barang,
tran.id_transaksi,keranjang.qty FROM tran,keranjang
WHERE tran.id_transaksi='$id_transaksi'";
//query detail
mysql_query($detail)or die(mysql_error());

//menghapus isi keranjang berdasarkan id_member
$hapus="DELETE FROM keranjang where id_member='$id_member'";
//query hapus
mysql_query($hapus)or die (mysql_error());

//mengurangi stok ditabel barang
$update="Update barang set stok=stok-(select jumlah from etail where id_barang='$id_barang')where id_barang='$id_barang'";
mysql_query($update)or die (mysql_error());

//pesan konfirmasi sistem
?>
[removed]alert("Terimakasih");[removed]="?page=faktur&kota=<?= $kota ?>&id=<?= $id_transaksi ?>&tgl=<?= $tgl ?>"[removed]
<?php

}
}
else
{echo"[removed]alert('maaf anda belum melakukan login');location.href='index.php'[removed];
";}
?>
Quote:


Quote:


Quote:


kemungkinan yang salah bukan di mysql, tapi di phpnya sendiri
bisa saja TS nya lupa tangkap variable $_POST dan $_GET
image-url-apps
Quote:


tetep ga bisa gan
karena pengurangan stok berdasarkan jumlah di table `detail`,
sebaiknya agan periksa keberhasilan query yg ini:
PHP Code:
    //menyimpan ke detail
    
$detail="INSERT INTO detail(id_barang,id_transaksi,jumlah) SELECT keranjang.id_barang,
    tran.id_transaksi,keranjang.qty FROM tran,keranjang WHERE tran.id_transaksi='
$id_transaksi'";
     
//query detail
     
mysql_query($detail)or die(mysql_error());

    
// bila perlu kasih ini dulu (utk lihat brp rows hasil insert)
    
$rows mysql_affected_rows();
    echo 
"$rows inserted"
image-url-apps
Quote:


ditabel detail berhasil simpan gan...
cuma masalah di pengurangannya di stok tabel barang gan....
sebaiknya agan cek dulu di query ini, karena agan select 2 tabel tapi gak ada relasi antara tabel tran & keranjang.

PHP Code:
//menyimpan ke detail
$detail "INSERT INTO etail (id_barang, id_transaksi, jumlah) SELECT keranjang.id_barang, tran.id_transaksi, keranjang.qty FROM tran, keranjang WHERE tran.id_transaksi = '$id_transaksi'"


contoh :
PHP Code:
WHERE tran.id_barang keranjang.id_barang AND tran.id_transaksi '$id_transaksi'"; 


untuk update mungkin bisa dicoba gan :
PHP Code:
UPDATE barang
INNER JOIN etail ON 
(etail.id_barang barang.id_barang)
SET
 barang
.stok = (barang.stok etail.jumlah)
WHERE 
 barang
.id_barang '".$id_barang."' 

di tabel tran ane ga ada id_barang gan..

kalo pake yang
$update="update barang inner join etail on barang.id_barang=etail.id_barang set barang.stok = barang.stok - etail.jumlah";
semua stok ditabel ikut berkurang gan.. tpi kalo pake
$update="update barang inner join etail on barang.id_barang=etail.id_barang set barang.stok = barang.stok - etail.jumlah where barang.id_barang='$id_barang'";
ga ada yang berkurang stok ditabel barang nya gan
Quote:


Sepintas ane liat. Soalnya agan bikin codenya asal copy paste, gak pake tag code jadi ane malas bacanya.. hehehe
1. Pasti semua stok ditabel ikut berkurang karena gak ada wherenya
2. begitu dikasi where gak ada yang berkurang? udah pasti $id_barang gak ada valuenya. Untuk memastikan di print aja querynya. Pasti hasilnya
Code:
update  barang inner join etail on barang.id_barang=etail.id_barang set barang.stok = barang.stok - etail.jumlah where barang.id_barang=''

saya kasih tau cluenya aja ya emoticon-Embarrassment

1. declare $get_input
2. query data asli, $get_asli. input jangan di apa-apain dulu.
3. query update, $do_update.

nah di query update tinggal akalin deh supaya value updatenya jadi $get_asli - $get_input emoticon-Embarrassment
image-url-apps
nyimak bro ane juga bingung nih sampe sekarang.otak ane udah mentok...kasusnya mirip...
http://m.kaskus.co.id/thread/547faf36dc06bd69718b4575
jalan terakhir menggunakan trigger...tapi bingung implementasinya...
Ane lebih menganjurkan menggunakan trigger gan. Trigger itu apa??? cari tahu sendiri ya. hehe
Kenapa sy merekomendasikan trigger sbb :
1. ketika agan ambil barang di transaksi, agan ga perlu query update buat stok barang.
2. lebih aman ketika agan lupa ketika ada modul lain yg mengambil stok barang/ mengimport barang.
Quote:


Ane lebih menganjurkan menggunakan trigger gan. Trigger itu apa??? cari tahu sendiri ya. hehe
Kenapa sy merekomendasikan trigger sbb :
1. ketika agan ambil barang di transaksi, agan ga perlu query update buat stok barang.
2. lebih aman ketika agan lupa ketika ada modul lain yg mengambil stok barang/ mengimport barang.

Quote:



Ga perlu bingung gan, berikut ane jelasin ya mengenai penggunaan trigger :
DELIMITER //

CREATE TRIGGER nama_trigger
AFTER INSERT
ON `tbl_transaksi` FOR EACH ROW //Ini syntax ketika ada record yang dimasukan di tbl_transaksi.

BEGIN
-- Insert record into audit table
UPDATE tbl_brg SET `stok` = NEW.jum WHERE id_barang = NEW.id_brg;
// disini update brg dengan stok = NEW.jum,
// NEW.jum -> merupakan field yg ada di record tbl_transaksi
END; //

DELIMITER ;
$update="UPDATE barang a, detail b set a.stok=a.stok-b.jumlah where a.id_barang=b.id_barang and a.id_barang='$id_barang'";
Quote:


Update barang SET barang.stok = barang.stock-(select detail.jumlah from detail where detail.idbarang = $idbarang) Where barang.idbarang = $idbarang

kali sarah ane di tabel detail, kasih id detail
×