2017-06-12 3 views
1

現在、私は現在航空会社の予約を行っています。フィールドナンバーがある。あなたがそれまでに入力したことは、何枚のチケットが与えられるかを判断するのに使用されます。また、私は別のページでそれを使用できるようにセッションも行います。利用可能なフライトを選択した後配列を使って保存するには? codeigniter

例:私は乗客のうち2人を乗せません。チケットが2枚あります。チケットのフィールドは次のとおりです:pass_type(大人、上級、子供)、名前、誕生日、性別

注:explode(); - explodeは、/、(最初のデリミタ)を見つけたら、それを正しく分けることを意味しますか?私の場合がありますノーカンマ、/またはダッシュ

私は、これは結果であるのvar_dumpしようとすると:

array(6) { 
    [0]=> 
    array(2) { 
    [0]=> 
    string(14) "Senior Citizen" 
    [1]=> 
    string(14) "Senior Citizen" 
    } 
    [1]=> 
    array(2) { 
    [0]=> 
    string(1) "X" 
    [1]=> 
    string(1) "X" 
    } 
    [2]=> 
    array(2) { 
    [0]=> 
    string(2) "XX" 
    [1]=> 
    string(2) "XX" 
    } 
    [3]=> 
    array(2) { 
    [0]=> 
    string(3) "XXX" 
    [1]=> 
    string(3) "XXX" 
    } 
    [4]=> 
    array(2) { 
    [0]=> 
    string(10) "1995-10-05" 
    [1]=> 
    string(10) "1995-10-05" 
    } 
    [5]=> 
    array(2) { 
    [0]=> 
    string(4) "Male" 
    [1]=> 
    string(4) "Male" 
    } 
} 

コントローラ

public function tickp() 
    { 
     $this->form_validation->set_error_delimiters('<div class="alert alert-danger" role="alert">', '</div>'); 
     $this->form_validation->set_rules('pass_type[]', 'Traveler', 'required|trim'); 
     $this->form_validation->set_rules('t_fname[]', 'First Name', 'required|trim'); 
     $this->form_validation->set_rules('t_mname[]', 'Middle Name', 'required|trim'); 
     $this->form_validation->set_rules('t_lname[]', 'Last Name', 'required|trim'); 
     $this->form_validation->set_rules('t_bday[]', 'Birthday', 'required|trim'); 
     $this->form_validation->set_rules('t_gender[]', 'Gender', 'required|trim'); 
     if ($this->form_validation->run() == FALSE) 
     { 
      $this->selected_flight(); 

     } 
     else 
     { 
      $traveler_info = array(
       $pass_type = $_POST['pass_type'], 
       $t_fname = $_POST['t_fname'], 
       $t_mname = $_POST['t_mname'], 
       $t_lname = $_POST['t_lname'], 
       $t_bday = $_POST['t_bday'], 
       $t_gender = $_POST['t_gender'], 
       ); 


      echo "<pre>"; 
      var_dump($traveler_info);die; 

      echo "</pre>"; 

      $this->CrudModel->insert('ticket',$traveler_info); 
     } 

    } 

ビュー

<form method="post" action="<?= base_url() . 'User/tickp' ?>"> 
         <?php for ($i = 0; $i < $this->session->userdata('pass_num'); $i++) { ?> 
        <!-- Code insert end--> 
          <div class="divTableRow"> 
           <!-- Code replace--> 
           <div class="divTableCell"> 
           <?= validation_errors();?> 
            Traveler<br> 
            <select name="pass_type[]" id="pass_type[]"> 
             <option value="---" selected disabled>---</option> 
             <option value="Senior Citizen">Senior Citizen</option> 
             <option value="Adult">Adult</option> 
             <option value="Child">Child</option> 
            </select> 
           </div> 
           <div class="divTableCell">First Name<br> <input type="text" name="t_fname[]" id="t_fname[]"></div> 
           <div class="divTableCell">Middle Name <br> <input type="text" name="t_mname[]" id="t_mname[]"></div> 
           <div class="divTableCell">Last Name <br> <input type="text" name="t_lname[]" id="t_lname[]"></div> 
           <div class="divTableCell"> 
            Date of Birth <br> 
            <input type="date" name="t_bday[]" id="t_bday[]"> 
           </div> 
           <div class="divTableCell"> 
            Gender<br> 
            <select id="t_gender[]" name="t_gender[]"> 
           <!-- Code replace end--> 
             <option value="Male">Male</option> 
             <option value="Female">Female</option> 
            </select> 
           </div> 
          </div> 
        <!-- Code insert--> 

         <?php } ?> 
         <button type="submit" class="booksend">BOOK</button> 
         </form> 
+0

データベースがありますか?すでにテーブルと関係を設計しましたか? – Tpojka

答えて

1

これは簡単ですアレイを構築するには、db->batch_insert()に受け入れられる構造を使用する必要があります。それは、各挿入が実行されるためにfield_names => field_valuesの連想配列を必要とします。

//add a sub-array to $traveler_info for each 'pass_type' 
for($i = 0; $i < count($_POST['pass_type']); $i++) 
{ 
    $traveler_info[] = array(
     `pass_type` => $_POST['pass_type'][$i], 
     't_fname' => $_POST['t_fname'][$i], 
     't_mname' => $_POST['t_mname'][$i], 
     't_lname' => $_POST['t_lname'][$i], 
     't_bday' => $_POST['t_bday'][$i], 
     't_gender' => $_POST['t_gender'][$i], 
    ); 
} 
$this->db->insert_batch('mytable', $traveler_info); 
関連する問題