Reputation: 289
I want to pass data queried in my model to the controller, to do so I am using return $data. Then in the controller I use $this->load->view('my_view', $data);
From my understanding var_dump($data);
in the view should show me the results from the query... This is not the case. I am getting "undefined variable data" and NULL from the var_dump($data);
.
Here is my model:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Manage_accounts_model extends CI_Model {
public function index() {
//
}
public function get_users(){
$data = array();
$data['query'] = $this->db->get('users');
return $data['query'];
}
}
Here is my controller
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Manage_accounts extends CI_Controller {
public function index() {
$this->load->view('template/header');
$this->load->model('manage_accounts_model');
$this->load->view('template/footer');
$this->load->model('manage_accounts_model');
$res = $this->manage_accounts_model->get_users();
if($res){
$this->load->view('manage_accounts_view', $data);
} else {
echo "Fail";
}
}
}
And finally my view:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
?>
<div class="container">
<h1><?php if($title){ echo $title; } ?></h1>
<?php var_dump($data['query']); ?>
</div>
Upvotes: 2
Views: 33841
Reputation: 2700
I think you made 2 mistakes
change in your model class.
public function get_users(){
$data = array();
$query = $this->db->get('users');
$res = $query->result();
return $res;
}
change in your controller class
public function index() {
$this->load->view('template/header');
$this->load->model('manage_accounts_model');
$this->load->view('template/footer');
$this->load->model('manage_accounts_model');
$res = $this->manage_accounts_model->get_users();
if($res){
$data['result'] = $res;
$this->load->view('manage_accounts_view', $data);
} else {
echo "Fail";
}
in your view
print_r($result);
Upvotes: 4
Reputation: 23948
You did not pass the query
key variable to view.
change:
$res = $this->manage_accounts_model->get_users();
if($res) {
$this->load->view('manage_accounts_view', $data);
To:
$data['query'] = $this->manage_accounts_model->get_users();
if($data['query']){
$this->load->view('manage_accounts_view', $data);
...
Upvotes: 0
Reputation: 153
Just Need to do change into controller
$data['query'] = $this->manage_accounts_model->get_users();
if($data){
$this->load->view('manage_accounts_view', $data);
}else{
echo "Fail";
}
Upvotes: 0
Reputation: 13728
cause $data
is not defined in your controller try
$data = array();
if($res){
$data['res'] = $res;
$this->load->view('manage_accounts_view', $data);
}
Then get on view
<?php var_dump($res); ?>
Also you are sending whole query from model not result for return result you need like :-
public function get_users(){
$query = $this->db->get('users');
return $query->result();
}
Upvotes: 1
Reputation: 12391
You forgot it
$data['resultSet']=$res;
Now access the result as $res in your code
Upvotes: 0