2016-06-23 18 views
2

任何人都可以幫助我檢查用戶名是否在我的數據庫中使用ajax和代碼點火器? 我無法使用form_validation方法,因爲我的模態窗口會干擾檢查。用codeigniter和ajax檢查數據庫中是否存在用戶名

目前我的控制器看起來像:

function filename_exists(){ 
     $username = $this->input->post('username'); 
     $data['exists'] = $this->User_model->filename_exists($username); 
    } 

我的模型:

function filename_exists($username) 
{ 

    $this->db->select('*'); 
    $this->db->from('users'); 
    $this->db->where('username', $username); 
    $query = $this->db->get(); 
    if ($query->num_rows() == 0) { 
     return true; 
    } else { 
     return false; 
    } 
} 

和我的AJAX後:

function check_if_exists() { 

    <?php $username = $this->input->post('username'); 
    ?> 
    var username = '<?php echo $username ?>'; 
    var DataString=$("#form1").serialize(); 
    $.ajax({ 
    url: "<?php echo base_url(); ?>index.php/Files/filename_exists/", 
    type: "post", 
    data: DataString + '&username=' + username, 
    success: function(response) { 


      if (response == true) { 
       $('#msg').html('<span style="color: green;">'+msg+"</span>"); 

      } 
      else { 

       $('#msg').html('<span style="color:red;">Value does not exist</span>'); 
      } 


     } 
    }); 


} 

UPDATE

<form name = "form1" id = "form1" method ="post"> <!--action="<?php echo base_url()."index.php/Admin/create_user"; ?>"--> 
    <?php echo validation_errors(); ?> 
    <label for="userID" class = "labelForm">User ID:</label> 
    <input type="text" id="userID" name="userID" class = "input2"> 
    <label for="first_name" class = "labelForm">First Name:</label> 
    <input type="text" id="first_name" name="first_name" class = "input2"> 
    <label for="last_name" class = "labelForm">Last Name:</label> 
    <input type="text" id="last_name" name="last_name" class = "input2"> 
    <label for="username" class = "labelForm">Username:</label> 
    <input type="text" id="username" name="username" class = "input2" onblur="check_if_exists();"> 
    <label for="password" class = "labelForm">Password:</label> 
    <input type="password" id="password" name="password" class = "input2" onblur="checkPasswords();"> 
    <label for="passconf" class = "labelForm">Password:</label> 
    <input type="password" id="passconf" name="passconf" class = "input2" onblur="checkPasswords();"> 
    <label for="email" class = "labelForm">Email:</label> 
    <input type="text" id="email" name="email" class = "input2"> 
    <button type="button" id = "new_user_submit">Add New User</button> 
+0

將'$ query-> num_rows()== 0'更改爲'$ query-> num_rows()> 0'並測試 –

+0

'print_r($ username)'在控制器中並且檢查數據即將到來 –

+0

@Abdulla當我嘗試打印用戶名什麼都沒有出現,但如果我在console.log(DataString)成功部分的ajax後它告訴我我進入了什麼? – user

回答

2

試試這個

在阿賈克斯

function check_if_exists() { 

var username = $("#username").val(); 

$.ajax(
    { 
     type:"post", 
     url: "<?php echo base_url(); ?>index.php/files/filename_exists", 
     data:{ username:username}, 
     success:function(response) 
     { 
      if (response == true) 
      { 
       $('#msg').html('<span style="color: green;">'+msg+"</span>"); 
      } 
      else 
      { 
       $('#msg').html('<span style="color:red;">Value does not exist</span>'); 
      } 
     } 
    }); 
} 

在控制器

function filename_exists() 
{ 
    $username = $this->input->post('username'); 
    $exists = $this->User_model->filename_exists($username); 

    $count = count($exists); 
    // echo $count 

    if (empty($count)) { 
     return true; 
    } else { 
     return false; 
    } 
} 

在型號

function filename_exists($username) 
{ 
    $this->db->select('*'); 
    $this->db->from('users'); 
    $this->db->where('username', $username); 
    $query = $this->db->get(); 
    $result = $query->result_array(); 
    return $result 
} 
+0

不幸的是,它仍然不工作@Abdulla ..當我console.log(用戶名)我可以看到初始化,但是當我寫console.log(響應)它出現空白 – user

+0

我實際上發現當我回聲($ count )在控制器中似乎工作(就像在if語句之前)。這似乎是一個奇怪的行爲,雖然當我把它拿出來似乎返回false,無論用戶名是否存在或不..這是好的使用像這樣嗎? @abdulla真的很感謝幫助! – user

+0

爲什麼要爲所有用戶數據查詢數據庫?這將是一個更好的查詢,將花費更少的時間。 'function filename_exists($ username) { $ this-> db-> where('username',$ username); return $ this-> db-> count_all_results('users'); } – DevNinjaJeremy

0

只是相同的結果的另一種方法

模型

function filename_exists($username) { 
    $this->db->select()->from('users')->where('username', $username); 
    $query = $this->db->get(); 

    return $query->first_row('array'); // returns first row if has record in db 
} 

控制器

function filename_exists() { 
    $username = $this->input->post('username'); 
    $user = $this->user_modal->filename_exists($username); 

    return !empty($user); // not empty returns true else false 
} 

AJAX

裏面的check_if_exists功能。

$.post('<?php echo base_url(); ?>index.php/files/filename_exists', { username: $('#username').val() }, function(response) { 
    var html = '<span style="color:red;">Value does not exist</span>'; 
    if (response == true) { 
     html = '<span style="color: green;">' + msg + '</span>'; 
    } 
    $('#msg').html(html); 
}); 
0

如果您只是試圖查看用戶是否已經存在,沒有理由用get()函數進行查詢。只要做count_all_results()它會返回一個數字,如果用戶被發現,0,如果沒有。

function filename_exists($username) { 
    $this->db->where('username', $username); 
    return $this->db->count_all_results('users'); 
} 

所有這些都會返回一個大於零的數字,如果用戶名存在於你的數據庫中的話。

相關問題