检查可用租赁库存的运行库存

时间:2016-12-06 00:18:46

标签: php html mysql sql

我正在为假设的租赁业务建立一个网站,并且当用户点击“添加到购物车”按钮时,我正在尝试检查指定时间跨度内的可用库存。我运行的SQL查询遇到了一些麻烦,主要是(我认为),因为我的$ product_id变量是一个整数,但我要查询的列是“item1”,“item2”等形式。 / p>

我试图使用的逻辑是从表中可用的数字中减去所需的数量,在给定的时间跨度内取这些值的最小值,然后检查在任何时候该数字是否低于零

以下是相关代码:

switch ($action) {
case 'view':
    $cart = cart_get_items();
    break;
case 'add':
    $product_id = filter_input(INPUT_GET, 'product_id', FILTER_VALIDATE_INT);
    $quantity = filter_input(INPUT_GET, 'quantity');
    $pickup = filter_input(INPUT_GET, 'pickup');
    $return = filter_input(INPUT_GET, 'return');

    // validate the quantity entry
    if ($quantity === null) {
        display_error('You must enter a quantity.');
    } elseif (!is_valid_number($quantity, 1)) {
        display_error('Quantity must be 1 or more.');
    }

    // check for available inventory
    $query = "SELECT MIN((SELECT CONCAT('item',:product_id)) - :quantity) FROM running_inventory WHERE date BETWEEN :pickup AND :return";
    $statement = $db->prepare($query);
    $statement->bindValue(':product_id', $product_id);
    $statement->bindValue(':quantity', $quantity);
    $statement->bindValue(':pickup', $pickup);
    $statement->bindValue(':return', $return);
    $statement->execute();
    $available = $statement->fetch();
    $num_avail = $available[0];
    var_dump($num_avail);
    $statement->closeCursor();
    if ($num_avail - $quantity >= 0) {
    cart_add_item($product_id, $quantity);
    } else {
        display_error('The indicated quantity of stock is not available for your rental period.');
    }
    $cart = cart_get_items();
    break;

这是$ available的var_dump:

array(2) { ["MIN((SELECT CONCAT('item','6')) - '3')"]=> string(2) "-3" [0]=> string(2) "-3" } string(2) "-3"

显然只是从0减去$ quantity,但我似乎无法弄清问题的确切位置。

1 个答案:

答案 0 :(得分:0)

试试这个:

<form name="cityselect" onsubmit="return redirectTo(this)">
  <select name="menu" value="GO">
    <option selected="selected">Select One</option>
    <option value="http://www.domain-one.com">London</option>
    <option value="http://www.domain-two.com">Glasgow</option>
  </select>
</form>

<script>
  function redirectTo(elem) {
    event.preventDefault();
    top.location.href = elem.firstElementChild.options[elem.firstElementChild.selectedIndex].value
  }
</script>
相关问题