2017-06-23 90 views
1

这是我的表 “任务”创建级联下拉无主,foriegn键关系与coeigniter

  1. 项目名称
  2. 员工
  3. CLIENTNAME
  4. 任务
  5. 的结构

只依赖如下

  1. 一个项目有多个任务
  2. 一个项目有多个员工

我需要时,用户会自动选择与他们相关的特定项目任务将创建一个下拉列表加载到下一个下拉列表。在这种情况下,我不需要主要和外部的关键关系。任何帮助将非常感激 这是我的控制器

public function Task(){ 
    $data['cname'] = $this->welcome4->show_students3(); 
    $data['projects'] = $this->welcome4->show_students(); 
    $data['employee'] = $this->welcome4->show_students2(); 
    $this->load->view('template/navigation'); 
    $this->load->view('template/sideNav'); 
    $this->load->view('template/header'); 
    $this->load->view('Task',$data); 
    $this->load->view('template/footer'); 

    } 

这是我的模型

function show_students2(){ 
     $query = $this->db->get('employee'); 
     $query_result = $query->result(); 
     return $query_result; 
    } 
    function show_students3(){ 
     $query = $this->db->get('clientdetails'); 
     $query_result = $query->result(); 
     return $query_result; 
    } 
    function show_students4(){ 
     $query = $this->db->get('task'); 
     $query_result = $query->result(); 
     return $query_result; 
    } 

这是我的看法

<div class="form-group"> 
          <label>Select Project</label> 
         </div>  


        <div class="form-group"> 
         <select name="projectname" class="input form-control"> 
         <option value="none" selected="selected">Select Project</option> 


         <?php foreach($projects as $s):?> 
         <option value="<?php echo $s->projectname?>"><?php echo $s->projectname?></option> 
         <?php endforeach;?> 
         </select> 
        </div> 

        <div class="form-group"> 
          <label>Select Client</label> 



         <select name="cname" class="input form-control"> 
         <option value="none" selected="selected">Select client</option> 


         <?php foreach($cname as $s):?> 
         <option value="<?php echo $s->cname?>"><?php echo $s->cname?></option> 
         <?php endforeach;?> 
         </select> 
        </div> 

        <div class="form-group"> 
          <label>Select Employee</label> 
         </div> 

        <div class="form-group"> 
         <select name="employee" class="input form-control"> 
         <option value="none" selected="selected">Select Employee</option> 


         <?php foreach($employee as $s):?> 
         <option value="<?php echo $s->employee?>"><?php echo $s->employee?></option> 
         <?php endforeach;?> 
         </select> 
        </div> 

这会将所有的项目,客户,员工在数据库。但是现在我想要在第一个drodown中选择项目时,第二个下拉菜单应该只显示相关的客户和员工。不是所有人

回答

0

让我们考虑这将是您的项目选择框,其中您正在加载数据动态页面加载与PHP。

<select name="projectname" id="projectname"></select> 

任务选择框。

<select name="tasks" id="tasks"></select> 

内,您的控制器添加下面提到的代码。该函数将用于从Ajax调用中获取数据。

public function getTasks() { 
    $Id = $this->input->post('project_id'); 
    if ($Id): 
     $this->load->model('Task_model', 'Tasks', TRUE); 
     $data = $this->Tasks->getProjectTasks($Id); 
     if ($data): 
      $result['status'] = true; 
      $result['records'] = $data; 
     endif; 
    else: 
     $result['status'] = false; 
    endif; 
    echo json_encode($fdata); 
} 

内部模型请加这个功能。它将从数据库 中获取数据并将其传递回控制器。

public function getProjectTasks($id = null) { 
    if ($id): 
     $this->db->select('id,task'); 
     $this->db->where('project_id', $id); 
     $this->db->where('status', TRUE); 
     $query = $this->db->get('tasks'); 
     $records = $query->result(); 
     if ($records): 
      return $records; 
     else: 
      return false; 
     endif; 
    else: 
     return false; 
    endif; 
} 

最后,在您查看文件请在下面添加功能。

$(document).on('#projectname', 'change', function() { 
    var projectId = $(this).val(); 
    $.ajax({ 
     type: 'POST', 
     url: 'URL', 
     data: {project_id: projectId}, 
     dataType: "json", 
     beforeSend: function() { 
      $('#tasks') 
        .empty() 
        .append('<option selected="selected">Select Task</option>'); 
     }, 
     success: function(data) { 
      if (data.status) { 
       $.each(data.records, function(i, item) { 
        $('#tasks').append($('<option>', { 
         value: item.value, 
         text: item.text 
        } 
        )); 
       }); 
      } else { 
       $('#tasks') 
         .empty() 
         .append('<option selected="selected">No Task available</option>'); 
      } 
     } 
    }); 
}); 
+0

Mr.Shyam不需要控制器和模型? – Dushee

+0

当然,你需要这个,如果你想要我描述你的控制器和模型,请分享你的两个表。 –

+0

根据你的代码,让我给你一个例子,其余的这个你可以写代码。请检查我的更新回答 –