我有以下用户名查找功能,用于检查用户名是否可用。
<script language="javascript">
function lookUpUsername(){
var name = document.getElementById('username').value;
//alert(name);
$.post(
'users/ajax_lookUpUsername',
{ username: name },
function(response) {
if (response == 1) {
// alert('username available');
} else {
// setTimeout("alert("Here I am!")", 5000);
alert('Username Already Taken! Please Select Another Name.');
}
});
}
</script>
这是我在控制器中的AJAX_lookUpUsername函数:
function ajax_lookUpUsername(){
$username = $this->input->post('username');
$this->db->where('username', $username);
$query = $this->db->get('mcb_users');
if ($query->num_rows() > 0){
echo 0;
} else {
echo 1;
}
代码工作正常。当用户输入现有用户名时,它会显示一条警告消息,但是,当用户继续而不修改它并单击保存按钮时,它会被保存!
在从控制器保存到数据库之前,有没有办法重定向用户?
答案 0 :(得分:0)
您也可以使用onsubmit
表单验证来执行此操作。但是,还有另一种方法。
您也可以通过控制器执行此操作。在将数据插入数据库之前,在控制器的保存功能中添加以下代码:
$userarraydb = $this->mdl_users->getAllusername();
foreach($userarraydb as $dbusersname)
{
if(($dbusersname->text == $username) && ($dbusersname->id != $user_id) )
{
//echo $this->lang->line('user_name_must_be_unique');
//sleep(1);
?> <script> alert('Record can not be saved! Username must be unique.'); </script> <?php
return false;
}
}
并将以下功能添加到您的用户模型中:
function getAllusername()
{
$teller_id = $this->session->userdata('user_id');
$this->db->select('username as text, id as id');
$this->db->from('mcb_users');
$result = $this->db->get();
$username = $result->result();
//all user name taneko cha
return $username;
// return $result->result();
}