1

Thanks a lot for answering my question before

So I have another problem in my Codeigniter, it's still the same project, just counting data rows in my database.

What I would like to do is creating a function in a Controller, and then call that function in a View.

So here's my ORIGINAL code:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Dash_control extends CI_Controller {

    public function __construct()
       {
            parent::__construct();
            $this->load->database();
            $this->load->model('dash_model');
       }



    public function index()
    {
        $data['cashtotal']=$this->dash_model->totalCash();
        $data['approvedtocash']=$this->dash_model->cashapproved();
        $data['rejectedtocash']=$this->dash_model->cashrejected();

        $this->load->view('dashboard',$data);
    }

}

and then here's my view code:

<thead>
<tr>
<th>Bank Name</th>
<th>Total Transaction</th>
<th>Cash Approved</th>
<th>Cash Rejected</th>
</tr>
</thead>
<tbody>
<tr class="warning">
<td>Awesome Bank</td>
<td><?php echo $cashtotal; ?></td>
<td><?php echo $approvedtocash; ?></td>
<td><?php echo $rejectedtocash; ?></td>
</tr>
</tbody>      

With the codes above, everything works fine. Until I modified my code like this one below (with the same view file like above):

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Dash_control extends CI_Controller {

    public function __construct()
       {
            parent::__construct();
            $this->load->database();
            $this->load->model('dash_model');
       }



    public function index()
    {

        $this->load->view('dashboard');
    }

    public function anotherfunction()
    {
        $data['cashtotal']=$this->dash_model->totalCash();
        $data['approvedtocash']=$this->dash_model->cashapproved();
        $data['rejectedtocash']=$this->dash_model->cashrejected();

        $this->load->view('dashboard',$data);
    }

}

After that I got this error on my browser:

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: cashtotal

Filename: views/dashboard.php

Line Number: 147

Backtrace:

File: C:\xampp\htdocs\application\views\dashboard.php
Line: 147
Function: _error_handler

File: C:\xampp\htdocs\application\controllers\dash_control.php
Line: 18
Function: view

File: C:\xampp\htdocs\index.php
Line: 292
Function: require_once

What did I do wrong? Is there something I'm missing? So I can't create multiple function inside my controller? Thank you before.

UPDATE

I followed Saty's guide and it worked. Thanks a lot! Since this is a table, I would like to add another function, so I add it up like this:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Dash_control extends CI_Controller {

    public function __construct()
       {
            parent::__construct();
            $this->load->database();
            $this->load->model('dash_model');
       }



    public function index()
    {
        $this->CashTransSum();
        $this->PayTransSum();
    }

    public function CashTransSum()
    {
        $data['cashtotal']=$this->dash_model->totalCash();
        $data['approvedcash']=$this->dash_model->cashapproved();
        $data['rejectedcash']=$this->dash_model->cashrejected();

        $this->load->view('dashboard',$data);
    }

    public function PayTransSum()
    {
        $data['paytotal']=$this->dash_model->totalPay();
        $data['approvedpay']=$this->dash_model->payapproved();
        $data['acqrejectedpay']=$this->dash_model->payrejected();

        $this->load->view('dashboard',$data);
    }

}

And then I got the same error:

Severity: Notice

Message: Undefined variable: paytotal

Filename: views/dashboard.php

Line Number: 156

Backtrace:

File: C:\xampp\htdocs\application\views\dashboard.php
Line: 156
Function: _error_handler

File: C:\xampp\htdocs\application\controllers\dash_control.php
Line: 29
Function: view

File: C:\xampp\htdocs\application\controllers\dash_control.php
Line: 17
Function: CashTransSum

File: C:\xampp\htdocs\index.php
Line: 292
Function: require_once 

It says here that I need to call it ONCE... Which one? Did I put the code wrong?

1
  • Are you still hitting the index? If so, then the errors are correct. If you still want to hit the index method, just simply include the declarations there. Commented Jan 21, 2016 at 13:48

2 Answers 2

3

You need to call anotherfunction() inside your index function as

 public function index()
    {

        $this->anotherfunction();// call your function
    }
public function anotherfunction()
    {
        $data['cashtotal']=$this->dash_model->totalCash();
        $data['approvedtocash']=$this->dash_model->cashapproved();
        $data['rejectedtocash']=$this->dash_model->cashrejected();

        $this->load->view('dashboard',$data);
    }
Sign up to request clarification or add additional context in comments.

Comments

1

the error you've got, it's completely normal, you need to fill the $data array with all variables, try this out :

protected $data;

public function index()
{
    $this->CashTransSum();
    $this->PayTransSum();

    $this->load->view('dashboard', $this->data);
}

public function CashTransSum()
{
    $this->data['cashtotal']=$this->dash_model->totalCash();
    $this->data['approvedcash']=$this->dash_model->cashapproved();
    $this->data['rejectedcash']=$this->dash_model->cashrejected();
}

public function PayTransSum()
{
    $this->data['paytotal']=$this->dash_model->totalPay();
    $this->data['approvedpay']=$this->dash_model->payapproved();
    $this->data['acqrejectedpay']=$this->dash_model->payrejected();
}

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.