在编辑功能上检查副本
目前我的DB表
USERDB
userId userName userPassword userEmail userAddress userPhone
我想要的
允许检查"用户名"重复和if"用户名"返回 是的,然后允许编辑其他Textfield。
遇到的问题:
当我没有更改"用户名"字段时,我进行了编辑 用户邮件,由于我的"用户名",它将始终返回false 使用当前数据库数据复制。
$checkvalidation = $this->userdb->UsernameDuplicatechecking($userName);
if($checkvalidation == TRUE){
$this->userdb->updateUser($userName,$userEmail,$userAddress,$userPhone,$id);
}else{
$this->session->set_flashdata('errormessage', 'Duplicate');
redirect("User/EditUserAccount/$id");
}
更新模型代码
public function updateUser($userName,$userEmail,$userAddress,$userPhone,$id);
{
$UserArray = array(
'userName' => $userName,
'userEmail' => $userEmail,
'userAddress' => $userAddress,
'userPhone' => $userPhone,
);
$this->db->set($UserArray);
$this->db->where('userId',$id);
$this->db->update('USERDB');
}
对于此问题,您必须发送用户ID,您可以在哪个函数中查看重复的用户名。
$this->userdb->UsernameDuplicatechecking($userName,$id);
将用户ID发送到函数 usernameduplicatechecking 。添加一个条件,用户ID不等于此当前ID。
$this->db->where("userId <> $id");
我希望这会解决您的问题。
好吧,由于用户可以编辑他们的信息,所以我假设他们已登录。在这种情况下,您需要从会话或任何地方获得当前的用户名,并执行类似的内容:p>伪代码:
if ($isNotDuplicate || $postedUsername == $sessOrDbUsername) {
// update
}
当用户只想编辑他们的详细信息时,并以用户名的方式提交表单的情况与他们的用户名相同邮政请求。如果是这样,我们将继续更新。