我需要創建依賴下拉列表。首先選擇客戶端。在下一個下拉列表中將顯示屬於所選客戶端的項目列表。選擇項目後,第三個下拉列表將過濾屬於該項目的任務。我需要使用數據庫中的一個表執行此操作,而不使用主鍵外鍵關係。 我的任務表已經 1.client名 2.項目名稱 3.任務命名 這裏一個客戶端有多個項目 一個項目有多個任務依賴下拉列表使用單個表值
也許我要求很簡單question.But我不能繼續我的項目而不做這個部分。請別人幫助我。 這是我的表格結構
我需要創建依賴下拉列表。首先選擇客戶端。在下一個下拉列表中將顯示屬於所選客戶端的項目列表。選擇項目後,第三個下拉列表將過濾屬於該項目的任務。我需要使用數據庫中的一個表執行此操作,而不使用主鍵外鍵關係。 我的任務表已經 1.client名 2.項目名稱 3.任務命名 這裏一個客戶端有多個項目 一個項目有多個任務依賴下拉列表使用單個表值
也許我要求很簡單question.But我不能繼續我的項目而不做這個部分。請別人幫助我。 這是我的表格結構
如果您正在使用同一張表來存儲客戶端,項目&任務,所以你可能會創建更多的重複記錄,例如可能是項目名稱重複或任務複製或客戶名稱....
雖然這取決於你的選擇和便利..基本上阿賈克斯下拉(相關下拉列表)是完全基於Ajax的行動&。所以你知道什麼,當你想通過Ajax,然後你可以建立這個容易..
這是一個CodeIgniter愛好者的例子!:d
笨控制器:
<?php
// security first always....
(defined('BASEPATH') or exit('No direct script access allowed'));
/**
* Class Controller
*
* Class Dropdown Controller to handle login & logout
*/
class Dropdown extends CI_controller
{
/**
* Class Constructor
*/
public function __construct()
{
// execute parent class constructor
parent::__construct();
// load model
$this->load->model('Dropdown_model');
}
/**
* Default method to execute if method name missing
* @return [type] [description]
*/
public function index()
{
$array_data = array();
// only on Ajax Request
if ($this->input->is_ajax_request()) {
// if request for projects
if ($this->input->post('action') && $this->input->post('action') == 'project') {
// get client name
$client = $this->input->post('client', true);
// get project data by client name
$array_data = $this->Dropdown_model->get_dropdown_data(trim($client), 'project');
// AjaxPOST JSON response
echo json_encode($array_data);die();
}
// if request for task
if ($this->input->post('action') && $this->input->post('action') == 'task') {
// get project name
$project = $this->input->post('project', true);
// get task data by project
$array_data = $this->Dropdown_model->get_dropdown_data(trim($project), 'task');
// AjaxPOST JSON response
echo json_encode($array_data);die();
}
}
// else get all client data
$array_data = $this->Dropdown_model->get_dropdown_data(null, null);
// send to view
$this->load->view('dropdown', ['data' => $array_data]);
}
}
/* End of file dropdown.php */
/* Location: ./application/controllers/dropdown.php */
笨型號:
<?php
// No direct script execution
defined('BASEPATH') or exit('No direct script access allowed');
/**
* Class Dropdown_model to handle all related information from MySQL
*/
class Dropdown_model extends CI_Model
{
/**
* MySQL table which contains all data about users
* @var string
*/
protected $table = 'task';
/**
* Returns, User First Name by Email ID
* @param [type] $email_addres [description]
* @return [type] [description]
*/
public function get_dropdown_data($where_data = null, $type = null)
{
$query = '';
// clients only
if (is_null($type) && is_null($where_data)) {
// desire column from table
$this->db->select('client_name');
// only unique clients
$this->db->distinct('client_name');
// mysql table
$query = $this->db->get($this->table);
}
// projects by client
elseif ($type == 'project' && !is_null($where_data)) {
// desire column from table
$this->db->select('project_name');
// where clause
$this->db->where('client_name', $where_data);
// mysql table
$query = $this->db->get($this->table);
}
// task by project
elseif ($type == 'task' && !is_null($where_data)) {
// desire column from table
$this->db->select('task');
// where clause
$this->db->where('project_name', $where_data);
// mysql table
$query = $this->db->get($this->table);
}
// if record exist
if ($query->num_rows() > 0) {
// return all data as array
return $query->result_array();
} else {
// error
return false;
}
}
}
/* End of file Dropdown_model.php */
/* Location: ./application/models/Dropdown_model.php */
笨檢視:
<!DOCTYPE html>
<html>
<head>
<title>CodeIgniter: Dependent dropdown list by using single table value</title>
<!-- load bootstrap css -->
<link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- load jquery library -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- load bootstrap js -->
<script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="form-group">
<label for="name">Client</label>
<select class="form-control" id="clients" name="clients">
<option value="0">--Select Clients--</option>
<?php if (isset($data)):?>
<?php foreach ($data as $key => $value): ?>
<option value="<?=$value['client_name']?>"><?=$value['client_name']?></option>
<?php endforeach ?>
<?php endif ?>
</select>
</div>
<div class="form-group">
<label for="name">Projects</label>
<select class="form-control" id="projects" name="projects">
<option value="0">--Select Projects--</option>
</select>
</div>
<div class="form-group">
<label for="name">Tasks</label>
<select class="form-control" id="tasks" name="tasks">
<option value="0">--Select Tasks--</option>
</select>
</div>
<div class="form-group">
<input type="button" class="btn btn-primary" value="Submit">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
// client select box
var $client = $('select#clients');
// project select box
var $projects = $('select#projects');
// task select box
var $tasks = $('select#tasks');
// on change client name, get projects
$client.on('change', function() {
// get selected client name
var client = $(this).find('option:selected').val();
// post data with CSRF token
var data = {
action:'project',
client: client,
"<?=$this->security->get_csrf_token_name()?>" : "<?=$this->security->get_csrf_hash()?>"
};
// AjaxPOST to get projects
$.post('./dropdown', data, function(json) {
projects_data = '<option value="0">--Select Projects--</option>';
$.each(json, function(index, obj){
projects_data += '<option value="'+obj.project_name+'">'+obj.project_name+'</option>';
});
// append all projects in project dropdown
$projects.html(projects_data);
}, 'JSON');
});
// on change project, get task
$projects.on('change', function() {
// get selected project name
var project = $(this).find('option:selected').val();
// AjaxPOSt wit CSRF
var data = {
action:'task',
project: project,
"<?=$this->security->get_csrf_token_name()?>" : "<?=$this->security->get_csrf_hash()?>"
};
$.post('./dropdown', data, function(json) {
task_data = '<option value="0">--Select Task--</option>';
$.each(json, function(index, obj){
task_data += '<option value="'+obj.task+'">'+obj.task+'</option>';
});
// append all task data in Task dropdown
$tasks.html(task_data);
}, 'JSON');
});
});
</script>
</body>
</html>
MySQL表:
id client_name project_name task
------ ------------------- ----------------- -------------
1 Man Powers & Morans Web Micro Site Development
2 Mango vs Trees Brand Development Pitch
3 Man Powers & Morans Ecom Site Maintenance
4 Light One Ecom Site Maintenance
5 Mango vs Trees Siteground Development
MySQL表結構:
Field Type Null Key Default Extra
------------ ----------- ------ ------ ------- ----------------
id int(11) NO PRI (NULL) auto_increment
client_name varchar(85) YES (NULL)
project_name varchar(85) YES (NULL)
task varchar(85) YES (NULL)
Mr.Singh ..你是一個神..我的意思是BAGHAWAN ...我知道小印地語..你百萬時代....真的非常感謝你的幫助。你的解釋是完美的。再次感謝你,你是一個代碼baghawan ,,,, – Dushee
@Dushee ..哈哈哈哈..:| | 。 ඔබගේකාරුණිකවචනසඳහාස්තූතියි。 මටසතුටුයි,මමඔයාටඋදව්කරන්නපුළුවන්:):D,知道你能說一點印度語,真是太神奇了。我猜你喜歡寶萊塢...;) –
嘿MR.SINGH..這個例子現在不起作用。早些時候它工作。但現在只有第一個下拉列表從數據庫獲取結果..可以請你解釋我的問題是什麼 – Dushee
我明白你的問題。 您可能需要做出選擇字段這樣
<label>Clints</label>
<select name="clint" id="clint" class="form-control" onchange="return get_projects(this.value)">
<option value="">Select Clint</option>
<?php foreach($clients as $clint){?>
<option value="<?php echo $clint->id?>"><?php echo $clint->name?></option>
<?php }?>
</select>
<label>Projects</label>
<select name="projects" id="projects" class="form-control" onchange="return get_tasks(this.value)">
<option value="">All</option>
</select>
<label>tasks</label>
<select name="tasks" id="tasks" class="form-control">
<option value="">All</option>
</select>
和這樣的腳本
function get_projects(clint_id) {
$.ajax({
url: '<?php echo base_url();?>your controllef/your function/' + clint_id,
success: function(response)
jQuery('#projects).html(response);
}
});
}
function get_tasks(project_id) {
$.ajax({
url: '<?php echo base_url();?>your controllef/your function/' +project_id,
success: function(response)
{
jQuery('#tasks).html(response);
}
});
}
,那麼你需要做功能控制器這樣
public function get_projects($clint_id)
{
$project = $this->your_model->get_projects($clint_id);
echo '<option value="">Select Project</option>';
foreach($project as $row){
echo '<option value="' . $row->project . '" >' . $row->name . '</option>';
}
}
public function get_tasks($project_id)
{
$tasks = $this->your_model->get_tasks($project_id);
echo '<option value="">Select Project</option>';
foreach($tasks as $row){
echo '<option value="' . $row->task . '" >' . $row->name . '</option>';
}
}
Mr.Nadeem非常感謝你的努力。但是我只有一個表格,並且編輯了我的問題,包括該表格的結構。在我的數據庫中,我沒有分別使用project_id和clint_id。我怎樣才能做到這一點,使用一個表 – Dushee
哪部分是你在掙扎? codeigniter部分或選擇框部分? –
Joel先生創建下拉列表codeigniter – Dushee
要創建一個下拉列表/選擇列表 - 在直接的PHP或使用codeigniter形式助手提示:閱讀user_guide。 – TimBrownlaw