首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Update函数失败,并显示"Severity: Notice“

Update函数失败,并显示"Severity: Notice“
EN

Stack Overflow用户
提问于 2011-04-28 06:10:17
回答 2查看 669关注 0票数 0

我是一个PHP和CodeIgniter的新手。我正在建立一个CRUD应用程序,期待更新操作的良好工作。

我的控制器:

代码语言:javascript
复制
class Site extends CI_Controller {

       function __construct()
       {
            parent::__construct();
        $this->is_logged_in();
       }

    function members_area() 
    {
        $data = array();

        if($query = $this->site_model->get_records()) // site model is autoloaded.
        {
            $data['records'] = $query;
        }

        $this->load->view('members_area', $data);
    }

    function create()
    {
        $data = array(
            'title' => $this->input->post('title'),
            'content' => $this->input->post('content')
        );

        $this->site_model->add_record($data);
        $this->members_area();
    }

    function delete()
    {
        $this->site_model->delete_row();
        $this->members_area();
    }

    function update()
    {
        $data = array(
            'title' => $this->input->post('updtitle'),
            'content' => $this->input->post('updcontent')
        );

        $this->site_model->update_record($data);
        $this->members_area();
    }

    function is_logged_in()
    {
    $is_logged_in = $this->session->userdata('is_logged_in');

    if(!isset($is_logged_in) || $is_logged_in != true)
        {
                $this->load->view('login_form');
        }
    }
}

我的模型:

代码语言:javascript
复制
class Site_model extends CI_Model {

    function get_records()
    {
        $query = $this->db->get('data');
        return $query->result();
    }

    function add_record($data) 
    {
        $this->db->insert('data', $data);
        return;
    }

    function delete_row()
    {
        $this->db->where('id', $this->uri->segment(3));
        $this->db->delete('data');
    }

    function update_record($data) 
    {
        $this->db->where('id', $id);
        $this->db->update('data', $data);
    }    

我的观点是:

代码语言:javascript
复制
<h2>update</h2>
    &lt;?php echo form_open('site/update');?&gt;
    <p>
        <label for="update title">Update Title:</label>
        &lt;input type="text" name="updtitle" id="updtitle" /&gt;
    </p>

    <p>
        <label for="update content">Update Content:</label>
        &lt;input type="text" name="updcontent" id="updcontent" /&gt;
    </p>    

    <p>
        &lt;input type="submit" value="Update" /&gt;
    </p>
    &lt;?php echo form_close(); ?&gt;

    <hr />

如果我试图更新我的数据库中的一条记录,我在我的模型中得到一个错误("Severity: Notice","Message: Undefined variable: id"),并且更新不会发生。

我遗漏了什么?你能帮帮忙吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-29 03:35:15

我通过重新运行我的应用程序找到了一个解决方案。

回声$id和$data有所帮助。没有输出任何内容,因此没有捕获任何内容。做更多的阅读可以重新设计我的应用。

现在,我依赖于要更新的记录上的URI:

1)在我的控制器中,我添加了这个更新函数

代码语言:javascript
复制
function update() {
    $id = $this->uri->segment(3);
    $title = $this->input->post('title');
    $content = $this->input->post('content');

    $this->posts_model->update_record($id, $title, $content)
} 

2)在我的模型中,我添加了这个函数

代码语言:javascript
复制
function update_record($id, $title, $content) {
    $data = array(
        'title' => $title,
        'content' => $content
    );

    $this->db->where('id', $id);
    $this->db->update('data', $data);
} 

3)最后,我创建了一个仅用于更新的视图

代码语言:javascript
复制
<?php $this->load->helper('form'); ?>

<?php echo form_open('site/update/'.$id); ?>

        <?php echo form_input('title'); ?>
        <?php echo form_textarea('content'); ?>
        <?php echo form_submit('submit', 'Submit'); ?>

<?php echo form_close(); ? 

它现在运行得很好。我所要做的就是将浏览器指向site/update/post-id_number.

我需要弄清楚的是如何裁剪界面,这样我就可以将更新的视图与我拥有的另一个视图合并。

谢谢你抽出时间来。

票数 0
EN

Stack Overflow用户

发布于 2011-04-28 06:58:44

您没有在模型调用中定义$id

代码语言:javascript
复制
function update_record($data) 
{
    $this->db->where('id', $id);// <-- $id is not defined
    $this->db->update('data', $data);
}   

你也没有在你的控制器调用中使用它:

代码语言:javascript
复制
function update()
{
    $data = array(
        'title' => $this->input->post('updtitle'),
        'content' => $this->input->post('updcontent')
    );

    $this->site_model->update_record($data);
    $this->members_area();

    // Where is id??

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5811230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档