Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter表单post和验证_Php_Codeigniter - Fatal编程技术网

Php Codeigniter表单post和验证

Php Codeigniter表单post和验证,php,codeigniter,Php,Codeigniter,我不是专业人士,但对PHP很熟悉,我是Codeigniter的新手 我们正在学习以下教程: 好的,我有一个列出用户的页面,点击用户名将进入一个编辑页面,该页面的url是:index.php/users/edit/1(其中1是用户id) 在编辑页面上有一个表单,该表单包含几个部分,每个部分都是从数据库中的不同表填充的。因此,我的编辑控制器如下所示: function edit() { //load model $this->load->model('u

我不是专业人士,但对PHP很熟悉,我是Codeigniter的新手

我们正在学习以下教程:

好的,我有一个列出用户的页面,点击用户名将进入一个编辑页面,该页面的url是:index.php/users/edit/1(其中1是用户id)

在编辑页面上有一个表单,该表单包含几个部分,每个部分都是从数据库中的不同表填充的。因此,我的编辑控制器如下所示:

function edit() {

        //load model
        $this->load->model('users_model');

        //assign user data from DB 
        $data['data_user'] = $this->users_model->getUser($this->uri->segment(3));
        //get users Password, using username from above
        $data['data_user_password']= $this->users_model->getUserPassword($data['data_user'][0]->UserName);

        $data['page_content'] = 'pages/users_edit';
        $this->load->view('template/template', $data);
    }
注意:
$data['data\u user']
包含用户名、用户名、电子邮件等用户数据
$data['data\u user\u password']
包含来自不同表的用户密码

然后我可以在users_edit.php上填充表单,这一切都很好。 我通过以下操作访问此数据:

if (is_array($data_user)) {
    foreach($data_user as $user) 
    {
        $userID         = $user->id;
        $userName       = $user->Name;
        $userUserName   = $user->UserName;
        $userMail       = $user->Mail;
        $userDepartment = $user->Department;
        $userWorkPhone  = $user->WorkPhone;
        $userHomePhone  = $user->HomePhone;
        $userMobile     = $user->Mobile;

    }
}
//user password
if (is_array($data_user_password)) {
    foreach($data_user_password as $user) 
    {
        $userPassword   = $user->value;
    }
}

Name: 
<?php echo form_input('name', set_value('name', $userName), 'id="name" class="inputLong"'); ?>
在函数update()中,验证后加载视图,但不向其传递任何数据变量。因此,您没有任何可以在视图文件中访问的变量

必须以与函数edit()相同的方式设置变量:


目前没有设置变量$data\U user,因此您无法循环使用它

您可以在编辑功能中进行验证,而不是使用更新功能,这样,您的数据仍然可以查看,如果验证有错误,codeigniter将负责重新填充字段。如果验证正常,则执行下一步


是的,表单页面加载了以下内容:请确保您已在
$data\u user
中定义了“serUserName”变量,如果您接收到一个用户的数据,则不要在其上循环。@标记您没有向视图发送任何变量,因此无法在那里访问它们$数据用户不存在,所以它不会循环..这意味着我的代码中的if(is_array($data_user))部分在我看来是不正确的,那应该是什么?我不明白,在视频教程和用户指南中:他们没有重新加载页面并向其传递任何数据,在视频中他们说Codeigniter为您处理这些。。??这意味着在再次加载表单之前,我需要使用发布的数据重新构造$data['data\U user']和$data['data\U user\U password']数组,对吗?当您转到“编辑”页面时,将使用您的用户数据加载Controller->edit()函数。。提交表单时,会将表单发送到控制器->更新()函数,其中未设置该用户数据。。所以你无法访问它:)。。
function update() {

        echo '<pre>';
        print_r($_POST);
        echo '</pre>';
        //exit();

        $this->load->library('form_validation');

        $this->form_validation->set_rules('name', 'Name', 'trim|required');

        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('pages/users_edit');
        }
        else
        {
            $this->index();
        }

    }
A PHP Error was encountered

Severity: Notice

Message: Undefined variable: userUserName

Filename: pages/users_edit.php

Line Number: 50
$this->load->view('pages/users_edit');
$this->load->view('template/template', $data);
function edit() {

    //load model
    $this->load->model('users_model');

    //assign user data from DB 
    $data['data_user'] = $this->users_model->getUser($this->uri->segment(3));
    //get users Password, using username from above
    $data['data_user_password']= $this->users_model->getUserPassword($data['data_user'][0]->UserName);

    $data['page_content'] = 'pages/users_edit';
    $this->load->view('template/template', $data);

    //is the form submitted
    if(form submit){
         if ($this->form_validation->run() == TRUE)
         {
             $this->index();
         }
         else
         {
         $this->load->view('pages/users_edit', $data);
         }
    }
}