У меня есть 1 таблица с 1 флажком в каждой строке, поэтому, если отмечены 1 данные в строке, означает вставку, а если флажок снят, означает удаление в таблице.
вот изображение моей таблицы: https://imgur.com/p4iTN8C
это код моей таблицы (admin / roleaccess):
<div class="row">
<div class="col-lg-6">
<?= $this->session->flashdata('message'); ?>
<table class="table table-hover">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Menu</th>
<th scope="col">Akses</th>
</tr>
</thead>
<tbody>
<?php $i = 1; ?>
<?php foreach ($menu as $m) : ?>
<tr>
<th scope="row"><?= $i; ?></th>
<td><?= $m['menu'] ?></td>
<td>
<div class="form-check">
<input class="form-check-input" type="checkbox" <?= check_access($role['id_lvl'], $m['id']); ?> data-role="<?= $role['id_lvl']; ?>" data-menu="<?= $m['id']; ?>">
</div>
</td>
</tr>
<?php $i++ ?>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
мой скрипт:
<script>
$('.form-check-input').on('click', function() {
const menuId = $(this).data('menu');
const roleId = $(this).data('role');
$.ajax({
url: "<?php base_url('admin/changeAccess'); ?>",
type: 'post',
data: {
menuId: menuId,
roleId: roleId
},
success: function() {
document.location.href = "<?= base_url('admin/roleaccess/'); ?>" + roleId;
}
});
});
и моя функция в контроллере:
public function roleAccess($role_id)
{
$data['user'] = $this->db->get_where('user', ['nama' => $this->session->userdata('nama')])->row_array();
$data['title'] = 'Akses Role';
$data['role'] = $this->db->get_where('user_lv', ['id_lvl' => $role_id])->row_array();
$this->db->where('id != ', 1);
$data['menu'] = $this->db->get('user_menu')->result_array();
$this->load->view('templates/intern_header', $data);
$this->load->view('templates/sidebar', $data);
$this->load->view('templates/topbar', $data);
$this->load->view('admin/role-access', $data);
$this->load->view('templates/intern_footer');
}
public function changeAccess()
{
$menu_id = $this->input->post('menuId');
$role_id = $this->input->post('roleId');
$data = [
'id_lvl' => $role_id,
'menu_id' => $menu_id
];
$result = $this->db->get_where('user_access_menu', $data);
if ($result->num_rows() < 1) {
$this->db->insert('user_access_menu', $data);
} else {
$this->db->delete('user_access_menu', $data);
}
$this->session->set_flashdata('message', '<div class="alert alert-success" role="alert">Akses diganti !</div>');
}
, поэтому проблема заключается в том, что я пытался установить флажки в таблице, не обновляя данные (вставить / удалить).
Я попытался выяснить, в чем заключается проблема:
- он успешно запускает функцию onclick (потому что обновление страницы после флажков отмечено или не отмечено.
- он успешно передает данные menuId & roleId (которые я получаю, используя консоль браузера и добавляя html)ответ в сценарии)
так что, я думаю, проблема в функции changeAccess в моих контроллерах, но я не знаю, как это выяснить, потому что я не понимаю, как сбросить данные из ajax или чего-то еще.