我正在从数据库填充信息到我的主页上的下拉列表。我有一个名为"banks"的表,其各自的列名为"id"answers"bankname"。我还有另一个名为"bankbranches"的表,其各自的列名为"id"、"bankbranch"answers"bank"。银行分行中的"bank"列与"table"具有相同的"id"。我想在我的模型中运行一个查询,根据它前面的银行下拉列表的选择填充银行分支。到目前为止,在我的模型中我有:
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();
但是银行分支下拉列表列出了我数据库中的所有银行分支。我希望根据用户选择的银行下拉列表填充银行分支机构的下拉列表。以下是我的观点:
<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/>
这是我的控制器:
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);
}
我已经尽力详细说明了。
您可以使用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>
在你的控制器中:-
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();
}
在您的模型中添加getBankBranch
函数的参数,参数名称为$bank_id
,然后在sql查询中添加条件。
In Model:
<?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
明智。
In Controller:
<?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()
方法。
In Script:
<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>