Я создал функцию, которая проверяет количество перед сохранением данных в таблицу продаж. Эта функция хорошо работает с одиночными переменными и в тот момент, когда переменные после публикации становятся множественными; это не работает, потому что они становятся массивом. Есть ли способ, которым я могу обработать массив, используя идею этой функции? Идея заключается в том, что для каждого набора, скажем, ($ productCode = 2) & ($ amount = 10) проверяются функции, затем говорят ($ productCode = 1) & ($ amount = 20) до последнего набора.
<?php
//Checking quantity availability
//Post variables
//$productCode=$_POST['productCode'];
//$quantity=$_POST['quantity'];
//Equivalent variables
$productCode = array(2, 1, 7, 2);
$quantity = array(10, 20, 30, 40);
//My wild thought BUT no LUCK
for ($i = 0; $i < count($productCode); $i++) {
$productCode=$productCode[$i];
$quantity=$quantity[$i];
function CheckIfQuantityIsEnough ($productCode,$quantity)
{
try
{
$QuantityIsEnough = false;
$pdoAssigned = new PDOConfig;
//Works perfectly well for one variable set
$resultQuantityIsEnough = $pdoAssigned->query("call sp_getStockQuantityCount($productCode,$quantity)");
if( $resultQuantityIsEnough->fetchColumn() >0) //the course has been assigned
{
$QuantityIsEnough = true;
}
return $QuantityIsEnough;
}
catch (Exception $e) {
throw $e;
}
}
}//End For statement
//Check also if Quantity is enough for that
if (CheckIfQuantityIsEnough ($productCode,$quantity) == false)
{
$Feedback = "Quantity not enough for this product";
}
?>
//sp_getStockQuantityCount
CREATE PROCEDURE `sp_getStockQuantityCount`(`vStockTypeID` INT, `vQuantity` DECIMAL(9,0))
BEGIN
declare vQuantityNow int;
declare vQuantitySubtract int;
set vQuantityNow=(select Quantity from stockquantitytbl where StockTypeID=vStockTypeID limit 1);
set vQuantitySubtract=(vQuantityNow-vQuantity);
select count(Quantity)
from stockquantitytbl
where StockTypeID=vStockTypeID and vQuantitySubtract>=0;
END
--------------- Редактировать -----------------------
Я сделал покончим с этой функцией и теперь просто нужно использовать хранимую процедуру, как показано ниже:
<?php
//Array data
//$productCode = array(2, 1, 7, 2);
//$quantity = array(10, 20, 30, 40);
//Single set
$productCode=7;
$quantity=101;
$sql="call sp_getStockQuantityCount($productCode,$quantity)";
$result = $odb -> query($sql);
if($result->rowcount() > 0) {
foreach ($result as $row) {
$QuantityIsEnough = $row['Quantity'];
if($QuantityIsEnough == 0)
{
$Feedback = "Quantity not enough for this product";
}
else
{
//Insert sale record
}
}
}
?>
Один набор работает хорошо, но проблема все еще остается для данных массива, как объяснено выше.