在 Codeigniter 中填充动态下拉列表
Posted
技术标签:
【中文标题】在 Codeigniter 中填充动态下拉列表【英文标题】:Populate Dynamic Dropdowns List in Codeigniter 【发布时间】:2016-10-17 21:18:57 【问题描述】:数据库包括艺术、科学和 IT 等组。通过选择一个组第二个动态下拉列表将显示与组相关的主题。 这是我的观点
<?php include('admin_header.php'); ?>
<body id="page-wrapper">
<div class="container-fluid">
<h1 class="text-center">Enter Courses</h1>
<hr>
</div>
<?php if($feedback = $this->session->flashdata('feedback')):
$feedback_class = $this->session->flashdata('feedback_class');
?>
<div class="col-lg-6 col-lg-offset-3">
<div class="alert alert-dismissible <?= $feedback_class ?>">
<button type="button" class="close" data-dismiss="alert">×</button>
<p><?= $feedback ?></p>
</div>
</div>
<?php endif; ?>
<div class="cotainer-fluid">
<div class="col-lg-6 col-lg-offset-3">
<?php echo form_open('courses/input',['class'=>'form-group']); ?>
<br>
<?php echo form_input(['name'=>'rollno','class'=>'form-control','placeholder'=>'Enter Student ROll NO']); ?>
<br>
<select name="group" class="form-control" onchange="/courses/getsubject'+this.value" >
<option value="Arts">Arts</option>
<option value="Science">Science</option>
<option value="IT">IT</option>
</select>
<br>
<?php echo form_dropdown(''); ?>
<br>
<?php echo form_submit(['class'=>'form-control btn btn- success','value'=>'Submit']) ?>
<?php echo form_close(); ?>
</div>
</div>
</body>
这是控制器
<?php
class Courses extends MY_Controller
public function assign()
$this->load->helper('form');
$this->load->view('admin/course');
public function getsubject($grp)
$this->load->model('courses');
$grp = $this->courses->getsubjects($grp);
?>
我不知道如何在 Codeigniter 中做到这一点,得到了谷歌的帮助,比如 Ajax 技巧,但什么都没有
【问题讨论】:
<?php include('admin_header.php'); ?>
在 CI 中可以是 <?php $this->load->view('admin_header'); ?>
.... :)
onChange 事件应该触发一个 javascript 函数。 onchange="/courses/getsubject'+this.value"
需要参考JS函数。此外,您的控制器方法不会返回任何内容。我会使用 jQuery 来加载数据,我认为 ajax 调用更容易。
但是如何在控制器的参数中获取这个值呢?然后下一个下拉菜单将如何更新?
你能提供代码吗?
这是什么意思?? “得到了谷歌的帮助,比如 Ajax 技巧,但一无所获”
【参考方案1】:
这是一个例子:
控制器(索引)
<?php
class Index extends CI_Controller
public function __construct()
parent::__construct();
$this->load->helper('url_helper');
$this->load->model('countries_model');
public function index()
$query = $this->db->query('SELECT id,name FROM countries');
$data['countries'] = $query->result_array();
$this->load->view('index/index', $data);
public function cities()
$country_id = $this->input->post('country_id');
$query = $this->db->query('SELECT id,name FROM cities WHERE country_id=' . $country_id);
$data['cities'] = $query->result_array();
$this->load->view('index/cities', $data);
echo $country_id;
模型(Countries_model.php)
<?php
class Countries_model extends CI_Model
public function __construct()
$this->load->database();
查看(index.php)
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dymanic Selects</title>
<script type="text/javascript" src="<?php echo base_url(); ?>js/jquery.js" ></script>
<script type="text/javascript">
$(document).ready(function()
$('#sl_countries').change(function()
$('#sl_cities').load("<?php echo site_url('index/cities') ?>",country_id:$(this).val());
);
);
</script>
</head>
<body>
<label>Countries</label>
<select id="sl_countries">
<?php foreach($countries as $c):?>
<option value="<?php echo $c['id']?>"><?php echo $c['name']?></option>
<?php endforeach;?>
</select>
<label>Cities</label>
<select id="sl_cities"></select>
</body>
</html>
查看 (cities.php)
<?php foreach ($cities as $c): ?>
<option value="<?php echo $c['id'] ?>"><?php echo $c['name'] ?></option>
<?php endforeach; ?>
为此,我使用了 jquery,所以它更容易。 需要两个视图,index.php 是主视图,cities.php 是显示国家列表的视图。
【讨论】:
来源:lax-soft.tk/index.php/programacion/php-y-jquery/… Demo:lax-soft.tk/codeIgnitercbx,检查所有国家,有些国家没有关联城市,或者检查你的服务器配置query()
永远不应该从控制器层调用——这就是模型的用途。
此外,当您将用户输入传递到 sql 查询以提高安全性/稳定性时,您应该使用占位符。最后,对服务器的 ajax 调用对于相对少量的数据来说可能是多余的。在某些情况下,更理想的做法是创建一个多维查找数组,将其传递给视图,其中 is 转换为 json 对象并在 onchange
事件中引用。如果使用 ajax,最好将响应缓存为 json 对象,这样如果用户重新选择特定选项,服务器就不会受到冗余调用的困扰。以上是关于在 Codeigniter 中填充动态下拉列表的主要内容,如果未能解决你的问题,请参考以下文章