эй, я пытаюсь сделать базовый проект инвентаризации, в котором я хочу показать сообщение об отсутствии товара на кнопке «продать товар». в основном в базе данных, если balance_quantity равен 0, тогда запись должна остановиться и отобразить сообщение. пробовал с определением переменной $ balance_quantity = «0»; а также
заменяя if и elseif
вот мой код
<?php
$db = mysqli_connect('localhost', 'root', '', 'inventory');
if (isset($_GET['sell'])) {
$item_id = $_GET['sell'];
$balance_quantity = $_GET['bal']-1;
$record = mysqli_query($db, "UPDATE item_master SET balance_quantity=$balance_quantity WHERE item_id=$item_id");
}
if(isset($_GET['buy'])) {
$item_id = $_GET['buy'];
$quantity = 1;
$query = "INSERT INTO transaction (Item_id, quantity) VALUES ($item_id,$quantity)" ;
mysqli_query($db, $query);
}
?>
<td>
<a href="cart.php?sell=<?php echo $row['item_id']; ?>&bal=<?php echo $row['balance_quantity']; ?>" class="btn">Sell</a>
</td>
<td>
<a href="cart.php?buy=<?php echo $row['item_id']; ?>" class="btn">Buy</a>
</td>
Просто предложение: сделайте что-нибудь, что получит текущий баланс из БД, и сравните их.
Здесь вы получаете баланс из значения GET. Что, если другой пользователь покупает или продает в то же время?
Пример:
$db = mysqli_connect('localhost', 'root', '', 'inventory');
if (isset($_GET['sell'])) {
$item_id = $_GET['sell'];
$balance_query= mysqli_fetch_assoc(mysqli_query($db, "SELECT balance_quantity FROM item_master WHERE item_id=$item_id"));
$balance_quantity = balance_query['balance_quantity'];
//Rest of logic. Or even better, make a function that plain returns getBalance($itemId)
}
Других решений пока нет …