2017-02-07 14 views
0

入力などのフォームを作成しようとしています。 3を入力し、入力に基づいてループ内に3つのフォームを生成します。誰かがこれを見て、自分のコードが正しいかどうか確認できますか?現時点では、何らかの理由でフォーム検証が即座に失敗し、私はどのように進めることができないのか分かりません。CodeIgniterが動的フォームで送信する

大人のフォームと子供のフォームがあります。両方とも別のページからの入力に依存します。

これは、私は誰かがこれで私を助けることができると思います

<?php echo form_open_multipart('Public/Details/next','class="inputform"');?> 
        <h3>Adults</h3> 
        <?php for($i=0;$i<$adults;$i++){?> 
         <input type="hidden" class="form-control" name="adult" value="<?php echo $adults;?>"> 
         <label for="inputfirstname">Firstname</label> 
         <input type="text" class="form-control" name="inputfirstname[]" placeholder="Firstname" value="<?php echo set_value('inputfirstname['.$i.'],""');?>"> 
         <!-- <div class="errormessage"><?php echo form_error('inputfirstname['.$i.']'); ?></div> --> 
         <label for="inputfirstname">Lastname</label> 
         <input type="text" class="form-control" name="inputlastname[]" placeholder="Lastname" value="<?php echo set_value('inputlastname[$i]');?>"> 
         <!-- <div class="errormessage"><?php echo form_error('inputlastname['.$i.']'); ?></div> --> 
         <label for="inputdateofbirth">Date of Birth</label> 
         <input type="date" class="form-control" name="inputdateofbirth[]" value="<?php echo set_value('inputdateofbirth[$i]');?>"> 
         <!-- <div class="errormessage"><?php echo form_error('inputdateofbirth['.$i.']'); ?></div> --> 
         <label for="inputicnumber">IC Number</label> 
         <input type="text" class="form-control" name="inputicnumber[]" placeholder="IC Number" value="<?php echo set_value('inputicnumber[$i]');?>"> 
         <!-- <div class="errormessage"><?php echo form_error('inputicnumber['.$i.']'); ?></div> --> 
         <label for="inputpassportnumber">Passport Number</label> 
         <input type="text" class="form-control" name="inputpassportnumber[]" placeholder="Passport Number" value="<?php echo set_value('inputpassportnumber[$i]');?>"> 
         <!-- <div class="errormessage"><?php echo form_error('inputpassportnumber['.$i.']'); ?></div> --> 
         <label for="inputmobilenumber">Mobile Number</label> 
         <input type="text" class="form-control" name="inputmobilenumber[]" placeholder="Mobile Number" value="<?php echo set_value('inputmobilenumber[$i]');?>"> 
         <!-- <div class="errormessage"><?php echo form_error('inputmobilenumber['.$i.']'); ?></div> --> 
         <label for="inputemail">Email</label> 
         <input type="text" class="form-control" name="inputemail[]" placeholder="Email" value="<?php echo set_value('inputemail[$i]');?>"> 
         <!-- <div class="errormessage"><?php echo form_error('inputemail['.$i.']'); ?></div> --> 
         <label for="inputconfirmemail">Confirm Email</label> 
         <input type="text" class="form-control" name="inputconfirmemail[]" placeholder="Confirm Email" value="<?php echo set_value('inputconfirmemail[$i]');?>"> 
         <!-- <div class="errormessage"><?php echo form_error('inputconfirmemail['.$i.']'); ?></div> --> 
         <label for="inputaddress1">Address</label> 
         <input type="text" class="form-control" name="inputaddress1[]" placeholder="Address 1" value="<?php echo set_value('inputaddress1[$i]');?>"> 
         <input type="text" class="form-control" name="inputaddress2[]" placeholder="Address 2" value="<?php echo set_value('inputaddress2[$i]');?>"> 
         <input type="text" class="form-control" name="inputaddress3[]" placeholder="Address 3" value="<?php echo set_value('inputaddress3[$i]');?>"> 
         <input type="text" class="form-control" name="inputaddress4[]" placeholder="Address 4" value="<?php echo set_value('inputaddress4[$i]');?>"> 
         <input type="text" class="form-control" name="inputaddress5[]" placeholder="Address 5" value="<?php echo set_value('inputaddress5[$i]');?>"> 
         <label for="inputpostcode">Postcode</label> 
         <input type="text" class="form-control" name="inputpostcode[]" placeholder="Postcode1" value="<?php echo set_value('inputpostcode[$i]');?>"> 
         <!-- <div class="errormessage"><?php echo form_error('inputpostcode['.$i.']'); ?></div> --> 
       <?php } ?> 

       <?php if($children>0){ ?> 
       <h3>Children</h3> 
       <?php for($j=0;$j<$children;$j++){ ?> 
        <input type="hidden" class="form-control" name="children" value="<?php echo $children;?>"> 
        <label for="inputchildfirstname">Firstname</label> 
        <input type="text" class="form-control" name="inputchildfirstname[]" value="<?php echo set_value('inputchildfirstname[$j]');?>" placeholder="Firstname"> 
        <label for="inputchildlastname">Lastname</label> 
        <input type="text" class="form-control" name="inputchildlastname[]" value="<?php echo set_value('inputchildlastname[$j]');?>" placeholder="Lastname"> 
        <label for="inputchilddateofbirth">Date of Birth</label> 
        <input type="date" class="form-control" name="inputchilddateofbirth[]" value="<?php echo set_value('inputchilddateofbirth[$j]');?>"> 
        <label for="inputchildpassportnumber">Passport Number</label> 
        <input type="text" class="form-control" name="inputchildpassportnumber[]" placeholder="Passport Number" value="<?php echo set_value('inputchildpassportnumber[$j]');?>"> 
        <div class="errormessage"><?php echo form_error('inputchildpassportnumber['.$j.']'); ?></div> 
       <?php }} ?> 
        <p><button type="submit" class="btn btn-primary">Next</button></p> 
        <p><a href="<?php echo site_url();?>Welcome">Cancel</a></p> 
       <?php echo form_close(); ?> 
       <p><?php echo $this->session->flashdata('Form'); ?></p> 

