2013-05-30 1 views
1

У меня есть таблица обменных курсов, которую я хочу вставить для более чем одной страны.Как вставить несколько строк в один submit на codeigniter

это моя форма

<? 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);  
    } 

и в конце концов, это Controller кодовая

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 не дублировать, а другие являются, так как моей формой я использую от другого застрявшего переполнения, но он не работает

поделиться своими знаниями

рег ОРДС заранее ......

+0

Можете ли вы поделиться тем, что выбирает/вставляет вашу модель? Я имею в виду включить профилировщик (в конструкторе '$ this-> output-> enable_profiler (TRUE);') спасибо. Взгляните на пакетную вставку в этом справочном руководстве http://ellislab.com/codeigniter/user-guide/database/active_record.html # insert И в конце концов я не вижу вопросительного знака в вашем вопросе :) – Kyslik

+0

@ Kyslik, да, ваше право mvc отлично работает, но вопрос в том, что я хочу вставить более одной строки, те же имена компланов, желаю, чтобы я мог бы очистить мой вопрос. –

+0

Пожалуйста, сделайте небольшой пример с (2 столбцами) в комментариях, чего вы пытаетесь достичь. скажем, у нас есть структура таблицы следующим образом: 'id' | 'name' после отправки формы есть два набора данных (для' user [0] 'и для' user [1] 'right? – Kyslik

ответ

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"/>

Note1: зависит от структуры вашей таблицы я предполагаю, что он похож на этот id | ExchangeRateDate | CountryId | CashSelling ... и т. Д., Поэтому идентификатор должен иметь вставку :)

Sidenote:
На будущее я рекомендую называть все модели следующим образом customer_model.php, взгляды следующим customer_view.

+0

жаль, что он не работает здесь, на моем собственном MVC только одна строка вставляет не другие, если вы просто редактируете мой MVC, так будет здорово, спасибо –

+0

вы можете [изменить] свой вопрос и добавить структуру таблицы? Также мне нужно увидеть вывод профилировщика, поместите эту строку '$ this-> output-> enable_profiler (TRUE);' где-нибудь в вашем контроллере, запустите скрипт, как обычно, и прокрутите вниз и посмотрите «QUATIES DATABASE», скопируйте его здесь где-нибудь (желательно в вашем вопросе) – Kyslik

+1

Надеюсь, вы понимаете, что делает контроллер _my_, он захватывает все переменные '$ _POST' в один массив с именем' $ user' (как вы можете видеть его размер x * x), для каждого 'user [id ] 'он создает переменную' $ data', которая отправляется модели. Невозможно отредактировать ваш контроллер в соответствии с вашими потребностями (только жестко запрограммированный), пожалуйста, попробуйте понять, что мой код пытается эхо и отлаживать, чтобы вы хорошо это понимали. – Kyslik

Смежные вопросы