2016-11-07 98 views
2

我有一個具有類似表單輸入名稱的表單,我希望將其插入到數據庫表的不同行中。但是當我提交表單時,具有相似表單輸入名稱的輸入不會被插入。使用codeigniter將具有相同輸入名稱的表單輸入插入到數據庫行中

這是我的看法

<div class="row"> 

      <div class="col-xs-12"> 
      <div class="item-block"> 
       <div class="item-form"> 

       <button class="btn btn-danger btn-float btn-remove"><i class="ti-close"></i></button> 

       <div class="row"> 
        <div class="col-xs-12 col-sm-6"> 
        <div class="form-group"> 
         <input type="text" name="skills_name[]" class="form-control" placeholder="Skill name, e.g. HTML"> 
        </div> 
        </div> 

        <div class="col-xs-12 col-sm-6"> 

        <div class="form-group"> 
         <div class="input-group"> 
         <input type="text" name="skills_proficiency[]" class="form-control" placeholder="Skill proficiency, e.g. 90"> 
         <span class="input-group-addon">%</span> 
         </div> 
        </div> 

        </div> 
       </div> 

       </div> 
      </div> 
      </div> 

      <div class="col-xs-12 duplicateable-content"> 
      <div class="item-block"> 
       <div class="item-form"> 

       <button class="btn btn-danger btn-float btn-remove"><i class="ti-close"></i></button> 

       <div class="row"> 
        <div class="col-xs-12 col-sm-6"> 
        <div class="form-group"> 
         <input type="text" name="skills_name[]" class="form-control" placeholder="Skill name, e.g. HTML"> 
        </div> 
        </div> 

        <div class="col-xs-12 col-sm-6"> 

        <div class="form-group"> 
         <div class="input-group"> 
         <input type="text" name="skills_proficiency[]" class="form-control" placeholder="Skill proficiency, e.g. 90"> 
         <span class="input-group-addon">%</span> 
         </div> 
        </div> 

        </div> 
       </div> 

       </div> 
      </div> 
      </div> 

      <div class="col-xs-12 text-center"> 
      <br> 
      <button class="btn btn-primary btn-duplicator">Add experience</button> 
      </div> 


     </div> 

     </div> 
    </section> 
    <!-- END Skills --> 

控制器:

function _get_skills_data(){ 

    $data4['skills_name'] = $this->input->post('skills_name', TRUE); 
    $data4['skills_proficiency'] = $this->input->post('skills_proficiency', TRUE); 
    $session_data = $this->session->userdata('logged_in'); 
    $data4['user_id'] = $session_data['user_id']; 

    return $data4; 

} 

if ($this->form_validation->run($this) == FALSE) 
      { 
        $this->add_resume(); 
      } 
      else 
      { 

        $data4 = $this->_get_skills_data(); 


        $this->User_model->insert_resume('skills',$data4); 

        $this->session->set_flashdata('message', '<div class="alert alert-success">Resume Added</div>'); 


        redirect('user/manage_resume', 'refresh'); 
      } 

型號:

function insert_resume($table, $data){ 

$query = $this->db->insert($table, $data); 
return $this->db->insert_id(); 

}

請什麼我會得到錯誤的,我看過一些問題在這不是工作國王對我來說。謝謝!

+0

首先忘記CI嘗試使核心的PHP和HTML形式,然後張貼形式,之後嘗試ci –

+0

在模型中寫'echo $ this-> db-> last_query()'在'return'之前。查看構建了哪個查詢。 – Akshay

+1

post''skill_name []'作爲一個數組來傳遞,你需要循環這個數組並且以這種方式構建插入腳本。目前我認爲你正試圖將數組插入到數據庫中。 – Blinkydamo

回答

2

基於Blinkydamo的評論,你需要循環您的文章數據,因爲您嘗試插入這些作爲數組

嘗試這樣的事:

function _get_skills_data() 
{ 
    $arrData = array(); 
    $arrPostSkillsName = $this->input->post('skills_name', TRUE); 
    $arrPostSkillsProficiency = $this->input->post('skills_proficiency', TRUE); 
    $session_data = $this->session->userdata('logged_in'); 

    $count = count($arrPostSkillsName); 

    for($i=0;$i<$count;$i++) 
    { 
     $arrItemData = array(); 
     $arrItemData['skills_name'] = $arrPostSkillsName[$i]; 
     $arrItemData['skills_proficiency'] = $arrPostSkillsProficiency[$i]; 
     $arrItemData['user_id'] = $session_data['user_id']; 

     $arrData[] = $arrItemData; 
    } 

    return $arrData; 
} 

和你的第二個控制器功能片段

if ($this->form_validation->run($this) == FALSE) 
{ 
    $this->add_resume(); 
} 
else 
{ 
    $arrData = $this->_get_skills_data(); 
    foreach($arrData AS $arrItemData) 
    { 
     $this->User_model->insert_resume('skills',$arrItemData); 
    } 
    $this->session->set_flashdata('message', '<div class="alert alert-success">Resume Added</div>'); 
    redirect('user/manage_resume', 'refresh'); 
} 
+0

非常感謝,它的工作! –

+0

但它增加了一個額外的空輸入到數據庫中,可能來自 –

+0

我不知道 - 你必須打印數組 - 但我認爲問題在於,你將html表單中的字段留空; 也許你在_get_skills_data函數上檢查數據是否設置好 – sintakonte

相關問題