codeigniter编辑(检查重复 如果找不到重复,则允许更新)



在编辑功能上检查副本

目前我的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
}

当用户只想编辑他们的详细信息时,并以用户名的方式提交表单的情况与他们的用户名相同邮政请求。如果是这样,我们将继续更新。

最新更新