我们在销售产品后如何编写代码以更新库存

时间:2014-06-29 06:18:41

标签: mysql

我已为我的sales_invoice.php

编写了以下代码
           if(isset($_POST['submit1'])){

// $cat_array = $_POST['category_name'];

// $qua_array = $_POST['quantity'];

 //$mrp_array = $_POST['mrp'];

 //$vat_array = $_POST['vat'];

// print_r($_POST);

if(!empty($_POST['item_name']) && is_array($_POST['item_name'])){

    $name_array =$_POST['item_name'];
    //print_r($name_array);
 for($j=0; $j< count($name_array);$j++){

$name = mysql_real_escape_string($name_array[$j]);
//echo $name;
//$n = explode('/',$name);

 $sql = "select quantity from purchase_stock where item_name = '$name'";  
// echo $sql;

$res = mysql_query($sql) or die(mysql_error());

$num_rows = mysql_num_rows($res);

if($num_rows <=0){

echo "<b>not in stock</b>";

exit();

}
else

continue;

}
}
 $sql = "insert into material_inv set order_date='$new_date', due_date='$new_date1', dealer='".$_POST['dealer']."', customer='".$_POST['customer']."'";

// echo $sql;



 $res = mysql_query($sql) or die(mysql_error());

 if($res == true){

echo "sales invoice created";
 }
 else
 {
 echo "error";
 }
 $myid = mysql_insert_id();

 $sales_id = $myid;
 //display_item();

// print_r($_POST);

if (!empty($_POST['category_name']) && !empty($_POST['item_name']) && !empty($_POST['quantity']) && !empty($_POST['mrp']) && !empty($_POST['vat']) &&
   is_array($_POST['category_name']) && is_array($_POST['item_name']) && is_array($_POST['quantity']) && is_array($_POST['mrp']) && is_array($_POST['vat'])){


  // echo 'start';
 $name_array = $_POST['item_name'];

 $cat_array = $_POST['category_name'];
 $qua_array = $_POST['quantity'];
 $mrp_array = $_POST['mrp'];
 $vat_array = $_POST['vat'];
 //print_r($mrp_array);

  for ($i = 0; $i < count($name_array); $i++) {

        $name = mysql_real_escape_string($name_array[$i]);

        $cat = mysql_real_escape_string($cat_array[$i]);

        $q = mysql_real_escape_string($qua_array[$i]);

        $mrp = mysql_real_escape_string($mrp_array[$i]);

        //echo $mrp;

        $vat = mysql_real_escape_string($vat_array[$i]);

       // mysql_query("INSERT INTO users (name, age) VALUES ('$name', '$age')");

      $sql ="Insert into material_items SET category_name='$cat', item_name='$name', quantity='$q',
       mrp='$mrp', vat='$vat', inv_id ='$sales_id'";

// echo $sql;

       $res = mysql_query($sql) or die(mysql_error());

       $sql1 = "Update stock set quantity=quantity -'$q' where item_name='$name'";
       $res1 = mysql_query($sql1) or die(mysql_error());
       echo "stock updated and invoice created";
    }  


} 
 } 

我首先检查了purchase_stock表中是否存在项目。 (在创建采购订单后,项目将插入purchase_stock表中)。然后我插入出售的sales表数量。然后我写查询来更新stock表。

我的问题是,如果最初没有项目,我会为stock表写一个插入查询吗?它在逻辑上是否正确?或者我应该保留相同的库存表来更新购买和销售交易后的数量和项目吗?

1 个答案:

答案 0 :(得分:1)

以下是存储过程语法的示例

DELIMITER //
CREATE PROCEDURE GetProduct(IN param_ProductID INT)
    BEGIN
        SELECT * 
        FROM Products
        WHERE ProductID = param_ProductID;

    END //
DELIMITER ;

这就是你从php中调用它的方式:

$mysqli->query("CALL GetProduct(".$param_ProductID.")");

关于您插入产品的问题, 你需要执行UPSERT(如果不存在则插入并且如果存在则更新) 这是一个如何做到的例子: PHP / MySQL : Insert if doesnt exist else update

shimon:)