2

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

5 Answers 5

4

I think you made 2 mistakes

  1. forget to fetch the result to an array
  2. forget to pass the data to view

change in your model class.

public function get_users(): array
{
    return $this->db->get('users')->result();
}

change in your controller class

public function index()
{
    $this->load->model('manage_accounts_model');
    $data['result'] = $this->manage_accounts_model->get_users();

    $this->load->view('template/header');
    $this->load->view('manage_accounts_view', $data);
    $this->load->view('template/footer');
}

in your view

  print_r($result);
Sign up to request clarification or add additional context in comments.

2 Comments

$data['result'] = $res; $this->load->view('manage_accounts_view', $data); so $result can be accessible in view. $data is an associative array and its key can be used as a variable in view. sorry if iam wrong.
$result holds the array elements and using echo for array only print Array(), This is what i mean only. You should use print_r($result) or var_dump($result) to highlight the result.
1

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

Comments

0

You forgot it

 $data['resultSet']=$res;

Now access the result as $res in your code

Comments

0

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

Comments

0

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

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.