2016-11-07 11 views
2

データベーステーブルの異なる行に挿入するのと同じフォーム入力名のフォームがあります。しかし、私がフォームを提出するときに、同様のフォーム入力名の入力は挿入されません。同じ入力名のフォーム入力をcodeigniterを使用してデータベース行に挿入します

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(); 

}

私が間違って何を取得していてください、私はいくつかの質問を読んでいる。ここ

は、私の見解では

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

コントローラですこれは面倒ではない私のための王。ありがとうございました!

+0

最初に忘れてしまったCIコアPHPとHTMLのようなフォームを作ってから、フォームを投稿してください。その後、ciで試してみてください –

+0

'echo $ this-> db-> last_query()' 'return'の前に。どのクエリが構築されているかを確認します。 – Akshay

+1

投稿 'skills_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; 
} 

と2番目のコントローラ機能スニペットを

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

しかし、それはデータベースに空の入力を1つ追加します。 –

+0

から来ている可能性があります。あなたは配列をプリントアウトする必要があります。しかし問題は、htmlフォームのフィールドを空のままにしておくことです。 データが設定されているかどうかにかかわらず、_get_skills_data関数のチェックを行うことがあります。 – sintakonte

関連する問題