2015-07-27 3 views
0

Я пытаюсь создать динамическое меню с базой данных.Создание динамического меню codeigniter

Контроллер является menu.php

<?php 
    $_SESSION['lang'] = 'EN'; 

class Menu extends CI_Controller { 
function __construct(){ 
    parent::__construct(); 
    $this->load->database(); 
    $this->load->model("menu_model"); 
} 

public function index() 
{ 
    $data['category']= $this->menu_model->getCategory('$lang'); 
    $data['subcategory']= $this->menu_model->getSubCategory('$lang'); 

    $this->load->view('vwHeader',$data);//Left Menu 
} 
} 
?> 

Модель является menu_model.php

<?php 
class Menu_model extends CI_Model{ 
function __construct(){ 
    parent::__construct(); 
    $this->load->database(); 
} 

function getCategory($lang){ 
    $sql = 'SELECT * FROM category'; 
    $result = $this->db->query($sql); 
    if($result->num_rows() > 0) 
    { 

    return $result; 
    } 


} 

function getSubCategory($lang){ 
    $sql = 'SELECT * FROM subcategory'; 
    $result = $this->db->query($sql); 
    if($result->num_rows() > 0) 
    { 
    return $result; 
    } 

} 

} 
?> 

Посмотреть является vwHeader.php

<?php 


      foreach($category->result() as $menu) 
{ 
echo "<ul style='margin-left: 148px;margin-top: 15px;'>"; 
    echo "<li style='float: left; 


height: 57px; 
text-decoration: none; 
display: block;'><a class=\"sf-with-ul\" href=\"category/".$menu->urlcategory."\">".$menu->namecategory."</a>"; 
    /*check whether sub menu is there if so first print <ul> then <li><a>*/ 
    if(count($subcategory->result()) > 0 && is_array($subcategory->result())) 
    { 
     echo "<ul class=\"sub-menu\">"; 
     foreach($subcategory->result() as $key=>$submenu) 
     { 
      if ($menu->idcategory == $submenu->idcategory){ 
      echo "<li><a href=\"category/".$submenu->urlsubcategory."\">".$submenu->namesubcategory."</a></li>"; 
      } 
     } 



    } 
    else 
     { 
     echo "<ul style='display:none'>"; 
     echo "</ul>"; 
     } 
     echo "</ul>"; 
    echo "</li>"; 
    echo "</ul>"; 
} 

        ?> 

Теперь ошибка,

Severity: Notice

Message: Undefined variable: category

Filename: views/vwHeader.php

Line Number: 38

Fatal error: Call to a member function result() on a non-object in C:\xampp\htdocs\admin\application\views\vwHeader.php on line 38

, как я могу решить, что ????

+0

Если вы ищете это сообщение об ошибке, вы получите много результатов t в google. Попробуйте прочитать [как задать вопрос] (http://stackoverflow.com/help/how-to-ask) –

+0

Удалить одинарные кавычки, которые переносят переменную '$ lang'. – Tpojka

ответ

0

Нет значения в $lang. Присвоение значения или передать в качестве empty.Empty получит все данные. (Ниже код без $lang)

В модели

function getCategory() 
{ 
    $query = $this->db->query("SELECT * FROM category"); 
    $result = $query->result_array(); 
    $count = count($result); 
    if(!empty($count)) 
    { 
     return $result; 
    } 
} 

function getSubCategory() 
{ 
    $query = $this->db->query("SELECT * FROM subcategory"); 
    $result = $query->result_array(); 
    $count = count($result); 
    if(!empty($count)) 
    { 
     return $result; 
    } 

} 

В контроллере

$data['category']= $this->menu_model->getCategory(); 
$data['subcategory']= $this->menu_model->getSubCategory(); 

В View

foreach ($category as $new_category) 
{ 
    echo '<a href="">'. $new_category;.'<a>';//your rest of code 
} 
0

Потому что вы выбираете объект.

И в вашем коде, если в вашей базе данных есть записи, вы возвращаете объект еще ничего не возвращает.

Изменить

if($result->num_rows() > 0) 
    { 
    return $result; 
    } 

в

return $result 

Избегайте состояние числа строк.

0

See, сначала нужно исправить несколько строк в коде: -

  1. для return $result; использования этого return $result->result()

  2. использования foreach($category as $menu) вместо foreach($category->result() as $menu) и foreach($subcategory as $menu) вместо foreach($subcategory->result())

Смежные вопросы