user user - 5 months ago 46
Ajax Question

Check if username exists in database with codeigniter and ajax

Can anyone help me check if a username is in my database using ajax and code igniter?
I can't use the form_validation method as I have modal windows which interfere with the checking.

Currently my controller looks like:

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


My Model:

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


and my ajax post:

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>

Answer

Try this

In Ajax

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

In Controller

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

In Model

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
}