2013-04-03 31 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