gpt4 book ai didi

php - Codeigniter 表单发布和验证

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:48:01 26 4
gpt4 key购买 nike

我不是专业人士,但了解 PHP,我是 Codeigniter 的新手。

正在学习这些教程:http://net.tutsplus.com/articles/news/codeigniter-from-scratch-day-5-crud/

好的,所以我有一个列出用户的页面,点击用户名将转到一个编辑页面,该页面的 url 为:index.php/users/edit/1(其中 1 是用户 ID)

在编辑页面上是一个表单,这个表单包含几个部分,每个部分都是从数据库中的不同表中填充的。所以我的编辑 Controller 如下:

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_user'] 包含用户数据,如姓名、用户名、电子邮件$data['data_user_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"'); ?>

当我发帖时,我发送数据到:index.php/users/update

到目前为止,我的这个页面的 Controller 是:

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();
}

}

现在,我只是测试用户“name”的验证,其中表单 input=name id=name

我认为我没有正确处理其中的 if ($this->form_validation->run() == FALSE) 部分,如果表单包含数据,它会传递并重定向到索引,如果我将名称留空它要么没有正确处理编辑页面,要么我不知道,有些地方不对。我认为这是因为页面正在使用 post 数组重新加载,而不是像我在函数 edit() 中那样传递 $data。

回到表单页面,它应该显示 validation_errors,它显示:

名称字段是必需的。

这是正确的,但是,对于应该预先填充的其余字段,它显示 PHP 错误:

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: userUserName

Filename: pages/users_edit.php

Line Number: 50

最佳答案

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

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);
}
}
}

关于php - Codeigniter 表单发布和验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16056481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com