2017-06-23 88 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

根據你的代碼,讓我給你一個例子,其餘的這個你可以寫代碼。請檢查我的更新回答 –