【问题标题】:how to solve the error in codeigniter?如何解决codeigniter中的错误?
【发布时间】:2015-08-04 05:50:05
【问题描述】:

这是控制器 submenu.php

<?php
if (!defined('BASEPATH'))
    exit('No direct script access allowed');
class Submenu extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->library('form_validation');
        $this->load->model("submenu_model");
    }
    public function index()
    {
        $arr['page'] = 'submenu';
        $qry ='Select * from subcategory';
        $arr['submenu'] = $this->db->query($qry)->result_array();
        //$data['view']='edit';

        $this->load->view('admin/vwAddSubmenu',$data); 
    }
    public function add_submenu()
    {
        if(isset($_POST['submit']))
        {
            $name = mysql_real_escape_string($_POST['name']);
            $url = $_POST['url'];
            $cat = $_POST['category'];
            $result = $this->submenu_model->insert_subcategory($name,$url,$cat);
            if(isset($result))
            {
                echo 'insert successfully';
                redirect('admin/submenu/');
            }
            else
            {
                echo 'insert Failed';
            }
        }
        $arr['page'] = 'submenu';
        $data['category'] = $this->submenu_model->get_category();
        $this->load->view('admin/vwManageSubmenu',$arr);
        $this->load->view('admin/vwAddSubmenu',$arr); 
        //$this->load->view('admin/vwAddSubmenu',$arr,$data);
    }
} 

这是视图

<form method="post" action="<?php echo base_url() ?>admin/submenu/add_submenu">
    <input type="text" name="name" value="Sub Category Name">
    <input type="text" name="url" value="Sub Category URL">
    <select name="category">
    <?php
    foreach ($category as $item)
    { ?>
        <option id="<?php echo $item['id'] ?>"><?php echo $item['name'] ?></option>
    <?php } ?>
    </select>
    <input type="submit" name="submit" value="Add Sub Category">
</form>

这是模型 submenu_model.php

<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Submenu_model extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->library('form_validation');
        if (!$this->session->userdata('is_admin_login'))
        {
            redirect('admin/home');
        }
    }
    public function index()
    {
        $arr['page'] = 'submenu';
        $qry ='Select * from subcategory';
        $arr['submenu'] = $this->db->query($qry)->result_array();
        //$data['view']='edit';
        $this->load->view('admin/vwManageSubmenu',$arr);
    }
    public function add_submenu()
    {
        if(isset($_POST['submit']))
        {
            $name = mysql_real_escape_string($_POST['name']);
            $url = $_POST['url'];
            $cat = $_POST['category'];
            $result = $this->submenu_model- 
            >insert_subcategory($name,$url,$cat);
            if(isset($result))
            {
                echo 'insert successfully';
                redirect('admin/submenu/');
            }
            else
            {
                echo 'insert Failed';
            }
        }
        $arr['page'] = 'submenu';
        $data['category'] = $this->submenu_model->get_category(); 
        $this->load->view('admin/vwAddSubmenu',$data); 
        //$this->load->view('admin/vwAddSubmenu',$arr,$data);
    }
} 

现在在http://localhost/admin/admin/submenu 在下拉列表中显示错误

遇到 PHP 错误 严重性:通知 消息:未定义变量:类别 文件名:admin/vwAddSubmenu.php 行号:48 遇到 PHP 错误 严重性:警告 消息:为 foreach() 提供的参数无效 文件名:admin/vwAddSubmenu.php 行号:48 解决办法是什么?

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:
         <?php
    
    
            class Submenu_model extends CI_Model {
    
    
              function __construct(){
               parent::__construct();
                 $this->load->database();
                   }
    
                function get_category()
                 {
                  $query = $this->db->get('category');
                  return $query->result();
                   }
    
                   function insert_subcategory($name,$url,$cat)
                       {
                        $data = array(
                     'namesubcategory' => $name,
                     'urlsubcategory' => $url ,
                      'idcategory' => $cat
                         );
    
                  $this->db->insert('subcategory', $data);
                    }
    
                      }  
    

    【讨论】:

    • 类 Submenu_model 扩展 CI_Model
    • 错误现在消失了,但下拉菜单中没有显示值
    • 你的模型代码和表名和架构是什么?
    • 我在上面编辑我的模型代码,数据库架构是类别(idcategory,namecategory,urlcategory)和子类别(idsubcategory,namesubcategory,urlsubcategory,idcategory)
    • 您在控制器的索引功能中遇到了这个问题。是吗?
    【解决方案2】:

    在控制器中:

      <?php
    
         if (!defined('BASEPATH')) exit('No direct script access allowed');
     class Submenu extends CI_Controller
     {
        public  function __construct()
       {
         parent::__construct();
         $this->load->library('form_validation');
         $this->load->model("submenu_model");
       }
    
      public  function index()
      {
       $arr['page'] = 'submenu';
       $qry = 'Select * from subcategory';
       $arr['submenu'] = $this->db->query($qry)->result_array(); 
       $this->load->view('admin/vwAddSubmenu', $arr); //passing data to view
       }
    
     public function add_submenu()
    {
       if (isset($_POST['submit']))
       {
         $name = mysql_real_escape_string($_POST['name']);
         $url = $_POST['url'];
         $cat = $_POST['category'];
         $result = $this->submenu_model->insert_subcategory($name, $url, $cat);
      if (isset($result))
      {
        echo 'insert successfully';
        redirect('admin/submenu/');
        }
        else
        {
        echo 'insert Failed';
        }
      }
    
    $arr['page'] = 'submenu';
    $arr['category'] = $this->submenu_model->get_category();
    //$this->load->view('admin/vwManageSubmenu', $arr); //loading two views
    $this->load->view('admin/vwAddSubmenu', $arr);   //passing data to view
    }
    }
    

    在模型中 - 应该是这样的

    class submenu_model extends CI_Model {
    
    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }
    
    function insert_subcategory()
    {
        //code for insert
    }
    
    function get_category()
    {
        $query = $this->db->get('category_table');
        return $query->result();
    }
    

    参考https://ellislab.com/codeigniter/user-guide/general/models.html

    在控制器中 $arr['submenu'] submenu 是传递给视图的变量。

    在视图中:

     <select name="category">
      <?php
        foreach ($submenu as $item)
        {
      ?>
      <option id="<?php echo $item['idsubcategory']; ?>">
      <?php echo $item['namesubcategory']; ?></option>
     <?php } ?>
     </select>
    

    【讨论】:

    • 此更改中没有显示相同的错误 $arr['category'] = $this->submenu_model->get_category();
    • 实际上我的模型不正确..我是codeigniter的新手,我无法实现模型。请帮助我
    • load->database(); } function get_category(){ $sql = 'SELECT * FROM category'; $result = $this->db->query($sql); if($result->num_rows() > 0) { return $result; } } function insert_subcategory($name,$url,$cat) { $data = array( 'name' => $name, 'url' => $url , 'idcategory' => $cat ); $this->db->insert('subcategory', $data); } } 更改该模型,但显示错误
    • 我检查了您的新更新并写了相同的内容,但我不明白为什么控制器中未定义类别...????
    • $arr['submenu'] = $this->db->query($qry)->result_array(); $this->load->view('admin/vwAddSubmenu',$arr);你在控制器中更新了这个吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 2011-09-09
    • 2013-11-15
    • 1970-01-01
    相关资源
    最近更新 更多