试图获得非对象的属性

时间:2014-03-27 07:24:56

标签: php codeigniter activerecord

当我想更新data时,我收到错误。错误显示是未定义的id_kegiatan并试图获取非对象的属性。我是Codeigniter的新手,无法弄清楚如何解决这个问题

查看

 <?php echo form_open('admin/kegiatan/tambah_kegiatan','name=form'); ?>
                    <?php echo validation_errors(); ?>
                    <div class="two fields">
                        <div class="field">
                            <label>ID Kegiatan</label>
                            <div class="ui small left icon input">
                                <input type="text" placeholder="ID" name="id_kegiatan" value="<?php echo $id_kegiatan;?>">
                                <i class="text file outline icon"></i>
                            </div>
                        </div>
                    </div>

                    <div class="fours fields">
                        <div class="field">
                            <div class="ui vertical segment">
                                <div class="date field">
                                    <label>Tanggal</label>
                                    <div class="ui small icon input left">
                                        <input type="text" placeholder="xx/xx/xxxx" name="tanggal_kegiatan" value="<?php echo $tanggal_kegiatan;?>">
                                        <i class="calendar icon"></i>
                                      </div>
                                </div>
                            </div>
                        </div>
                    </div>

                    <div class="two fields">
                        <div class="field">
                            <label>Nama Acara</label>
                            <div class="ui small left icon input">
                                <input type="text" placeholder="Nama Kegiatan" name="nama_kegiatan" value="<?php echo $nama_kegiatan;?>">
                                <i class="text file outline icon"></i>
                            </div>
                        </div>
                    </div>

                    <div class="field">
                        <label>Isi Kegiatan</label>
                        <textarea placeholder="Text" name="content">
                             <?php echo $content;?>
                        </textarea>
                    </div>

                <input class="ui small blue submit button" type="submit" value="Save">
                <input class="ui small basic button" type="reset" value="Reset">
                </form>

模态

function get_by_id($id_kegiatan)
    {
        $this->db->where('id_kegiatan', $id_kegiatan);
        return $this->db->get($this->tbl_kegiatan);
    }

    function update_kegiatan($id_kegiatan, $data)
    {
        $this->db->where('id_kegiatan', $id_kegiatan);
        $this->db->update($this->tbl_kegiatan, $data);
    }

控制器

function edit_kegiatan()
    {
        //set validation properties
        $this->form_validation->set_rules('id_kegiatan', 'Id Kegiatan', 'required|numeric');
        $this->form_validation->set_rules('tanggal_kegiatan', 'Tanggal', 'required');
        $this->form_validation->set_rules('nama_kegiatan', 'Judul Berita', 'required');
        $this->form_validation->set_rules('content', 'Content', 'required');

        //run validation
        if ($this->form_validation->run() == FALSE) {

            $q = $this->mkegiatan->get_by_id($id_kegiatan)->row(); //line undfined
            $data['id_kegiatan'] = $id_kegiatan; //Trying to get property of non-object
            $data['tanggal_kegiatan'] = $q->tanggal_kegiatan; //Trying to get property of non-object
            $data['nama_kegiatan'] = $q->nama_kegiatan; //Trying to get property of non-object
            $data['content'] = $q->content; //Trying to get property of non-object

        } else {
            //save data
            $id_kegiatan = $this->input->post('id_kegiatan');
            $data = array(
                'tanggal_kegiatan' => $this->input->post('tanggal'),
                'nama_kegiatan' => $this->input->post('nama_kegiatan'),
                'content' => $this->input->post('content')
                );
            $this->mkegiatan->edit($id_kegiatan,$data);

            //set user message
            $data['message'] = '<div class="success">update person success</div>';
        }

        $this->data['orang'] = $this->mlogin->dataPengguna($this->session->userdata('username'));
        $this->data['contents'] = $this->load->view('admin/kegiatan/edit_kegiatan', '', true);
        $this->load->view('template/wrapper/admin/wrapper_ukm',$this->data);
    }

请帮我做什么。谢谢。

1 个答案:

答案 0 :(得分:0)

在以下行中:

$q = $this->mkegiatan->get_by_id($id_kegiatan)->row(); //line undfined

$ id_kegiatan未定义且没有值,因此您对get_by_id()的调用不返回任何结果,这意味着您后续尝试从$ q变量访问属性会产生其他错误。

当然,您应该在控制器方法中的某处设置$ id_kegiatan变量,或者作为方法参数传递。