我正在尝试用数据库创建动态菜单。
控制器 是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>";
}
?>
现在的错误是,
严重性:通知
消息:未定义的变量:类别
文件名:views/vwHeader.php
线路编号:38
致命错误:在第38行,对C:''examplep''htdocs''admin''application''views''vwHeader.php中的非对象调用成员函数result((
我该怎么解决????
$lang
中没有值。赋值或传递为空。清空将获取所有数据。(以下代码没有$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();
在视图
foreach ( $category as $new_category )
{
echo '<a href="">'. $new_category;.'<a>';//your rest of code
}
因为,您正在获取对象。
在您的代码中,如果您的数据库有记录,则返回对象,否则什么也不返回。
更改
if($result->num_rows() > 0)
{
return $result;
}
至
return $result
避免行数条件。
首先,您需要更正代码中的一些行:-
-
对于
return $result;
,使用此return $result->result()
-
使用
foreach($category as $menu)
代替foreach($category->result() as $menu)
,使用foreach($subcategory as $menu)
代替foreach($subcategory->result())