我有一家使用 osCommerce 和 Dynamo 一页结账插件的商店。我向 order_products 表和 products 表添加了一个名为“drop_ship_id”的新列。在 checkout_process.php 文件下,我相信用户订购的产品将被输入到数据库中的orders_products 表中。我试图从每个订购的产品中提取 drop_ship_id 字段,并将其输入到orders_products 表中,以便稍后在结帐过程中调用它。这是我当前的代码片段:
// initialized for the email confirmation
$products_ordered = '';
$subtotal = 0;
$total_tax = 0;
for ($i=0; $i<sizeof($order->products); $i++) {
if (!in_array($payment, $suspended_payment)) {
$checkout->reduce_stock($order->products[$i]);
}
$sql_data_array = array('orders_id' => $insert_id,
'products_id' => tep_get_prid($order->products[$i]['id']),
'products_model' => $order->products[$i]['model'],
'products_name' => $order->products[$i]['name'],
'products_price' => $order->products[$i]['price'],
'final_price' => $order->products[$i]['final_price'],
'products_tax' => $order->products[$i]['tax'],
'products_quantity' => $order->products[$i]['qty'],
'drop_ship_id' => $order->products[$i]['drop_ship_id']);
tep_db_perform($database['ORDERS_PRODUCTS'], $sql_data_array);
$order_products_id = tep_db_insert_id();
不确定这是否是它所属的位置,但我无法让它使用此代码传输 drop_ship_id 字段。有谁知道让它发挥作用的好方法吗?
最佳答案
您可以使用错误日志尝试将一些信息转储到日志中:
error_log("product id: " . $order->products[$i]['products_id'] . ", dropship order id: " . $order->products[$i]['drop_ship_id']);
至于为什么该值没有被转移,我会检查 includes/classes/order.php
中的一些内容 - 创建新订单时,它会从购物车列表中复制值的产品。因此您应该确保:
购物车中的产品包含此字段(即,当从数据库检索产品并将其放入购物车时,此字段应该是 SQL 中的选择值之一)。
您可以通过在
order.php
中显式写入值来添加该字段。
稍后,当从数据库加载已保存的订单时,您应该确保将 drop_ship_id
添加到您的 SQL 查询中。
关于php - 向 osCommerce 中的订购产品添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19531629/