2013-03-17 1 views
0

Я хочу выбрать некоторые данные в приложении CodeIgnigher PHP из базы данных и хочу внести некоторые изменения и вставить в другую таблицу. Я хотел бы вставить столько же, сколько выбранных записей в таблицу IN. В настоящее время я получаю только одну строку, вставленную в таблицу.Опубликовать данные Несколько строк в форме в Codeigniter

Не могли бы вы указать, что делается неправильно здесь.

Мои таблицы. Out_Table (id, name ..) и In_Table (id, name, quantity ..).

Мой код модели:

<?php 

    class ShoppingListM extends CI_Model { 

    public function getData() { 
     $query = $this->db->get('products'); 
     return $query->result(); 
    } 

    function SaveForm($form_data) { 
     $this->db->insert('SLists', $form_data); 

     if ($this->db->affected_rows() == '1') { 
      return TRUE; 
     } 

     return FALSE; 
    } 

} 

?> 

View Code:

 <div class="divTable"> 

     <fieldset> 
      <!-- these will be affected by check all --> 
    <div class="divRow">Product Name | Quantity | Packages</div> 
      <div class="divRow"><input type="checkbox" size="100" class="checkall"> Check all</div> 


      <br> 

       <?php foreach ($records as $rec) { 
        ?> 

        <div class="divRow"><input type="checkbox"> 
          <input size="5" type="hidden" value="<? echo $rec->id; ?>" name="id"></input> 
          <input size="20" type="text" value="<? echo $rec->name; ?>" name="name"></input> 
          <input size="5" type="text" value="" name="quantity"></input> 
          <select name="package"> 
           <option name="case">Case</option> 
           <option name="box">Box</option> 
           <option name="box">Single Bottle</option> 
          </select> 
        </div>     
        <br> 
         <? 
        } 
        ?> 


        </fieldset> 
        </div> 
        <div><input type="submit" name="submit"/></div> 
        </form> 

Controller Код:

class ShoppingListController extends CI_Controller { 

public function index() { 
    //$data['val'] = array("test1", "test2", "test3"); 

    // $this->load->model('HomeModel'); 
    //$data['records'] = $this->HomeModel->getData(); 

    $this->load->model('ShoppingListM'); 

    $data['records'] = $this->ShoppingListM->getData(); 






    $this->form_validation->set_rules('name', 'Name', 'required|max_length[255]');   
    $this->form_validation->set_rules('qty', 'qty', '');      
    $this->form_validation->set_rules('package', 'Package', 'required|max_length[128]'); 



      if ($this->form_validation->run() == FALSE) // validation hasn't been passed 
    { 
     $this->load->view('ShoppingListV', $data); 
    } 
    else // passed validation proceed to post success logic 
    { 
     // build array for the model 

     $form_data = array(
         'name' => set_value('name'), 
         'quantity' => set_value('quantity'), 
         'package' => set_value('package') 
        ); 

     // run insert model to write data to db 

        // run insert model to write data to db 

     if ($this->ShoppingListM->SaveForm($form_data) == TRUE) // the information has therefore been successfully saved in the db 
     { 
      redirect('ShoppingListController/success'); // or whatever logic needs to occur 
     } 
     else 
     { 
     echo 'An error occurred saving your information. Please try again later'; 
     // Or whatever error handling is necessary 
     } 
    } 

ответ

0

хорошо я cannt увидеть, где находится in_table/out_table в коде у пока еще.

вставить много строк, что и хотят insert_batch

пример из док

$data = array(
    array(
     'title' => 'My title' , 
     'name' => 'My Name' , 
     'date' => 'My date' 
    ), 
    array(
     'title' => 'Another title' , 
     'name' => 'Another Name' , 
     'date' => 'Another date' 
    ) 
); 

$this->db->insert_batch('mytable', $data); 

или и может быть зациклена все ур строки из in_table и вставить их один за другим, если его maintaince работу, что и не заботятся о нескольких запросах

$data= $this->db->get('Out_table'); 
try 
{ 
    if ($data->num_rows == 0) 
     throw new Exception('table empty'); 

    foreach($data->result() as $row) 
    { 

     //modifiy the row as u want 
     $modified=$row; 

     $q=$this->db->insert('in_table',$modified); 
     if(! $q) 
      throw new Exception('failed to insert row id:'.$row->id); 
    } 
    echo $data->num_rows.'rows inserted';  
} 


catch (Exception $e) 
{ 
    echo $e->getMessage(); 
// Stop method execution with return, or use exit 
    return; 
}