2016-08-04 46 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>