Проблема, с которой сталкиваются при удалении записи пользователя с использованием AJAX и PHP - PullRequest
0 голосов
/ 28 июня 2018

Сценарий:

Я использовал AJAX для удаления записи и PHP в качестве языка программирования. Часть AJAX приведена ниже:

Здесь $('#id') - это id кнопки, которая содержит значение идентификатор пользователя из базы данных, динамически с помощью этой части: id='.$d['ID'].' реализовано во внешнем интерфейсе.

<script>
    function deleteRecord() {
        var var1 = $('#id').html();    
        var result = confirm("Do you want to delete this Record?");
        if(result){
            //call ajax
             $.ajax({
                 url: '<?php echo base_url();?>index.php/Device/delete', 
                 type: 'POST',
                 data: {
                 id: var1
                 },     
                 success: function(result){
                 $("#id").html(result);
                 alert('You have successfully deleted the user.');
                 },
                 error(e){
                 alert('Problem while interacting to the server.');
                 }
             });
            }
        else{
            console.log('Operation Cancelled.');
        }
    }
    </script>

Это часть интерфейса, где Button используется для удаления записей. Я использовал id='.$d['ID'].' для динамического получения значения идентификатора из базы данных.

<td> <button class="btn" type="submit" onclick="deleteRecord()" id='.$d['ID'].'>Delete 
</button> </td>

Это URL, указанный в AJAX:

url: '<?php echo base_url();?>index.php/Device/delete'

В приведенном выше URL-адресе Device - это имя Controller , а delete - это метод controller , который указан ниже:

public function delete($id = '') {
    $login = $_SESSION['username'];
    if (! in_array($login, $this->main_model->get_authorized_users())) {
        $redirect = site_url('device');
        redirect($redirect, 'refresh');
    }
    if ($this->input->post('submit')) {
        $username = $this->input->post('username');
        $deviceid = $this->input->post('deviceid');
        if ($deviceid == null || $username == null || $login == null) {
            $redirect = site_url('device');
            redirect($redirect, 'refresh');
            return;
        }
    } else {
        if ($id == '') {
            $redirect = site_url('device');
            redirect($redirect, 'refresh');
        }
        $res = $this->device_model->delete();
        $data['action'] = 'delete';
        $data['id'] = $id;
        $data['result'] = $this->device_model->get_device($id);
        $data['body'] = $this->load->view('register_view', $data, true);
        $this->load->view('template', $data);
    }
}

Вот часть модели:

function delete(){
    $username = $this->input->get('username');
    $deviceid = $this->input->get('deviceid');
    $id = $this->input->get('id');
    $language= $this->input->get('language');
    $deleted_by=$_SESSION['username'];
    $sql = "DELETE FROM devices
    WHERE id = $id";
    $query = $this->db->query ( $sql );
    //log update
    $this->log_device_delete($id,$username,$deviceid,$deleted_by);
}

Токовый выход:

  1. Когда нажата кнопка УДАЛИТЬ , отображается Поле подтверждения .
  2. В Поле подтверждения , " Вы хотите удалить эту запись? ".

Проблема:

Когда пользователь нажимает кнопку OK , появляется сообщение « Вы успешно удалили пользователя. » , но запись не удаляется .

Требуемое решение:

Когда пользователь нажимает кнопку OK в поле подтверждения, запись пользователя должна быть удалена.

Какая коррекция мне нужна здесь?

Предложения высоко ценятся.

Ответы [ 3 ]

0 голосов
/ 28 июня 2018

Попробуйте атрибут данных как

<td> <button class="btn" type="submit" onclick="deleteRecord()" data-id=".$d['ID'].">Delete 
</button> </td>

А в функции deleteRecord получить это значение как

   var var1 = $(this).attr("data-id");
0 голосов
/ 28 июня 2018

Вы уверены, что в запросе SQL вы указали правильный идентификатор?

Вы сказали:

Когда пользователь нажимает кнопку ОК, появляется сообщение «Вы успешно удалили пользователя». отображается, но запись не удаляется.

У вас нет ошибок, и AJAX вызывает функцию успеха. Все заставляют меня задуматься о проблеме с удостоверением личности.

0 голосов
/ 28 июня 2018

Вы используете $d['ID'] в атрибуте id. Но его нужно поместить как значение в какое-то поле.

Код, который вам нужно обновить:

<td> 
    <button class="btn" type="submit" onclick="deleteRecord(this)" data-id="<?php echo $d['ID']; ?>">Delete</button>
</td>

И обновить в JS как:

function deleteRecord(e) {
    var var1 = $(e).data("id"); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...