一切都是正确的但是codeigniter显示消息:未定义的变量:数据

时间:2017-05-11 11:22:28

标签: php codeigniter

请阅读以下代码

Insertmodel.php

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Insertmodel extends CI_Model {

    public function insertdata($data)
    {
        $this->db->insert('page',$data);
    }
    public function getpagedata()
    {
        //$this->db->select('pname,purl,pub');
        //$this->db->from('page');
        //$this->load->database();

        $getquery = $this->db->get('page');
        return $getquery->result();
    }
}

Pagedatainsert.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Pagedatainsert extends CI_Controller {

    public function insertdata()
    {
        $this->load->helper('date');
        $this->load->model('insertmodel','tblselect');
        $data = array(
            'pname'=>$this->input->post('page-name'),
            'purl'=>$this->input->post('page-url'),
            'pcon'=>$this->input->post('page-content'),
            'pub'=>date('Y-m-d H:i:s')
        );
        $this->tblselect->insertdata($data);
    }
    public function gpdatacon()
    {
        $this->load->model('insertmodel');
        $data['query'] = $this->insertmodel->getpagedata();
        $this->load->view('backend/pages/pages',$data);
    }
}

pages.php(位于目录后端/页面下)

<?php foreach($data as $row){?>
<tr class="odd gradeX">
        <td><?= $row->pname; ?></td>
        <td><?= $row->purl; ?></td>
        <td><?= $row->pub; ?></td>
</tr>    
<?php } ?>

此处发生错误,表示

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: data
Filename: pages/pages.php
Line Number: 73
Backtrace:
File: D:\Ampps\www\customcms\application\views\backend\pages\pages.php
Line: 73
Function: _error_handler
File: D:\Ampps\www\customcms\application\controllers\Backmanage.php
Line: 26
Function: view
File: D:\Ampps\www\customcms\index.php
Line: 316
Function: require_once

我的数据库名称为customcms,表名为page

在google上进行了大量搜索,但没有找到这么多。此外,我在stackoverflow上发现了类似这样的问题,但在我的案例中并没有那么有用。我正在为这个问题工作一整天但是没有得到解决。

3 个答案:

答案 0 :(得分:3)

改变它:

$this->load->view('backend/pages/pages',$data);

$this->load->view('backend/pages/pages',array('data' => $data));

或更改它:

<?php foreach($data as $row){?>

<?php foreach($query as $row){?>

说明: view()函数的第二个参数是一个类似

的数组
view('viewname', array('data' => $data))

在视图中,您可以使用$data访问它。如果您通过$data,则必须使用其索引,即$query

答案 1 :(得分:1)

将$ data更改为$query,因为您将所有数据存储在$data['query']中,以便获取$ qyery变量中的所有数据

<?php foreach($data as $row){?>
.............  
<?php } ?>

<?php foreach($query as $row){?>
............   
<?php } ?>

如果不起作用,则print_r使用并检查该值退出

 public function gpdatacon()
    {
        $this->load->model('insertmodel');
        $data['query'] = $this->insertmodel->getpagedata();
        print_r( $data['query']);
        die()
        $this->load->view('backend/pages/pages',$data);
    }

了解更多信息

https://www.codeigniter.com/user_guide/general/views.html

答案 2 :(得分:0)

我自己尝试过,这就是我调用的URL的问题。我的两个页面看起来相似。并且意外地调用了明显不起作用的错误URL。