1

I want to select columns form mysql table which I have selected names as input value. In my view, have to select column names as multiple input fields. In this selection option values are equals to column names in my “pass_due” table in database.

<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>

This is function in my controller

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);
}
}

In my model like this.

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

When I run this code it select all columns from table, not only selected ones. And also it shows error as Invalid argument supplied for foreach() .

1
  • can you echo query and paste on comment? Use echo $this->db->last_query(); Commented Aug 4, 2016 at 7:30

3 Answers 3

0

You can use this new model method to retreive data from your db.So insert this method into your model

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.

then this will return what you expect. Also like to advise you to use generalized model except using separate models for each & every tables.

Sign up to request clarification or add additional context in comments.

Comments

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);

3 Comments

In my data view, have foreach loop to write column names <thead> <tr> <?php foreach((array)$fld_name as $fld_name){?> <th><?=$fld_name?></th> <?php }?> </tr> </thead>
have you tried with the updated select tag and see print_r($fld_name); show print_r($fld_name); after selecting some
does above code work, great kool, many thanks. please vote up too
0

In your model return the query as follows

return $query->result_array();

In your controller get data by

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

In your view page

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.