3

这是我第一次使用 Codeigniter,需要一些帮助。我需要在 CI 3 教程和网络资源之后使用 JOINS 和 WHERE 语句进行 Db 查找,但我确实陷入了困境,并且不能 100% 确定我在哪里以及我做错了什么......

我的 Categorylis_model.php 如下所示: class Categorylist_model extends CI_Model {

    public function __construct()
    {
            $this->load->database();
    }
    public function get_categoryads()
    {

       $this->db->select('ads.id AS id, ad_image.image AS image, ads.userid AS userid, ads.adnr AS adnr,
      ads.location AS town, search_town.townFileName AS townlink, search_prov.provLabel AS province, 
      search_prov.subLink AS provlink,text,
      adcat.name AS catname,  adcat.clinkname AS clinkname, adsubcat.name AS subcatname, adsubcat.linkname AS subcatlink,
      adcat.id AS catid, adsubcat.id AS subcatid, ads.r_option AS r_option, ads.R_rand AS R_rand, 
      adcat.catcol1 AS catcol1, adcat.catcol2 AS catcol2, search_town.townId,ads.townId');
      $this->db->from('ads');
      $this->db->join('adsubcat', 'adsubcat.id=ads.subcatid');
      $this->db->join('adcat', 'adcat.id=ads.catid');
      $this->db->join('search_town', 'search_town.townId=ads.townId');
      $this->db->join('search_region', 'search_region.regionId=search_town.relRegionId');
      $this->db->join('search_prov', 'search_prov.provId=search_region.relProvId');
      $this->db->join('ad_image', 'ad_image.adid=ads.id');
      $this->db->where("adcat.id='2' AND ads.subcatid!='843' AND scam=0 AND adactive=1 AND ads.userid=ad_image.user AND 
      ad_image.picorder=1 AND ad_image.aproved =1 AND ads.subcatid !='843' AND ads.subcatid !='841'");
      $this->db->group_by("ads.userid");
      $this->db->order_by('addate','desc');
      $this->db->limit(10); 
      return $query->row_array();
    }

    }

Categories.php 控制器如下所示:

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

  class Categories extends CI_Controller 
  {
      public function __construct()
    {
            parent::__construct();
            $this->load->model('categorylist_model');
    }
    public function index()
     {
          $this->load->helper('url');
          $data = array('sitename'=>'CategoryAds', 'page_title' => 'Categories');
      $this->load->view('templates/header', $data);
          $this->load->view('templates/navbar');
          $this->load->view('templates/breadcrumbs');
          //$this->load->view('templates/category_selector');
          $this->load->view('content_categories');
          $this->load->view('templates/footer');


     }
    public function view()
    {
      $data['categories'] = $this->categorieslist_model->get_categoryads();
    }

  }

我的观点有以下几点:

<?php foreach ($categories as $ad_item): ?>
 <?php echo $ad_item['text'] ?>
<?php endforeach ?>

查看页面时出现以下错误。

        A PHP Error was encountered
    Severity: Notice
    Message: Undefined variable: categories

    Filename: views/content_categories.php
    Line Number: 114

    Backtrace:
    File: /usr/www/XXXXXXX/ci/application/views/content_categories.php
    Line: 114
    Function: _error_handler

    File: /usr/www/XXXXXXX/ci/application/controllers/Categories.php
    Line: 18
    Function: view

    File: /usr/www/XXXXXXX/ci/index.php
    Line: 292
    Function: require_once
4

2 回答 2

0

您的控制器如下所示 -

public function index() {
          $this->load->helper('url');
          $data['metadata'] = array('sitename'=>'CategoryAds', 'page_title' => 'Categories');
//directly
$data['categories'] = $this->categorylist_model->get_categoryads();

          $this->load->view('templates/header', $data);
          $this->load->view('templates/navbar');
          $this->load->view('templates/breadcrumbs');
          $this->load->view('content_categories', $data);
          $this->load->view('templates/footer');


     }
    /** No need I think
   public function view() {
      $data['categories'] = $this->categorieslist_model->get_categoryads();
    } **/

你的看法是——content_categories.php

<?php foreach ($categories as $ad_item): ?>
<?php echo $ad_item['text'] ?>
<?php endforeach ?>

我使用 Codeigniter 的工作流程如下 -

模型目录下的 cat_model.php

public function get_category() {
// active records code with return
}

控制器目录中的 CatCon.php

function __construct() {
   parent::__construct();
   $this->load->model('cat_model');
}
function index() {
   $data['categories'] = $this->cat_model->get_category();
   // pass the data variable to view
   $this->load->view('content_categories', $data);
}

视图目录中的 content_categories.php

print_r($categories);
于 2015-08-03T19:55:07.357 回答
0

很高兴我能提供帮助。就像我说的,有几个问题,但随着时间的推移,它们会很容易被注意到。

  • 一,控制器没有被正确调用。
  • 数据库查询没有返回正确的数据
于 2015-08-03T21:58:11.633 回答