我正在开发一款使用php的购物车,现在我坚持了下面的一些观点。需要帮助一些逻辑来执行mysql插入查询?
有喜欢的表:客户,产品,订单,order_detail
产品表:
ID |名称|数量
order_detail表:
ORDER_ID | product_id |数量
我完全用于增加产品做车,客户可以提交订单到数据库中,管理员可以删除或从后端删除订单和客户可以从前端删除订单列表或删除订单,如果下令还没有确认付款。
实施例:
“customer1表” 顺序10级的产品,订单ID是#907987899和 “产品1” customer1表订单数量= 2 “产品2” customer1表订单数量= 5等等.....
如果订购仍然没有确认,那么客户仍然可以从订购清单中删除产品,也可以删除整个订购的产品。
我现在的问题是:如果客户或管理员取消或删除订单仍然没有确认支付,那么我想从order_detail表列表返回产品数量返回到产品表。在客户提交订单时,产品数量将从产品表中减去。
这里是我的代码返回量回产品:
require '../../init.php';
require $ROOT . '/functions/basic.php';
if(isset($_POST['id']))
{
$id = htmlspecialchars($_POST['id']);
$delete = dbQuery("DELETE FROM orders WHERE order_id = '$id'");
if($delete == true)
{
//unlink($ROOT . '/upload/products/' . $image);
$select_product = dbAll("SELECT product_id, quantity FROM order_detail WHERE order_id = '$id'");
foreach($select_product as $product)
{
$quantity = $product['quantity'];
$product_id = $product['product_id'];
$return_product_quantity = dbQuery("UPDATE products SET quantity = (quantity + $quantity) WHERE product_id = $product_id");
}
if($return_product_quantity == true)
{
$delete_order_detail = dbQuery("DELETE FROM order_detail WHERE order_id = '$id'");
if($delete_order_detail == true)
{
echo "OK";
}
else
{
echo "Can't delete order detail information";
}
}
}
else
{
echo "Can't delete order row";
}
}
但查询它似乎无法正常工作,我的要求,所以请帮助我如何处理这样的逻辑来执行我的要求。
在此先感谢。
这个查询看起来很可疑:') “设定张数=(数量+ $量),其中的product_id = $ PRODUCT_ID UPDATE产品”;''为什么会出现quantity'两次你能解释一下吗? – 2015-04-05 10:14:21
这看起来好像根本没有错误处理,或者是在数据库包装类中完成的(无论哪个都是)?如果是这样,我希望你得到一些错误,告诉你什么是错误的日志文件? – arkascha 2015-04-05 10:19:43
@TimBiegeleisen数量出现两次,因为我想将order_detail中的数量添加到产品本身的数量上。 – 2015-04-05 10:51:54