2012-03-28 12 views
2

Opencart製品の挿入/追加フォームの独自のタブにカスタムファイル入力フィールドを追加して、csvファイルをmysqlデータベースにアップロードする必要があります。ビューファイルにタブ/フィールドを追加し、言語ファイルを更新しましたが、アップロードされたCSVからデータベーステーブルにデータを渡すために、コントローラで正確に何をする必要があるのか​​は不明です。製品挿入フォームに新しい入力フィールドを追加するOpencart

product_pinsテーブル:

pin_id (AI) | pin_product_id | pin_pin_number 

csvファイルのデータ(例):私はこれまでのところだ

342353535345 
345345346346 
235434534634 

コントローラadmin/controller/catalog/product.php(ライン807周り):

if (isset($this->request->post['product_pins'])) { 
    $this->data['product_pins'] = is_uploaded_file($this->request->post['product_pins']); 
} else { 
    $this->data['product_pins'] = ''; 
} 

モデルadmin/model/catalog/product.php(7行目の周り):

if (isset($this->data['product_pins'])) { 
    $handle = fopen($this->data['product_pins'], "r"); 
    while (($pins = fgetcsv($handle, 1000, ",")) !== false) { 
     foreach ($pins as $pin) { 
      $this->db->query("INSERT INTO " . DB_PREFIX . "product_pins SET pin_product_id = '" . (int)$product_id . "', pin_pin_number = '" . $this->db->escape($pin) . "'"); 
     } 
    } 
    fclose($handle); 
} 

私は任意の助けをいただければ幸いです。

+0

こんにちは、opencartのフィールド名に大きなトリックがないので、これは何か簡単なことです。 – Jonathan

+0

エラーが発生しますか?入力しようとするとどうなりますか? – Cleverbot

答えて

1

まず、CSV処理部分はモデルクラスではなくコントローラ内にある必要があります。モデル(右のMVCと言えば)は、データを取得または設定し、コントローラに渡すか、コントローラーから渡すだけで、フロントエンドビュー(テンプレート)を操作および制御し、フロントエンドビュー(テンプレート)に転送または取得する必要があります。

第2に:OpenCartで提出されたファイルは$this->request->files配列に存在します。

最後に、方法is_uploaded_file()booleanの値を返します。したがって、booleanを解析して、ファイルハンドルを作成する方法がわかりません。

だから、見てみましょう...下記のコードを試してみてください。

コントローラー:

if (is_uploaded_file($this->request->files['product_pins']['tmp_name'])) { 
    $handle = fopen($this->request->files['product_pins']['tmp_name'], "r"); 
    while (($pins = fgetcsv($handle, 50, ",")) !== false) { // If we know there is only a 10 chars PIN per line it is better to lower the expected line length to lower the memory consumption... 
     $this->data['product_pins'][] = $pins; // there is only one PIN per line 
    } 
    fclose($handle); 
} else { 
    $this->data['product_pins'] = array(); 
} 

今、あなたはCSVファイルからのすべてのピンが$this->data['product_pins']配列に追加した(はずです) - とあなたは、モデルに$this->dataを渡していると仮定すると、それは、このコードが含まれている必要があります。

モデル:

if (!empty($this->data['product_pins'])) { 
    foreach ($this->data['product_pins'] as $pin) { 
     $this->db->query("INSERT INTO " . DB_PREFIX . "product_pins SET pin_product_id = '" . (int)$product_id . "', pin_pin_number = '" . $this->db->escape($pin) . "'"); 
    } 
} 

こんにちは、これは役に立ちます...

関連する問題