У меня есть форма с макетом ниже в codeigniter:
<input type="text" name="product">`<input type="text" name="cost">`
Форма имеет несколько строк с одинаковыми именами ввода. Попробовали несколько предложений, таких как создание патчей и этот поток, но не работающий
Использовать массив одинаковых имен текстовых полей для пакетной вставки
Функция insert_batch
вставляет несколько данных за раз в таблицу в codeigniter
Просмотр страницы
<form action="<?=base_url('Test_c/insert_data')?>" method="post"> <div class="col-sm-12"> <input type="text" name="product[]"><input type="text" name="cost[]"> </div> <div class="col-sm-12"> <input type="text" name="product[]"><input type="text" name="cost[]"> </div> <div class="col-sm-12"> <input type="text" name="product[]"><input type="text" name="cost[]"> </div> <div class="col-sm-12"> <input type="text" name="product[]"><input type="text" name="cost[]"> </div> <div class="col-sm-12"> <input type="text" name="product[]"><input type="text" name="cost[]"> </div> <input type="submit" name="submit" value="submit"> </form>
функция контроллера
function insert_data() { $product = $this->input->post('product'); $cost = $this->input->post('cost'); $insert_array = array(); for ($i=0; $i < count($product); $i++) { $tmp = array(); $tmp['product'] = $product[$i]; $tmp['cost'] = $cost[$i]; $insert_array[] = $tmp; } $this->db->insert_batch('test', $insert_array); //echo $this->db->last_query(); }
<input type="text" name="product[]"> <input type="text" name="cost[]">
контроллер:
function insertData() { $product = $this->input->post('product'); $cost = $this->input->post('cost'); foreach($product as $key=>$val){ $data = array( 'product' =>$val, 'cost' =>$cost[$key] ); } $this->db->insert_batch('table_name', $data); }
Вам нужно создать массив сообщений так:
<input type="text" name="product[]"> <input type="text" name="cost[]">
Затем вы можете просмотреть сообщение и insert_batch или несколько обычных insert ();
Посмотреть
<input type="text" name="product[]"><input type="text" name="cost[]">
контроллер
$arrayOne = $this->input->post('product'); //array(1,2,4); $arrayTwo = $this->input->post('cost'); //array(22,44,55); $c = array_combine($arrayOne,$arrayTwo ); // output:array(1=>22,2=>44,4=>55) foreach($c as $key=>$val){ $data = array( 'product_id' => $key , 'cost' => $val ); $this->db->insert('TABLENAME', $data); }