Codeignighter页面数据不显示

时间:2018-08-10 07:26:45

标签: php codeigniter

我试图使用Codeignighter获得一个非常简单的查询结果集,以显示在页面上。

对于我的控制器,我有这个:

class Homepage extends CI_Controller {

function __construct() {
    parent::__construct();
    $this->load->helper('string');
    $this->load->helper('text');
    $this->load->library('form_validation');
    $this->load->helper('url');
    $this->load->model('Job_sectors_model');
}


public function index(){
    $page_data['sectors'] = $this->Job_sectors_model->get_sectors();
    $this->load->view('header');
    $this->load->view('homepage', $page_data);
    $this->load->view('footer');
}
}

对于我的模型文件,我有这个:

    class Job_sectors_model extends CI_Model {

      function get_sectors() {
        return $this->db->get('sectors');
      }

    }   

在我的查看文件中,我有一个简单的选择:

                  <select class="form-control" name="job_sectors">
                     <option>Choose job sector...</option>
                     <?php foreach ($sectors->result() as $row) : ?>
                      <option value="<?php echo $row->nc_id ; ?>"><?php echo $row->tc_name ; ?></option>
                     <?php endforeach ; ?>
                 </select>

我的autoload.php文件中有此设置:

$autoload['libraries'] = array('database', 'session');

页面已加载,并且选择具有db表中正确数量的项目。当您打开选择时,我得到的是每个Seelcts选项中的错误。我在检查时会看到以下内容:

A PHP Error was encountered

Severity: Notice
Message:  Undefined property: stdClass::$nc_id
Filename: views/homepage.php
Line Number: 68

因此nc_id是一个表列名称,只是不返回该值。如何定义属性以阻止发生此错误?

非常感谢 M


好,现在我可以使用它了,但是感觉不对:

所以我的模型是这样的:

    class Job_sectors_model extends CI_Model {

    function get_sectors() {

        $query = $this->db->get('sectors');
        return $query->result_array();

    }        

    }   

我的看法是这样

<select class="form-control" name="job_sector">
                <?php foreach ($sectors as $sector): ?>
                  <option value="<?php echo $sector['NC_ID']; ?>"><?php echo $sector['TC_NAME']; ?></option>
                <?php endforeach; ?>
              </select>

我的控制器是这个

class Homepage extends CI_Controller {

function __construct() {
    parent::__construct();
    $this->load->helper('string');
    $this->load->helper('text');
    $this->load->helper('form');
    $this->load->helper('url');
    $this->load->library('form_validation');
    $this->load->model('Job_sectors_model');
}


public function index(){
    $this->load->view('header');
    $page_data['sectors'] = $this->Job_sectors_model->get_sectors();
    $this->load->view('homepage', $page_data);
    $this->load->view('footer');    
}

当我说ity感觉不正确时,这是否是在Codeigniter中进行编码的正确方法,感觉就像我在将其一起破解以使其正常工作吗?

谢谢

3 个答案:

答案 0 :(得分:0)

2种可能性。 1列名实际上不存在,2您没有任何行。 这样可以防止以后引起问题。

class Job_sectors_model extends CI_Model {

      function get_sectors() {
        $q = $this->db->get('sectors');
        if ($q->num_rows > 0) {
            return $q->result();
        }
        return false;
      }

    }   

查看:

        <?php if ($sectors): ?>
          <select class="form-control" name="job_sectors">
                 <option>Choose job sector...</option>
                 <?php foreach ($sectors as $row) : ?>
                  <option value="<?php echo $row->nc_id ; ?>"><?php echo $row->tc_name ; ?></option>
                 <?php endforeach ; ?>
             </select>
          <?php else: ?>
             No sectors
          <?php endif; ?>

答案 1 :(得分:0)

您只需在$ pagedata中传递来自模型的数据,并在加载视图时传递它,它将生成像这样的数组

$this->load->view('homepage',['pagedata' => $pagedata] ) ;

在视图中,如果单行$ pagedata-> nc_id,则可以直接使用 否则,您可以像这样简单地使用foreach循环

<?php foreach ($pagedata as $row) {?>
//your code inside and access db rows by $row->nc_id
<?php } ?>

//don't use colon after foreach loop its php

答案 2 :(得分:0)

为什么要发送db-> get对象来查看结果对象/数组?有什么具体原因吗?

通常的方法应该类似于

class Job_sectors_model extends CI_Model {

      function get_sectors() {
        $result =array();
        foreach($this->db->get('sectors')->result() as $row)
         {
           $result[$row->nc_id]=$row->tc_name ;
         }
        return $result;

      }

    }  

,而不是:

<select class="form-control" name="job_sectors">
                     <option>Choose job sector...</option>
                     <?php foreach ($sectors->result() as $row) : ?>
                      <option value="<?php echo $row->nc_id ; ?>"><?php echo $row->tc_name ; ?></option>
                     <?php endforeach ; ?>
                 </select>

查看文件应类似于:

<?php echo form_dropdown('job_sectors', $sectors, 'default_value',' class="form-control" ' ); ?>

$this->load->helper('form');放入控制器构造函数