Форма подтверждения по электронной почте в Codeigniter

1

У меня есть модель редактирования, она содержит 2 формы, имя и адрес электронной почты, я поместил в свою форму javascript, поэтому, когда пользователь редактирует их имя/адрес электронной почты, программа проверяет, находится ли имя/адрес электронной почты уже в базе данных или нет, в базе данных будет указано, что имя /email уже существует.

Проблема в том, что для формы имени этот код работает отлично, но когда я попробовал его в форме электронной почты, он только читал один оператор if, который говорит, что сообщение об ошибке уже существует, даже если письмо не существует в базе данных.

Одна из важных вещей заключается в том, что URL-адрес в codeigniter не может читать символы, такие как @, поэтому тот же код для проверки имени не может использоваться при проверке электронной почты, поэтому я создал новую функцию и весь мой связанный код так:

Модель

function email_exists($email)
{
    $this->db->where('email', $email);
    $query = $this->db->get('petugas');
    if( $query->num_rows() > 0 ){ return TRUE; } else { return FALSE; }
}

контроллер

public function register_email_exists()
{
    if (array_key_exists('email',$_POST)) {
        $email=$this->input->post('email');
        if ($this->Crud->email_exists($email) == TRUE ) {
            echo false;
        } else {
            echo true;
        }
    }
}

Javascript

var check5; 
$("#editemail").bind("keyup change", function(){
    var editemail = $(this).val();
    $.ajax({
        url:'kasir/cekEmailEdit2',
        type:"POST",
        data:{send:true, email:email},
        success:function(data){ alert(email);
            if (editemail!=oldEmail){
                if(data==true){
                    //email not exist in database, so form can be edit
                    $("#report5").text("berhasil karna nama email baru");
                    check5=1; 
                }else{
                    //email exist in database, show alert
                    $("#report5").text("*email sudah terpakai"); 
                    check5=0; 
                }
            }else{
                //success submit form because no data has been changed
                $("#report5").text("berhasil karna gajadi ganti email");
                check5=1; 
            }
        }
    });
});
  • 0
    Попробуйте ввести адрес электронной почты, который уже находится в базе данных и увидеть результат. и поменяй свой контроллер. используйте true вместо false и наоборот.
Теги:
codeigniter
forms
email

1 ответ

1

Попробуй это:

function email_exists($email)
{
    return $this->db->where('email', $email)->count_all_results('petugas');
}

public function register_email_exists()
{
    $result = array(
        'status' => 1 // denotes exists
    );

    if($this->input->post('email') != ''){
        $email = $this->input->post('email');
        if($this->Crud->email_exists($email)){
            $result['status'] = 1;
        }else{
            $result['status'] = 0;
        }
    }

    echo header('Content-Type: application/json');
    echo json_encode($result);
}

Часть JS:

success:function(data){ 
    data = JSON.parse(data);
    if(data.status){
        alert('Exists');
    }else{
        alert('Not exists');
    }
}
  • 0
    ничего не происходит, сначала появляется предупреждение *emailexist , но после использования вашего кода, сейчас ничего не происходит, никаких уведомлений вообще, и это влияет на мою форму имени. и что использовать для count_all_results('petugas')
  • 0
    Проверьте вашу консоль, вкладку сети для ответа, который вы получаете. count_all_results() - это краткая форма count() в mysql, которая выдает мумерный вывод. Добавлена одна строка в функцию JS, пожалуйста, следуйте.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню