2015-03-28 6 views
1

я пытаюсь вставить несколько строк одновременно, используя CodeIgniterВставка нескольких строк MySQL в CodeIgniter

мой HTML-код для просмотра CodeIgniter

 <?= form_open(base_url() . 'home/create') ?> 
      <tbody> 

       <tr> 
        <td class="col-md-1 center-block"> 
         <input type="text" name="id[]" value="1" class="form-control" /> 
        </td> 
        <td> 
         <input type="text" placeholder="enter descreption" class="form-control" name="desc[]" /> 
        </td> 
        <td class="col-md-2 center-block"> 
         <input id="space" onkeyup="sumPrice()" type="number" class="form-control" name="space[]" /> 
        </td> 
        <td> 
         <select onchange="sumPrice()" class="selectpicker price" data-live-search="true" data-width="100%" name="price[]" data-header="Select cost"> 
          <option value="5">5</option> 
          <option value="10">10</option> 
          <option value="20">20</option> 
         </select> 
        </td> 
        <td class="total_price col-md-1"> 
         <input type="number" class="form-control" name="total[]" value="1000" /> 
        </td> 
        <td> 
         <button class="btn btn-danger center-block remove-row"><span class="glyphicon glyphicon-remove"></span> Remove</button> 
        </td> 
       </tr> 
      </tbody> 
     </table> 
     <input type="submit" value="insert" class="btn btn-success" /> 
    </form> 
    <button class="btn btn-success append-row"><span class="glyphicon glyphicon-plus-sign"></span> Add new row</button> 

и я использую JQuery, чтобы вставить новую строку в таблице здесь js код

$('.append-row').click(function() { 
    $("table tbody").append 
    ('<tr><td class="col-md-1 center-block"><input type="text" name="id[]" value="' + row_id_val++ + '" class="form-control" /></td> <td><input type="text" placeholder="enter descreption" class="form-control" name="desc[]" /></td> <td class="col-md-2 center-block"><input id="space" onkeyup="sumPrice()" type="number" class="form-control" name="space[]" /></td> <td> <select onchange="sumPrice()" class="selectpicker price" data-live-search="true" data-width="100%" name="price[]" data-header="Select Sub account" onselect="sumPrice()" > <option onselect="sumPrice()" value="5">5</option> <option onselect="sumPrice()" value="10">10</option> <option onselect="sumPrice()" value="20">20</option> </select> </td> <td class="total_price col-md-1"><input type="number" class="form-control" value="" name="total[]" /></td> <td><button class="btn btn-danger center-block remove-row"><span class="glyphicon glyphicon-remove"></span> Remove</button></td></tr>'); 
    $('.selectpicker').selectpicker('refresh'); 
}); 

мой контроллер

if ($_POST) { 
    $data = array(); 
    for ($i = 0; $i < count($this->input->post('id')); $i++) { 
     $data[$i] = array(
      'row_id' => $this->input->post('id')[$i], 
      'desc' => $this->input->post('desc')[$i], 
      'space' => $this->input->post('space')[$i], 
      'price' => $this->input->post('price')[$i], 
      'total' => $this->input->post('total')[$i], 
      'code' => time() 
     ); 
    } 
    $this->Home_model->create($data); 
} 

модель

function create($data) { 
    $this->db->insert_batch('quotation', $data); 
} 

я пытался слишком много решений от StackOverflow, но ни один из них не работал

+0

, что ваш PHP версии? Если ваш PHP версии ниже 5.4 ваш код не будет работать –

+0

@ShaifulIslam версии PHP 5.4.19 – user2976078

+0

ваши представления только один массив набор ... как приходят вы ожидаете, что несколько строк будут вставлены .... – Raja

ответ

1

если ваша версия php> = 5.4, она должна работать.
Вы можете попробовать это

if ($_POST) 
    { 
     $row_ids=$this->input->post('id'); 
     $desc=$this->input->post('desc'); 
     $spaces=$this->input->post('space'); 
     $prices=$this->input->post('price'); 
     $totals=$this->input->post('total'); 
     $data = array(); 
     for ($i = 0; $i < count($this->input->post('id')); $i++) 
     { 
      $data[$i] = array(
       'row_id' => $row_ids[$i], 
       'desc' => $desc[$i], 
       'space' => $spaces[$i], 
       'price' => $prices[$i], 
       'total' => $totals[$i], 
       'code' => time() 
      ); 
     } 
     $this->Home_model->create($data); 
    } 
+0

он работает, но вставляет только одну строку – user2976078

+0

вы можете распечатать данные $ перед отправкой модели на модель? Кажется, ваш массив данных не производит должным образом или вы получаете некоторую ошибку. Если вы получите какую-либо ошибку, какую ошибку вы получаете. сообщение об ошибке. –

+0

результат печати массива перед отправкой его в модель 'Array ([0] => Array ([row_id] => 1 [desc] => test [пробел] => 10 [цена] => 5 [total] => 50 [code] => 1427544624)) ' – user2976078

3

Можете ли вы попробовать ниже данный код? Я думаю, что может возникнуть проблема с $ data.

if ($_POST) { 
     $data = array(); 
     for ($i = 0; $i < count($this->input->post('id')); $i++) { 
      $data[] = array(
       'row_id' => $this->input->post('id')[$i], 
       'desc' => $this->input->post('desc')[$i], 
       'space' => $this->input->post('space')[$i], 
       'price' => $this->input->post('price')[$i], 
       'total' => $this->input->post('total')[$i], 
       'code' => time() 
      ); 
     } 
     $this->Home_model->create($data); 
    } 
+0

Я попробовал, но не работает – user2976078

+0

owww ... получить любую ошибку во время выполнения запроса или вы можете диагностировать проблема при печати запроса? –

+0

Это дает мне сообщение: Неопределенное смещение: 1 также вставляет только одну строку в базу данных, а остальные строки пустые. Нет данных. – user2976078

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