コントローラ

public function next(){ 
     $adultlength = $this->input->post('adults'); 
     $childrenlength = $this->input->post('children'); 
     $this->form_validation->set_error_delimiters('<p class="error">', '</p>'); 
     if($adultlength>0){ 
      for ($i=0; $i <$adultlength; $i++) { 
       $this->form_validation->set_rules('inputfirstname['.$i.']', 'Firstname', 'trim|required'); 
       $this->form_validation->set_rules('inputlastname['.$i.']', 'Lastname', 'trim|required'); 
       $this->form_validation->set_rules('inputdateofbirth['.$i.']', 'Date of Birth', 'trim|required'); 
       $this->form_validation->set_rules('inputicnumber['.$i.']', 'IC Number', 'trim|required'); 
       $this->form_validation->set_rules('inputpassportnumber['.$i.']', 'Passport Number', 'trim|required'); 
       $this->form_validation->set_rules('inputmobilenumber['.$i.']', 'Mobile Number', 'trim|required'); 
       $this->form_validation->set_rules('inputemail['.$i.']', 'Email', 'trim|required'); 
       $this->form_validation->set_rules('inputconfirmemail['.$i.']', 'Confirm Email', 'trim|required'); 

       $inputfirstname[] = $this->input->post('inputfirstname['.$i.']'); 
       $inputlastname[] = $this->input->post('inputlastname['.$i.']'); 
       $inputdateofbirth[] = $this->input->post('inputdateofbirth['.$i.']'); 
       $inputicnumber[] = $this->input->post('inputicnumber['.$i.']'); 
       $inputpassportnumber[] = $this->input->post('inputpassportnumber['.$i.']'); 
       $inputmobilenumber[] = $this->input->post('inputmobilenumber['.$i.']'); 
       $inputemail[] = $this->input->post('inputemail['.$i.']'); 
       $inputaddress1[] = $this->input->post('inputaddress1['.$i.']'); 
       $inputaddress2[] = $this->input->post('inputaddress2['.$i.']'); 
       $inputaddress3[] = $this->input->post('inputaddress3['.$i.']'); 
       $inputaddress4[] = $this->input->post('inputaddress4['.$i.']'); 
       $inputaddress5[] = $this->input->post('inputaddress5['.$i.']'); 
       $inputpostcode[] = $this->input->post('inputpostcode['.$i.']');  
      } 
     } 


     if($childrenlength>0){ 
       for($j=0;$j<$childrenlength;$j++){ 
        $this->form_validation->set_rules('inputchildpassportnumber['.$j.']', 'Passport Number', 'trim|required'); 
        $inputchildfirstname[] = $this->input->post('inputchildfirstname['.$j.']'); 
        $inputchildlastname[] = $this->input->post('inputchildlastname['.$j.']'); 
        $inputchilddateofbirth[] = $this->input->post('inputchilddateofbirth['.$j.']'); 
        $inputchildpassportnumber[] = $this->input->post('inputchildpassportnumber['.$j.']'); 
       } 
     } 

     if($this->form_validation->run()==false){ 
      $data['productdetail'] = $this->ProductsModel->getProduct($this->session->userdata('productid')); 
      $data['adults'] = $this->session->userdata('adults'); 
      $data['children'] = $this->session->userdata('children'); 
      $this->load->view('public/publicMenu/navigationLink'); 
      $this->load->view('public/publicDetails/details',$data); 
      $this->load->view('public/publicMenu/navigationJquery'); 
     }else{ 
      $transactionid = $this->generateRandomString(10); 
      if($adultlength>0){ 
       for ($i=0; $i <$adultlength; $i++) { 
        $passengerdetails[] = array(
         'firstname'=>$inputfirstname[$i], 
         'lastname'=>$inputlastname[$i], 
         'email'=>$inputemail[$i], 
         'phone'=>$inputmobilenumber[$i], 
         'accessLevel'=>'1', 
         'dateofbirth'=>$inputdateofbirth[$i], 
         'icnumber'=>$inputicnumber[$i], 
         'passportnumber'=>$inputpassportnumber[$i], 
         'address'=>$inputaddress1[$i]." ".$inputaddress1[$i]." ".$inputaddress1[$i]." ".$inputaddress1[$i]." ".$inputaddress1[$i]." ".$inputpostcode[$i], 
         'usertype'=>'adult', 
         'transactionid'=>$transactionid 
        ); 
       } 

      } 
      if($childrenlength>0){ 
        for($j=0;$j<$childrenlength;$j++){ 
         $childpassengerdetails[] = array(
          'firstname'=>$inputchildfirstname[$j], 
          'lastname'=>$inputchildlastname[$j], 
          'email'=>'', 
          'phone'=>'', 
          'accessLevel'=>'1', 
          'dateofbirth'=>$inputchilddateofbirth[$j], 
          'icnumber'=>'', 
          'passportnumber'=>$inputchildpassportnumber[$j], 
          'address'=>'', 
          'usertype'=>'child', 
          'transactionid'=>$transactionid 
         ); 
        } 

      } 
      $this->session->set_userdata('passengerdetails',json_encode($passengerdetails)); 
      $this->session->set_userdata('childpassengerdetails',json_encode($childpassengerdetails)); 
      redirect('/Public/Payment'); 
     } 
    } 

