Guy in the chair
Guy in the chair

Reputation: 1065

Getting error for undefined index in CodeIgniter

I have below code in my header.php, values of $menu is coming from 'my_controller.php & database query has been defined in menu_model.php.

Error Message

Severity: Notice
Message: Undefined Index: menu_name
Filename: Header.php
Line number: 187
Backtrace:
    File: ////Header.php
    Line: 187
    Function: _error_handler

    File: ////my_controller.php
    Line: 32
    Function: view

menu_model.php

public function get_main_menu()
{
    $this->db->select("*");
    $this->db->from('menu');
    $this->db->order_by("menu_id", "ASC");
    $query = $this->db->get();
    return $query;
}

my_controller.php

protected function loadHeader($title = 'Home')
{       
    $menu['menu'] = $this->menu_model->get_main_menu()->result_array();
    //var_dump($menu['menu']); ***This shows data which is mentioned below
    $data['menu'] = $menu;
    $data['title'] = $title;
    $this->load->view('templates/header', $data);  ***This is line 32
}

header.php

<?php foreach ((array_values($menu)) as $mega_menu): ?> 
    <li class="mega-menu">
    <a href="<?php echo BASE_URL.('/category/'.$mega_menu['menu_id'].'/'); ?>">
    <div><?php echo $mega_menu['menu_name']?></div>
    </a> ***This is line 187
    </li>
<?php endforeach; ?>

var_dump($menu)

array(1) { ["menu"]=> array(4) { [0]=> array(4) { ["menu_id"]=> string(1) "1"
["menu_name"]=> string(14) "Start Business" ["menu_desc"]=> string(34) "DSC,
DPIN Initiation etc. services" ["breadcrumb_id"]=> string(1) "0" } [1]=> array(4)
{ ["menu_id"]=> string(1) "2" ["menu_name"]=> string(12) "Intellectual" ["menu_desc"]=>
string(35) "Trademark and Copyright Filing etc." ["breadcrumb_id"]=> string(1) "0" }
[2]=> array(4) { ["menu_id"]=> string(1) "3" ["menu_name"]=> string(8) "Personal"
["menu_desc"]=> string(47) "Wills, Rent Agreements, General Affidavits etc."
["breadcrumb_id"]=> string(1) "0" } [3]=> array(4) { ["menu_id"]=> string(1) "4"
["menu_name"]=> string(9) "Contracts" ["menu_desc"]=> string(32) "General
Business Agreements etc." ["breadcrumb_id"]=> string(1) "0" } } }

Can somebody help me finding the error?

Upvotes: 0

Views: 3686

Answers (2)

Hikmat Sijapati
Hikmat Sijapati

Reputation: 6994

First save menu_model.php as Menu_model.php with following Code

public function get_main_menu()
{
    $this->db->select("*");
    $this->db->from('menu');
    $this->db->order_by("menu_id", "ASC");
    $query = $this->db->get();
    return $query;
}

Save my_controller.php as My_controller.php with following code.

protected function loadHeader($title = 'Home')
{       
    $this->load->helper('url');
    $this->load->model('menu_model');
    $menu= $this->menu_model->get_main_menu()->result_array();
    $data['menu'] = $menu;
    $data['title'] = $title;
    $this->load->view('templates/header', $data);
}

And at your view make the following code:

<?php foreach($menu as $mega_menu): ?> 
    <li class="mega-menu">
    <a href="<?php echo base_url('category/'.$mega_menu['menu_id']); ?>">
    <div><?php echo $mega_menu['menu_name'];?></div>
    </a>
    </li>
<?php endforeach; ?>

Upvotes: 1

Razib Al Mamun
Razib Al Mamun

Reputation: 2713

Some change your my_controller.php. Can $data['menu'] = $menu['menu']; instead of $data['menu'] = $menu;

protected function loadHeader($title = 'Home')
{       
    $menu['menu'] = $this->menu_model->get_main_menu()->result_array();
    //var_dump($menu['menu']); ***This shows data which is mentioned below
    $data['menu'] = $menu['menu'];
    $data['title'] = $title;
    $this->load->view('templates/header', $data);  ***This is line 32
}

Upvotes: 4

Related Questions