2016-08-04 21 views
0

我想選擇列表形式我已經選擇名稱作爲輸入值的MySQL表。在我看來,必須選擇列名作爲多個輸入字段。在這個選項中,選項值等於數據庫中「pass_due」表中的列名。通過php(CodeIgniter)中的給定數組從MySQL表中選擇列。

<form id="" name=" Passdue " action="<?=base_url('index.php/Passdue_ctrl/select')?>" method="post"> 
 
<div > 
 
    <input class="date-picker" id="report_date" name="report_date" value="" placeholder="Select Date"/> 
 
    <select multiple="" class="chzn-select" id=" " data-placeholder="Select sections " name="table_feilds"> 
 
          <option value="" /> 
 
          <option value="below_1" /> Below month 
 
          <option value="month_1_3" /> Month 1-3 
 
          <option value="month_3_6" /> Month 3-6 
 
          <option value="month_6_9" /> Month 6-9 
 
          <option value="over_9" /> Over 9 month 
 
     </select> 
 
</div> 
 
<div> 
 
      <button type="submit" class="btn btn-mini btn-info">Submit</button> 
 
       <button type="reset" id="reset" class="btn btn-mini btn-info">Reset</button> 
 
</div> 
 
</form>

這是功能在我的控制器

Function select(){ 
 
$fld_name =$this->input->post('table_feilds'); 
 
$reportdate=$this->input->post('report_date'); 
 
$report=$this->Passdue_model->get_report_part($fld_name,$reportdate); 
 
If($report){ 
 
$this->data['report_part']=$report; 
 
$this->data['fld_name']=$fld_name; 
 
$this->load->view('Passdue_other_view',$this->data); 
 
} 
 
}

在我的模型是這樣的。

function get_report_part1($fld_name,$reportdate) 
 
    { 
 
$this->db->select($fld_name); 
 
$this->db->from(‘pass_due’); 
 
$this->db->where('fld_actORinact_date <=',$reportdate); 
 
     \t $query = $this->db->get(); 
 
     \t \t if($query){ 
 
      \t \t return $query->result(); 
 
     \t \t } 
 
    }

當我運行這段代碼從表中,不僅選擇的選擇所有列。並且它顯示錯誤爲 爲foreach()提供了無效的參數。

+0

你能迴應查詢並粘貼在評論上嗎?使用echo $ this-> db-> last_query(); –

回答

0

您可以使用此從y檢索數據的新模型方法我們的db.So插入此模型到您的模型

function getDetail($tablename = '', $columns_arr = array(), $where_arr = array(), $limit = 0, $offset = 0) 
{ 
    $limit = ($limit == 0) ? Null : $limit; 

    if (!empty($columns_arr)) { 
     $this->db->select(implode(',', $columns_arr), FALSE); 
    } 

    if ($tablename == '') { 
     return array(); 
    } else { 
     $this->db->from($tablename); 

     if (!empty($where_arr)) { 
      $this->db->where($where_arr); 
     } 

     if ($limit > 0 AND $offset > 0) { 
      $this->db->limit($limit, $offset); 
     } elseif ($limit > 0 AND $offset == 0) { 
      $this->db->limit($limit); 
     } 

     $query = $this->db->get(); 

     return $query->result(); 
    } 
} 
//These are include within controller methods 

$fld_name =$this->input->post('table_feilds'); 
//you have to send your columns from your multiple select object as array. 
//create column array 
$arr_columns=array(); 
for($i=0,$i<=count($fld_name);$i++){ 
$arr_columns=array_push($fld_name) 
} 
$reportdate=$this->input->post('report_date'); 
//create where array 
$arr_where=array('fld_actORinact_date <=' => $reportdate); 
//retreive data 
$datatable=‘pass_due’; 
    $report=$this->Passdue_model->getDetail($datatable,$arr_columns,$arr_where,0,0); 
var_dump($report); 

//finally dump_data set .it return array object.Then loop retrieved object. 

然後這將返回您所期望的。 也想建議你使用廣義模型,除了每個表使用不同的模型每個&。

0
use below code in form 

    <select multiple="multiple" class="chzn-select" id=" " data-placeholder="Select sections " name="table_feilds[]"> <!-- use [] for multiple values --> 

and I don't see any foreach loop? 

and first 
echo '<pre>';print_r($fld_name);exit; before 
$report=$this->Passdue_model->get_report_part($fld_name,$reportdate); 
+0

在我的數據視圖,具有foreach循環寫列名' <?PHP的 的foreach((陣列)$ fld_name爲$ fld_name){?> <?= $ fld_name?> ' –

+0

您是否嘗試過更新的選擇標記並查看print_r($ fld_name);顯示print_r($ fld_name);在選擇了一些 –

+0

做了上面的代碼工作後,非常棒,非常感謝。請也投票 –

0

在你的模型通過

data['fld_name']=$this->Passdue_model->get_report_part($fld_name,$reportdate); 
$this->load->view('Passdue_other_view',$data); 

返回查詢如下

return $query->result_array(); 

在控制器中獲取數據,您認爲網頁

foreach($fld_name as $fld_name){?> <th><?php echo $fld_name['column_name '];?></th> <?php }?> </tr> </thead> 
相關問題