私の見解です。私は長い間それを見てきました。私は何が欠けているのか、それとも全体が間違っているのか分かりません。

答えて

0

シンプルなコントローラとビューを作成しました。

コントローラー:

public function test() 
    { 
     $view_data = array(); 
     $view_data['step'] = 1; // default step 
     //step 1 
     if($this->input->post('_step') AND $this->input->post('_step')==1) { 
      $view_data['step'] = 1; 
      $this->form_validation->set_rules('children_length', 'How many children', 'trim|required|integer|min_length[1]'); 
      $this->form_validation->set_rules('adult_length', 'How many adult', 'trim|required|integer|min_length[1]'); 

      if($this->form_validation->run()) { 
       //set variable for status 2 
       $view_data['step'] = 2; 
      } 
     } 

     //step 2 
     if($this->input->post('_step') AND $this->input->post('_step')==2) { 
      $view_data['step'] = 2; 

      $children_length = (int)$this->input->post('children_length'); 
      $adult_length = (int)$this->input->post('adult_length'); 

      //validation for childrens 
      for($i=0;$i<$children_length;$i++) { 
       $this->form_validation->set_rules('childrens['.$i.'][firstname]', 'Children '.$i.' - firstname', 'trim|required'); 
       $this->form_validation->set_rules('childrens['.$i.'][lastname]', 'Children '.$i.' - lastname', 'trim|required'); 
      } 
      //validation for adults 
      for($i=0;$i<$children_length;$i++) { 
       $this->form_validation->set_rules('childrens['.$i.'][firstname]', 'Children '.$i.' - firstname', 'trim|required'); 
       $this->form_validation->set_rules('childrens['.$i.'][lastname]', 'Children '.$i.' - lastname', 'trim|required'); 
      } 

      if($this->form_validation->run()) { 
       //set variable for status 3 
       //here save etc 
       $view_data['step'] = 3; 
      } 
     } 


     $this->load->view('/test', $view_data); 
    } 

