2016-10-27 9 views
0

データベースの情報をホームページのドロップダウンリストに入力しています。私は、それぞれの列名 "id"と "bankname"を持つ "banks"というテーブルを持っています。私はまた、それぞれのカラム名 "id"、 "bankbranch"、 "bank"を持つ "bankbranches"という別のテーブルを持っています。銀行支店の「銀行」列には「テーブル」と同じ「ID」があります。モデルのクエリを実行して、その前に銀行のドロップダウンリストの選択に基づいて銀行支店をポップアップしたいと考えています。これまでのところ、私のモデルに私が持っている:CodeIgniterを使用して別のクエリに基づくクエリを実行する

 function getBank() 
     { 
      $query = $this->db->query('SELECT id,bankname FROM banks'); 
      return $query->result_array(); 
     } 
     function getBankBranch() 
     { 
      $query = $this->db->query('SELECT id,bankbranch FROM bankbranches'); 
      return $query->result_array(); 

しかし、銀行の支店は、私のデータベース内のすべての銀行支店を一覧表示されるドロップダウン。私は、ユーザーが銀行のドロップダウンを選択したことに基づいて、銀行支店のドロップダウンリストを入力する必要があります。私は本当に手の込んだことをしようとしてい

 public function index() 
     { 
      $this->load->helper('form'); 
      $data['cities'] = $this->site_model->getCity(); 
      $data['modes'] = $this->site_model->getPaymentMode(); 
      $data['banks'] = $this->site_model->getBank(); 
      $data['bankbranch'] = $this->site_model->getBankBranch(); 
      $data['categories'] = $this->site_model->getCategories(); 
      $data['staffs'] = $this->site_model->getStaff(); 

      $this->load->view('supplier_add',$data); 
     } 

 <label>Bank</label> 
       <select name="banks" id="banks"> 
       <option value="">--Please select--</option> 
       <?php 
       foreach($banks as $bank) 
       { 
       echo '<option value="'.$bank['id'].'">'.$bank['bankname'].'</option>'; 

       } 
       ?> 
     </select> <br/> 

     <label>Bank Branch</label> 
       <select name="bankbranches" id="bankbranches"> 
       <option value=""></option> 
       <?php 
       foreach($bankbranch as $branch) 
       { 
        echo '<option value="'.$branch['id'].'">'.$branch['bankbranch'].'</option>'; 
       } 
       ?> 
     </select> <br/> 

はここに私のコントローラである:ここに私の見解です。

答えて

1

あなたが銀行を選択したときに枝を取得するjQueryとAJAXを使用することができます。あなたのビューで

: -

<label>Bank</label> 
<select name="banks" id="banks"> 
    <option value="">--Please select--</option> 
    <?php foreach($banks as $bank) { 
     echo '<option value="'.$bank['id'].'">'.$bank['bankname'].'</option>'; 
    } ?> 
</select><br/> 

<label>Bank Branch</label> 
<select name="bankbranches" id="bankbranches"> 
    <option value=""></option> 
</select> <br/> 

<script type= text/javascript> 
    $('#banks').on('change', function() { 
     var bank = $(this).val(); 
     $.ajax({ 
      type: 'post', 
      url: '<?php echo base_url('controller/get_branches'); ?>, //set your controller name here 
      data: { bank_id : bank }, 
      success: function (response) { 
       $('#bankbranches').html(response); 
      } 
     }); 
    }); 
</script> 

お使いのコントローラで: - :不明な列 '$ bank_id' で

public function index() 
{ 
    $this->load->helper('form'); 
    $data['cities'] = $this->site_model->getCity(); 
    $data['modes'] = $this->site_model->getPaymentMode(); 
    $data['banks'] = $this->site_model->getBank(); 
    $data['categories'] = $this->site_model->getCategories(); 
    $data['staffs'] = $this->site_model->getStaff(); 

    $this->load->view('supplier_add',$data); 
} 

public function get_branches() 
{ 
    $bank_id = $this->input->post('bank_id'); 
    $bankbranch = $this->site_model->getBankBranch($bank_id); 
    foreach($bankbranch as $branch) { 
     echo '<option value="'.$branch['id'].'">'.$branch['bankbranch'].'</option>'; 
    } 
} 

あなたのモデルでは、私はこのエラーを取得しています

function getBankBranch($bank_id) 
{ 
    $query = $this->db->query('SELECT id,bankbranch FROM bankbranches WHERE bank='.$bank_id); 
    return $query->result_array(); 
} 
+0

私は "未定義の変数bank_id"のエラーが発生しています....私は、この行を考えることができます:$ query = $ this-> db-> query( 'SELECT id、bankbranch FROM bankbranches where bank ='。 $ bank_id); $ query = $ this-> db-> query( 'SELECT id、bankbranch FROM bank =どこの銀行= "$ bank_id");列名はbank_id?または? – ALFIE

+0

関数のパラメータbank_id 'getBankBranch($ bank_id)'を追加していない可能性があります。 – noufalcep

+0

はい、ありがとうございます。私はその部分を見逃していたし、それを修正した後、銀行支店のドロップダウンはまだ空です。エラーはありません – ALFIE

1

モデルでは、getBankBranch関数でパラメータを追加し、パラメータ名は$bank_idです。次に、SQLクエリに条件を追加します。モデルで

<?php 
function getBankBranch($bank_id){ 
    $query = $this->db->query("SELECT id,bankbranch FROM bankbranches where bank = '$bank_id'"); 
    return $query->result_array(); 
} 
?> 

は、あなたのコントローラBankBranchで新しいメソッドを追加します。このメソッドは分岐名bank_idを賢明に取得します。コントローラーで

<?php 
public function BankBranch() { 
    $this->load->helper('form'); 
    if ($this->input->is_ajax_request()) { 
     $bank_id = $this->input->post('bank_id'); 
     $bankbranch = $this->site_model->getBankBranch($bank_id); 

     echo '<option value=""></option>'; 
     foreach($bankbranch as $branch) 
     { 
      echo '<option value="'.$branch['id'].'">'.$branch['bankbranch'].'</option>'; 
     } 
    } 
} 
?> 

閲覧ページ:

<label>Bank</label> 
     <select name="banks" id="banks"> 
     <option value="">--Please select--</option> 
     <?php 
     foreach($banks as $bank) 
     { 
     echo '<option value="'.$bank['id'].'">'.$bank['bankname'].'</option>'; 

     } 
     ?> 
</select> <br/> 

<label>Bank Branch</label> 
<select name="bankbranches" id="bankbranches"> 

</select> 

最後にあなたはjqueryのを使用し、AJAX Requestを使用して、コントローラからあなたBankBranch()メソッドを呼び出すことができます。スクリプト内の

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 

<script> 
jQuery(document).ready(function ($) { 
    $('#banks').on('change', function (e) { 
     e.preventDefault(); 
     var bank_id = $(this).val(); 

     var base_url = "<?php base_url(); ?>"; 

     $.ajax({ 
      url: base_url+"your_controller/BankBranch", // Url to which the request is send 
      type: "POST", // Type of request to be send, called as method 
      data: {bank_id:bank_id}, // Data sent to server, a set of key/value pairs representing form fields and values 
     }).done(function (data) { 
      $("#bankbranches").html(data);    
     }).fail(function (data) { 
      console.log('failed'); 
     }); 
    }); 
}(jQuery)); 
</script> 
+0

'where clause'テーブル "bankbranches"のカラムは "id"、 "bankbranch"、 "bank"です。 '$ bank_id'を '$ bank'に変更する必要がありますか?列が '銀行' – ALFIE

+0

なので、あなたの 'bankbranches'テーブルの列名は' id'、 'bankbranch'、' bank'です。右? –

+0

あなたは 'bank'カラムにどのデータを保存していますか? –

関連する問題