在osCommerce中向已订购产品添加新列

时间:2013-10-23 02:18:46

标签: php mysql sql checkout oscommerce

我有一个商店使用osCommerce与Dynamo一页结帐插件。我在orders_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字段。有没有人知道让这个工作的好方法?

1 个答案:

答案 0 :(得分:1)

您可以使用错误日志尝试将一些信息转储到日志中:

error_log("product id: " . $order->products[$i]['products_id'] . ", dropship order id: " . $order->products[$i]['drop_ship_id']);

至于价值未被转移的原因,我会检查includes/classes/order.php中的一些内容 - 在创建新订单时,它会复制购物车产品列表中的值。所以你应该确保:

  1. 购物车中的产品包含此字段(即,当从数据库中检索产品并将其放入购物车时,此字段应为SQL中的选择值之一)。

  2. 之后通过在order.php内明确写入值来添加字段。

  3. 稍后,当从数据库加载已保存的订单时,应确保将drop_ship_id添加到SQL查询中。