Добавление новой колонки в заказанные товары в osCommerce

У меня есть магазин, использующий osCommerce с надстройкой Dynamo для оформления заказа на одну страницу. Я добавил новый столбец под названием «drop_ship_id» в таблицу orders_products и таблицу products. В файле 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 с помощью этого кода. Кто-нибудь знает хороший способ заставить это работать?


person Jack Sniper    schedule 23.10.2013    source источник
comment
добавьте print_r($order->products[$i]); в цикл, чтобы проверить, есть ли данные здесь   -  person Iłya Bursov    schedule 23.10.2013
comment
Единственная проблема в том, что я не смогу увидеть, что напечатано, потому что этот файл используется только для обработки всего, что находится на панели загрузки.   -  person Jack Sniper    schedule 23.10.2013
comment
затем добавьте die(); и используйте инструменты разработчика браузера - вы увидите вывод, наше использование регистрируется в файле   -  person Iłya Bursov    schedule 23.10.2013


Ответы (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.

И позже, при загрузке сохраненного заказа из базы данных, вы должны убедиться, что добавили drop_ship_id в свой SQL-запрос.

person Numbat    schedule 05.01.2014