codeigniter 结构, 类里有一个方法叫insert(),调用这个方法就能实现某个帖子的点击数查询,就是用户访问了这个帖子,这个帖子的访问数增加一个。但我不知道如何调用这个方法,在mvc结构里,在哪里调用它呢?我在点击这个帖子的标题(即,要进入这个帖子观看)的时候,启动的方法里,加入了
$nt['notice_hit'] = $nt['notice_hit'] + 1; 这一段具体代码如下tag.push('<td class="td2"><a href="/hr/notice/detail/'+json.notice_seq+'">'+json.notice_title+'</a></td>');上面的detail方法如下
public function detail($notice_seq='')
{
$notice_seq = (int) $notice_seq;
if($notice_seq == 0){$this->msg("ERROR");}
$nt = Cl::get('Notice');
$nt->load($notice_seq);
$this->_location("BBS >NOTICE >".$nt['notice_title']);
$nt['notice_hit'] = $nt['notice_hit'] + 1;
$this->_layout('default');
$this->_view(array('nt'=> $nt));

}但貌似不对,请各位指教。

解决方案 »

  1.   

    help and help and thanks
      

  2.   


    数据层model继承ci的model类
    Controller继承CI_Controller __construct load model类
    $this->model->insert()
      

  3.   

    我在这里加了 public function detail($notice_seq='')
    {
    $notice_seq = (int) $notice_seq;
    if($notice_seq == 0){$this->msg("ERROR");}
    $nt = Cl::get('Notice');
    $nt->load($notice_seq);
    $this->_location("BBS >NOTICE >".$nt['notice_title']);


    $this->load->model('notice_hit');
    $this->model->insert();


    $this->_layout('default');
    $this->_view(array('nt'=> $nt));

    }
    运行页面时提示 Message: Undefined property: Notice::$model
      

  4.   

    insert是类 NoticeHit里的方法,这个方法是通过$nt = Cl::get('NoticeH');  这个来调用的
    public function insert()
    {
    if(!$this->fk_notice_seq || !$this->fk_user_seq) return false;
    /*------------------------------------------------------------*/
    $ci = & get_instance();
    /*------------------------------------------------------------*/ $data = array( 'fk_notice_seq' => $ci->db->escape_str($this->fk_notice_seq),
    'fk_user_seq' => $ci->db->escape_str($this->fk_user_seq),
    'notice_hit_time' => 'UNIX_TIMESTAMP()'
    ); $ci->notice_hit->i($data);

    $notice = \Cl::get("Notice");
    $notice->load($this->fk_notice_seq);
    $notice->hit();

    return ($this->notice_hit->affected_rows() > 0);
    }
      

  5.   

    $this->load->model('notice_hit');
    $this->notice_hit->insert();
      

  6.   

    Fatal error: Call to undefined method MODEL\Notice_hit::insert() in /home/gw/hosts/application/controllers/bbs/notice.php on line 127报这个错但是 models文件夹下的notice_hit文件内容如下。是不是不是这个把? 这里没有insert方法,而是类文件里有NoticeHit.php这个类文件。<?php 
    /**
    *  @author kinuz
    *  @since 2011. 6. 2
    */ 
    namespace MODEL
    {
    class Notice_hit extends \SIO_Model
    {
    public function __construct()
    {
    parent::__construct();
    $this->_init();
    }

    private function _init()
    {
    $this->table = 'notice_hit';
    $this->set_order("notice_hit_time DESC");
    }
    }
    }类文件NoticeHit里的insert()方法如下
    public function insert()
    {
    if(!$this->fk_notice_seq || !$this->fk_user_seq) return false;
    /*------------------------------------------------------------*/
    $ci = & get_instance();
    /*------------------------------------------------------------*/ $data = array( 'fk_notice_seq' => $ci->db->escape_str($this->fk_notice_seq),
    'fk_user_seq' => $ci->db->escape_str($this->fk_user_seq),
    'notice_hit_time' => 'UNIX_TIMESTAMP()'
    ); $ci->notice_hit->i($data);

    $notice = \Cl::get("Notice");
    $notice->load($this->fk_notice_seq);
    $notice->hit();

    return ($this->notice_hit->affected_rows() > 0);
    }
      

  7.   

    $this->load->model('notice_hit');
    $this->notice_hit->insert(); 这两个写在哪里阿?
      

  8.   

    恩,是写在controller里面了,但报错Fatal error: Call to undefined method MODEL\Notice_hit::insert() in /home/gw/hosts/application/controllers/bbs/notice.php on line 127127 行就是  $this->notice_hit->insert();我是在点击标题的时候执行的方法里写的。tag.push('<td class="td2"><a href="/bbs/notice/detail/'+json.notice_seq+'">'+json.notice_title+'</a></td>'); public function detail($notice_seq='')
    {
    $notice_seq = (int) $notice_seq;
    if($notice_seq == 0){$this->msg("ERROR");}
    $nt = Cl::get('Notice');
    $nt->load($notice_seq);
    $this->_location("BBS >NOTICE >".$nt['notice_title']);


    $this->load->model('notice_hit');
    $this->notice_hit->insert();

    $this->_layout('default');
    $this->_view(array('nt'=> $nt));

    }
      

  9.   

    $ci->notice_hit->i($data);
    是不是这边完成插入数据库记录
      

  10.   

    用$nt = Cl::get('Notice'); 这个调用Notice类,这个类里面有hit方法,如下。 public function hit()
    {
    /*------------------------------------------------------------*/
    $ci = & get_instance();
    /*------------------------------------------------------------*/ $data = array( 'notice_hit' => 'notice_hit+1');
    $ci->notice->u($data, array("notice_seq = {$ci->db->escape($this->notice_seq)}"));
    return ($ci->notice->affected_rows() > 0);
    }
      

  11.   

    是的,经过跟踪找到了public function i($data=array()) 
    {
         $data = (array) $data;
         if(count($data) > 0) {
    $sql = add_comment().$this->db->insert_string($this->table, $data);
    $sql = $this->check_query($sql);
    if($this->db->query($sql)) {
    return TRUE;
    }
         }
    return FALSE;
        }
      

  12.   

    问了一下,说要这么写 public function detail($notice_seq='')
    {
    $notice_seq = (int) $notice_seq;
    if($notice_seq == 0){$this->msg("ERROR");}
    $nt = Cl::get('Notice');
    $nt->load($notice_seq);
    $this->_location("BBS >NOTICE >".$nt['notice_title']);

    $nh = Cl::get('NoticeHit');
    $nh->insert();

    $this->_layout('default');
    $this->_view(array('nt'=> $nt));

    }但没有效果。