2016-01-11 101 views
0

我已經創建了一個網站,我已經在項目下分組了項目。當用戶從提供的下拉菜單中選擇一個項目並提交時,與該項目編號a相關的項目將被檢索併發送回控制器。codeigniter分頁下拉選擇過濾器

我的控制器

public function dwg_list() 
{ 
    $data['proj_num'] = $this->model_proj->proj_num_all(); 
    $num_row = 1; 
    if ($this->input->post('project_no') != '0') 
    { 
     $data['result'] = $this->model_issue->list_dwg($this->input->post('project_no')); 

     if (count($data['result']) > 0) 
     { 
      $num_row = count($data['result']); 
     } else $num_row = 1; 
    } 

    $this->load->library('pagination'); 

    $config['base_url'] = base_url() . '/index.php/dwg_issue/dwg_list/page'; 
    $config['total_rows'] = $num_row; 
    $config['per_page'] = 2; 

    $this->pagination->initialize($config); 



    $data['main_content'] = 'dwg_list'; 
    $this->load->view('includes/template.php', $data); 

} 

我查看

<h1>This page displays all the registered drawings</h1> 
<br> 

<div id="body"> 
<div class="row"> 
     <div class="form-group-sm"><lable class="col-sm-2 control-label">Project number:</lable> 
    <?php 
     $js = 'onchange="this.form.submit()" class="form-control" id="focusInput"'; 
     echo form_open('dwg_issue/dwg_list'); 
     echo "<div class=\"col-xs-2\">" . form_dropdown('project_no',$proj_num, $this->input->post('project_no'),$js)."</div>"; 
     echo form_error('project_no', '<div class="col-xs-4"><div class="alert alert-danger fade in"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>','</div></div>'); 
    ?> 
     </div> 
     </div> 
     <br> 

<?php 
echo "<noscript>".form_submit('submit','Submit')."</noscript>"; 
?> 

     <table title="List of drawings" class="table table-hover" style="font-size: 14px"> 
      <caption><b>List of drawings</b></caption> 
     <thead> 
      <tr><th>Project number</th><th>Drawing number</th><th>Client drawing number</th> 
       <th>Title</th><th>Size</th><th>Drawn by</th><th>Revision</th><th>Drawn Date</th></tr> 
     </thead>  
     <tbody> &nbsp; 
     <?php 
      if(!empty($result)) 
      { 
       foreach($result as $row) 
       { 
        echo "<tr>"; 
        echo "<td>" . $row->project_no . "</td>"; 
        echo "<td>" . $row->sws_dwg_no . "</td>"; 
        echo "<td>" . $row->client_dwg_no . "</td>"; 
        echo "<td>" . $row->dwg_title . "</td>"; 
        echo "<td>" . $row->dwg_size . "</td>"; 
        echo "<td>" . $row->dwg_by . "</td>"; 
        echo "<td>" . $row->dwg_rev . "</td>"; 
        echo "<td>" . date('Y/m/d', strtotime($row->dwg_date)) . "</td>"; 
        echo "</tr>"; 
       } 
      } 

     ?> 
     </tbody> 
     </table> 

     <?php echo $this->pagination->create_links(); ?> 

</div> 

我看到的是,當我點擊下一個頁面數,頁面刷新,選擇下拉菜單中的問題可以追溯到默認值然後將其提交給控制器。控制器無法向模型提交任何內容以從數據庫中檢索。

那麼我該如何克服這個問題。

回答

0

如果我正確理解你的問題,我想你可以使用URI Segments通過你的項目編號,你可以隨時訪問你不張貼或選定的項目數的方法使用post方法。

public function dwg_list($porject_no){ 
    echo $porject_no; 
    ...... 
} 

例子: www.your-domain.com/controller/dwg_list/{project_no}

我希望這給了你一些想法。

這裏是一個鏈接,我認爲可以幫助:

https://codeigniter.com/userguide2/general/controllers.html

+0

感謝您的幫助。我能夠將URI段傳遞給頁面,並且幾乎可以工作。我使用'onchange'提交提交下拉菜單,我認爲這是什麼讓我失望。有任何想法嗎? –

-1

也許這是有道理的,你在一個會話變量保存當前選擇的表單處理程序「dwg_issue/dwg_list」

$this->session->set_userdata('selectedDropDownItem',$receivedDropDownItem); 

每當你呈現你的看法,你會看,如果會話變量「selectedDropDownItem」設置,然後在寫入...時打印「選定」選項。

看這...

echo "<select>"; 
foreach ($selectOptions as $as){ 
      //check session if default option set.... 
      if (isset($this->session->userdata['selectedOption'])){ 
       $defOption = $this->session_userdata['selectedOption']; 
      }else{ 
        $defOption= ""; 
      } 


      if (!strcmp($defOption,$as)){ // if the current option is equal to the session stored option... 
       echo "<option value=\"".$as."\" selected=\"selected\">".$as."</option>"; 
      }else{ 
       echo "<option value=\"".$as."\">".$as."</option>"; 
      }   
     } 
echo "</select>"; 
+0

這太棒了主意,使用用戶的會話變量。如果用戶離開頁面或點擊另一個鏈接,那麼會話變量必須刷新或者被殺死 - 我該怎麼做? –

+0

在讀取會話變量以在選擇框中定義默認值後,您將刪除view_file中的會話數據。你可以使用$ this-> session-> unset_userdata('some_name');在CI用戶指南中尋找此信息 –