我正在尝试使用数据库创建动态菜单。
控制器 是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>";
}
?>
现在错误是,
严重性:注意
消息:未定义的变量:category
文件名:views / vwHeader.php
行号:38
致命错误:在第38行的C:\ xampp \ htdocs \ admin \ application \ views \ vwHeader.php中的非对象上调用成员函数result()
我该如何解决????
答案 0 :(得分:0)
$lang
没有价值。分配值或传递为空.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();
在视图中
foreach ( $category as $new_category )
{
echo '<a href="">'. $new_category;.'<a>';//your rest of code
}
答案 1 :(得分:0)
因为,你正在取物。
在您的代码中,如果您的数据库有记录,则返回对象,否则不会返回任何内容。
更改
if($result->num_rows() > 0)
{
return $result;
}
到
return $result
避免行数条件。
答案 2 :(得分:0)
首先,您需要更正代码中的某些行: -
return $result;
使用此return $result->result()
使用foreach($category as $menu)
代替foreach($category->result() as $menu)
和foreach($subcategory as $menu)
代替foreach($subcategory->result())