ビュー:

<?php 

if($step==3) { 
    //step 3 - show array from step 2 
    echo '<h3>Step 3</h3>'; 
    echo '<pre>'; 
     print_r($this->input->post()); 
    echo '</pre>'; 
}elseif($step==2) { 
    //step 2 Generation form fo childrens and adults 
    echo '<h3>Step 2</h3>'; 
    echo form_open('', '', ['_step'=>2,'children_length'=>$this->input->post('children_length'),'adult_length'=>$this->input->post('adult_length')]); 
     echo '<div style="color:red">'.validation_errors().'</div>'; 

     echo '<h4>Childrens</h4>'; 
     for($i=0;$i<$this->input->post('children_length');$i++) { 
      echo form_input(['type'=>'text','name'=>'childrens['.$i.'][firstname]','value'=>set_value('childrens['.$i.'][firstname]'),'placeholder'=>'Children '.$i.' - firstname']); 
      echo form_input(['type'=>'text','name'=>'childrens['.$i.'][lastname]','value'=>set_value('childrens['.$i.'][lastname]'),'placeholder'=>'Children '.$i.' - lastname']); 
      echo '<br><br>'; 
     } 

     echo '<h4>Adults</h4>'; 
     for($i=0;$i<$this->input->post('adult_length');$i++) { 
      echo form_input(['type'=>'text','name'=>'adults['.$i.'][firstname]','value'=>set_value('adults['.$i.'][firstname]'),'placeholder'=>'Adult '.$i.' - firstname']); 
      echo form_input(['type'=>'text','name'=>'adults['.$i.'][lastname]','value'=>set_value('adults['.$i.'][lastname]'),'placeholder'=>'Adult '.$i.' - lastname']); 
      echo '<br><br>'; 
     } 
     echo form_input(['type'=>'submit','value'=>'Next (go to step 3)']); 
    echo form_close(); 
}else { 
    //step 1 How many children as adults 
    echo '<h3>Step 1</h3>'; 
    echo form_open('', '', ['_step'=>1]); 
     echo '<div style="color:red">'.validation_errors().'</div>'; 
     echo form_input(['type'=>'text','name'=>'children_length','value'=>set_value('children_length'),'placeholder'=>'How many children']); 
     echo form_input(['type'=>'text','name'=>'adult_length','value'=>set_value('adult_length'),'placeholder'=>'How many adult']); 
     echo form_input(['type'=>'submit','value'=>'Next (go to step 2)']); 
    echo form_close(); 
} 
?> 
+0

ねえ!手伝ってくれてどうもありがとう。私は何が起こったのか調べることができました。私のループには間違った名前がついています。しかし、あなたの答えは本当に私がそれを解決するのを助けました。ありがとう! – JianYA

関連する問題