1

複数の国に挿入したい為替レート表があります。

これが私のフォームです

<? form_open_multipart('exchange/create')
?>
<input  type="text" name="user[0][ExchangeRateDate]"/>
<input  type="text" name="user[0][CountryId]"/>
<input  type="text" name="user[0][CashSelling]"/>
<input  type="text" name="user[0][CashBuying]"/>
<input  type="text" name="user[0][TransferSelling]"/>
<input  type="text" name="user[0][TransferBuying]"/>
<input  type="text" name="user[0][InsertDate]"/>
<input  type="text" name="user[0][Status]"/>

<input  type="text" name="user[1][ExchangeRateDate]"/>
<input  type="text" name="user[1][CountryId]"/>
<input  type="text" name="user[1][CashSelling]"/>
<input  type="text" name="user[1][CashBuying]"/>
<input  type="text" name="user[1][TransferSelling]"/>
<input  type="text" name="user[1][TransferBuying]"/>
<input  type="text" name="user[1][InsertDate]"/>
<input  type="text" name="user[1][Status]"/>
<input type="submit" value="insert exchange" class="btn"/>
</form>

彼女は現在のフォームのモデルコードです

public function set_exchange() {
    $data = array('ExchangeRateDate' => $this -> input -> post('ExchangeRateDate'),
   'CountryId' => $this -> input -> post('CountryId'),
   'CashSelling' => $this -> input -> post('CashSelling'),
   'CashBuying' => $this -> input -> post('CashBuying'),
   'TransferSelling' => $this -> input -> post('TransferSelling'),
   'TransferBuying' => $this -> input -> post('TransferBuying'),
   'InsertDate' => $this -> input -> post('InsertDate'),
 'Status' => $this -> input -> post('Status'));
   return $this -> db -> insert('exchange_rate', $data);    
    }

最後に、これはコントローラーコードです

public function create() {

        $this -> load -> helper('form');
        $this -> load -> library('form_validation');
        $data['title'] = 'Create a news exchange rate';
        $this -> form_validation -> set_rules('ExchangeRateDate', 'ExchangeRateDate', 'required');
        $this -> form_validation -> set_rules('CountryId', 'CountryId', 'required');
        $this -> form_validation -> set_rules('CashSelling', 'CashSelling', 'required');
        $this -> form_validation -> set_rules('CashBuying', 'CashBuying', 'required');
        $this -> form_validation -> set_rules('TransferSelling', 'TransferSelling', 'required');
        $this -> form_validation -> set_rules('TransferBuying', 'TransferBuying', 'required');
        $this -> form_validation -> set_rules('InsertDate', 'InsertDate', 'required');
        $this -> form_validation -> set_rules('Status', 'Status', 'required');
        $this -> all -> set_exchange();
        $this -> load -> view('admin/exchange/create');

    }

テーブル構造

ExchangeRateId
ExchangeRateDate
CountryId
CashSelling
CashBuying
TransferSelling
TransferBuying
InsertDate
Status

アイデアはすべて正常に動作するということです新しい行を挿入するとデータがデータベースに送られますが、ここでは一度に複数の行を挿入したいのですが、IDだけが重複していませんが、他は重複しているため、他のスタックオーバーフローから使用するフォームとしてしかし、それは機能していません

あなたの知識を共有する

よろしくお願いします......

4

1 に答える 1

1

モデルは次のようになります

public function set_exchange($data) {
    $this->db->insert('exchange_rate', $data);
    if ($this->db->affected_rows() == '1') return TRUE;
    return FALSE;    //error ocures
}

コントローラーは次のようになります

if(isset($_POST['insert_exchange'])) {
    //triggers only if form is sent
    $user = $_POST['user'];
    //$forms_sent = count($user); //this line is useless
    foreach ($user as $id => $index) {
        //$data['id'] = $id; //note 1 depends on your table structure
        foreach ($index as $key => $value) {
            $data[$key] = $value;
        }
        $this -> all -> set_exchange($data);
        var_dump($data); //for debug only
        unset($data);
    }
}

出力

Array ( [id] => 0 [ExchangeRateDate] => TestingValue1.1 
                  [CountryId] => TestingValue1.2 
                  [CashSelling] => TestingValue1.3 
                  [CashBuying] => TestingValue1.4 
                  [TransferSelling] => TestingValue1.5 
                  [TransferBuying] => TestingValue1.6 
                  [InsertDate] => TestingValue1.7 
                  [Status] => TestingValue1.8 ) 

Array ( [id] => 1 [ExchangeRateDate] => TestingValue2.1 
                  [CountryId] => TestingValue2.2 
                  [CashSelling] => TestingValue2.3 
                  [CashBuying] => TestingValue2.4 
                  [TransferSelling] => TestingValue2.5 
                  [TransferBuying] => TestingValue2.6 
                  [InsertDate] => TestingValue2.7 
                  [Status] => TestingValue2.8 )

HTML
<?= form_open_multipart('exchange/create')?> EDIT -等号
または_
<?php echo form_open_multipart('exchange/create');?>

<input type="submit" name="insert_exchange" value="insert exchange" class="btn"/>

注1: テーブルの構造によって異なりますが、これに似ていると思います id | ExchangeRateDate | CountryId | CashSelling ...。したがって、挿入にはIDが必要です:)

補足:
今後は、すべてのモデルに次のようcustomer_model.phpに、ビューに次のように名前を付けることをお勧めしますcustomer_view

于 2013-05-30T14:01:04.957 に答える