user5885331
user5885331

Reputation: 443

I cant pass variable from controller to view in Codeigniter

I get error saying:

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: data

Filename: views/businessinfo_view.php

My model:

function getPosts(){
   $query = $this->db->query("SELECT * FROM customer WHERE 
   customer_id=12;");           
   return $query->result_array();
}

My controller:

 function ind() {
   $data['customerinfo'] = $this->user_model->getPosts(); 
   $this->load->view('businesssinfo_view', $data); 
 }

MY view:

<?php foreach($data as $d){?>
 <tr>
     <td><?php echo $d->customer_id;?></td>
     <td><?php echo $d->first_name);?></td>
  </tr>     
<?php }?>  

I tried 100 different ways, still can pass the variables, I know my query is correct, I can fetch and echo data in controller, I can't just pass it into view. someone please help me!

Upvotes: 0

Views: 2910

Answers (3)

Govind Kalria
Govind Kalria

Reputation: 11

function controller() {   
   $data['customerinfo'] = $this->user_model->getPosts();    
   $this->load->view('businesssinfo_view', $data); 
}

Whenever you pass variable in view, try to access it with key inside view. This $customerinfo variable will have all your data.

For EX. $customerinfo because your actual variable is $data['customerinfo'].

if var name is $data['extraVal'], in view access through $extraVal.

Upvotes: 1

Aritra Debsarma
Aritra Debsarma

Reputation: 121

Try exactly this :

My model:

function getPosts(){
   $query = $this->db->query("SELECT * FROM customer WHERE 
   customer_id = '12' ");           
   return $query->result();
}

My controller:

function ind() {
   $data['customerinfo'] = $this->user_model->getPosts(); 
   $this->load->view('businesssinfo_view', $data); 
 }

MY view:

    <?php 
if(!empty($customerinfo))
{
foreach($customerinfo as $d){?>
     <tr>
         <td><?php echo $d->customer_id;?></td>
         <td><?php echo $d->first_name;?></td>
      </tr>     
    <?php }
}
else{
echo 'Some problem with the variable !! :(';
}
?> 

Upvotes: 0

user4419336
user4419336

Reputation:

Try if you have the $data['customerinfo'] then on the view you would use like $customerinfo

http://www.codeigniter.com/user_guide/general/views.html#creating-loops

Controller

function ind() {
  $data['customerinfo'] = array();
  $data['customerinfo'] = $this->user_model->getPosts(); 
  $this->load->view('businesssinfo_view', $data); 
}

Model

function getPosts(){
   $this->db->where('customer_id', '12');
   $query = $this->db->get('customer');
   return $query->result_array();
}

View

<?php foreach($customerinfo as $d){?>
 <tr>
     <td><?php echo $d['customer_id'];?></td>
     <td><?php echo $d['first_name'];?></td>
  </tr>     
<?php }?>  

When model function returns result_array() <?php echo $d['first_name'];?>

When model function returns result() <?php echo $d->first_name;?>

Example found here

Upvotes: 0

Related Questions