2013-04-03 32 views
1

我剛剛看到一些來自opencart的擴展,從產品列表頁面更新產品,我試過了我的opencart項目,intresting ...現在我開始爲我的開發一個新的擴展opencart項目是:插入批量產品到管理...這可以添加多達10個產品一次,填寫產品表格後點擊Save按鈕這10個產品可以存儲到數據庫...每個產品形式只有5個以下表單域,Opencart:插入散裝產品,product_id不唯一

  • 價格
  • 模型
  • 狀態

我可以使用Opencart的爲以後添加額外的細節/選項/說明默認產品編輯頁面,而當插入此散裝產品僅3下列表格與我的查詢連接,

  • 產品
  • PRODUCT_DESCRIPTION
  • product_to_store

我已經嘗試了一些代碼,我的問題是,當我點擊保存按鈕表productproduct_description數據插入功能的成功,但product_id沒有從上述兩表中是唯一的,因爲如果例如productproduct_id = 125然後product_descriptionproduct_id = 5,我需要這3個表product_id必須像我們默認的opencart插入工作一樣獨特...任何想法.. ??

什麼我想在這裏....

<input type="text" name="product_description[<?php echo $language['language_id']; ?>][name]" value="<?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['name'] : ''; ?>" /> 
<input type="text" name="model" value="" /> 
<input type="text" name="quantity" value="" /> 
<input type="text" name="price" value="" /> 
<select name="stock_status_id"> 
<?php foreach ($stock_statuses as $stock_status) { ?> 
<?php if ($stock_status['stock_status_id'] == $stock_status_id) { ?> 
<option value="<?php echo $stock_status['stock_status_id']; ?>" selected="selected"><?php echo $stock_status['name']; ?></option> 
<?php } else { ?> 
<option value="<?php echo $stock_status['stock_status_id']; ?>"><?php echo $stock_status['name']; ?></option> 
<?php } ?> 
<?php } ?> 
</select> 

控制器

public function simple_pu() { 
    $this->load->language('catalog/product'); 

    $this->document->setTitle($this->language->get('heading_title')); 

    $this->load->model('catalog/product'); 

    if (isset($this->request->post['selected']) && $this->validateSimplePu()) { 
     $url = ''; 

     foreach ($this->request->post['selected'] as $product_id) { 

     $price_str = $product_id.'_price'; 
     $quantity_str = $product_id.'_quantity'; 
     $model_str = $product_id.'_model'; 
     $name_str = $product_id.'_name'; 
     $status_str = $product_id.'_status'; 

     $price = $this->request->post[$price_str]; 
     $quantity = $this->request->post[$quantity_str]; 
     $model = $this->request->post[$model_str]; 
     $name = $this->request->post[$name_str]; 
     $status = $this->request->post[$status_str]; 

     $su_data = array('price' => $price, 'quantity' => $quantity, 'model' => $model, 'name' => $name, 'status' => $status); 
     $this->model_catalog_product->editPrices($product_id, $su_data); 
     } 

     $this->redirect($this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, 'SSL')); 
    } 
    $this->getListbulk(); 
} 

型號

public function addBulkproduct($product_id, $su_data) {  
    if (isset($su_data['product'])) { 
     $this->db->query("INSERT INTO " . DB_PREFIX . "product SET price = '" . $this->db->escape($su_data['price']) . "', model = '" . $this->db->escape($su_data['model']) . "', quantity = '" . $this->db->escape($su_data['quantity']) . "', student_id = '" . (int)$student_id . "', date_added = NOW()"); 
    } 

    if (isset($su_data['product_description'])) { 
     $this->db->query("UPDATE " . DB_PREFIX . "product_description SET name = '" . $this->db->escape($su_data['name']) . "' WHERE product_id = '" . (int)$product_id . "'"); 
    } 
} 

多數民衆贊成.... 上面的代碼只是一個結構如果你知道有關我的問題的任何擴展,你可以建議我...

感謝...

回答

1

你需要更新你的模型。檢查/admin/model/catalog/product.php和方法addProduct() - 產品插入後,您需要檢索$product_id,所以在你的模型應該是這樣的:

public function addBulkproduct($su_data) {  
    if (isset($su_data['product'])) { 
     $this->db->query("INSERT INTO " . DB_PREFIX . "product SET price = '" . $this->db->escape($su_data['price']) . "', model = '" . $this->db->escape($su_data['model']) . "', quantity = '" . $this->db->escape($su_data['quantity']) . "', student_id = '" . (int)$student_id . "', date_added = NOW()"); 

     $product_id = $this->db->getLastId(); 

     // INSERT INTO PRODUCT TO STORE 
     $this->db->query("INSERT INTO " . DB_PREFIX . "product_store (store_id, product_id) SELECT store_id, " . (int)$product_id . " FROM " . DB_PREFIX . "store"); 

     if (isset($su_data['product_description'])) { 
      $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET name = '" . $this->db->escape($su_data['name']) . "', product_id = '" . (int)$product_id . "'"); 
     } 
    } 
} 

注意,你是不是傳遞$product_id作爲方法參數再次 - 產品被插入,新的ID被生成並且這個ID被存儲。此外,產品說明不更新,但也插入爲新的!產品說明僅在插入產品時存儲 - 即使沒有產品數據也無法存儲產品說明...

而且您還應該爲產品說明行設置language_id

+0

@shadyyx ...你是對的...我只是想念它$ product_id = $ this-> db-> getLastId();謝謝你的回答,它的工作現在 – mans

+0

我上面的問題,我已經試過做的一切,成功......但仍然沒有更多的想法插入product_id存儲表,我的opencart有兩個商店也id = 0,id = 2 ...任何想法。?感謝 – mans

+0

,同時添加新的批量產品,您必須獲取所有商店ID並將product_id鏈接store_id <-> product_id存儲到'product_store'表......與'/ admin/model/catalog/product中的方法相同。 php'和方法'addProduct()'。 – shadyyx