Я новичок в базе данных, я разрабатываю управление запасами, у меня есть четыре таблицы, две для purchase
и purchase_detail
.И еще два для sale
и sale_detail
.
Это изображение - моя purchase_detail
таблица , и это код для вставки новой покупки, и он отлично работает.
$sql_insert_sale = "INSERT INTO
purchase(recipt_no,date,total,vat,totalwithvat) VALUES ( ?, ?, ? ,?,
?)";
$query = $dbh->prepare($sql_insert_sale);
$query->bindParam(1, $recipt_no, PDO::PARAM_STR);
$query->bindParam(2, $date, PDO::PARAM_STR);
$query->bindParam(3, $price_all, PDO::PARAM_STR);
$query->bindParam(4, $vat_all, PDO::PARAM_STR);
$query->bindParam(5, $total_all, PDO::PARAM_STR);
$query->execute();
$lastInsertId = $dbh->lastInsertId();
if ($lastInsertId) {
$sql_insert_purchase = "INSERT INTO
purchase_detail(purchase_id, product_id,vat,price,quantity,amount) "
. "VALUES ( :purchase_id
,:product_id,:vat,:price,:quantity,:amount)";
for($i=0;$i<count($partnumber);$i++) {
$data=array(
':purchase_id'=> $lastInsertId,
':product_id'=> $id[$i],
':vat'=> $vat[$i],
':price'=> $amount[$i],
':quantity'=> $quantity[$i],
':amount'=> $total[$i]
);
$statement = $dbh->prepare($sql_insert_purchase);
if($statement->execute($data)){
echo "Successfull";
}else{
print_r($dbh->errorInfo());
}
и это моя sale_detail
таблица
У меня проблема с таблицей sale
при обновлении quantity
в purchase_detail
стол.Как вы можете видеть, у нас один и тот же продукт с разным количеством, когда я делаю новую продажу, он всегда обновляет единственное количество строки с product_id
, который идет первым.Ниже приведен код для новой продажи
$sql_insert_sale = "INSERT INTO
sale(recipt_no,cus_name,date,total)VALUES ( ?,?, ?, ? )";
$query = $dbh->prepare($sql_insert_sale);
$query->bindParam(1, $recipt_no, PDO::PARAM_STR);
$query->bindParam(2, $cus_name, PDO::PARAM_STR);
$query->bindParam(3, $date, PDO::PARAM_STR);
$query->bindParam(4, $total_all, PDO::PARAM_STR);
$query->execute();
$lastInsertId = $dbh->lastInsertId();
if ($lastInsertId) {
$sql_insert_sale = "INSERT INTO
sale_detail(sale_id, product_id,vat,price_vat,quantity,amount) "
. "VALUES ( :sale_id,:product_id,:vat,:price_vat,:quantity,:amount)";
for($i=0;$i<count($partnumber);$i++) {
$data=array(
':sale_id'=> $lastInsertId,
':product_id'=> $id[$i],
':vat'=> $vat[$i],
':price_vat'=> $price[$i],
':quantity'=> $quantity[$i],
':amount'=> $total[$i]
);
$statement = $dbh->prepare($sql_insert_sale);
if($statement->execute($data)){
$sql_update_purchase="UPDATE purchase_detail
INNER JOIN product "
.
"on(purchase_detail.product_id=product.product_id) "
. "SET
purchase_detail.quantity=purchase_detail.quantity-$quantity[$i]"
. " WHERE
purchase_detail.product_id=$id[$i] and product.product_id=$id[$i]";
$statement_update=$dbh->prepare($sql_update_purchase);
if($statement_update->execute())
Пожалуйста, расскажите, что не так с моим кодом, я очень ценю вашу помощь.Я близок к сроку завершения.