diff --git a/src/backend/artikel.php b/src/backend/artikel.php index 7c5063a727d25f3b128b0722b1894a407ed739e3..da333bdf48de75a6a1145462761ccda9b55e9328 100644 --- a/src/backend/artikel.php +++ b/src/backend/artikel.php @@ -5,7 +5,6 @@ $searchTerm = isset($_GET['search']) ? $_GET['search'] : ''; $sortBy = isset($_GET['sort']) ? $_GET['sort'] : ''; $category = isset($_GET['category']) ? $_GET['category'] : ''; -// echo "<script>$sortBy</script>"; $servername = "db"; $username = "php_docker"; $password = "password"; @@ -18,7 +17,7 @@ if (!$conn) { } $itemsPerPage = 3; function calculateTotalPages($conn, $itemsPerPage) { - $query = "SELECT COUNT(*) as total FROM article"; // Sesuaikan dengan nama tabel Anda + $query = "SELECT COUNT(*) as total FROM article"; $result = mysqli_query($conn, $query); $totalRows = mysqli_fetch_assoc($result)['total']; return ceil($totalRows / $itemsPerPage); @@ -58,7 +57,7 @@ function calculateTotalPagesBySort($conn, $itemsPerPage, $searchTerm, $category, return ceil($totalRows / $itemsPerPage); } -// Fungsi untuk mengambil data pengguna berdasarkan halaman + function fetchDataByPage($conn, $page, $itemsPerPage) { $offset = ($page - 1) * $itemsPerPage; $query = "SELECT * FROM article LIMIT $offset, $itemsPerPage"; // Sesuaikan dengan nama tabel Anda @@ -74,10 +73,10 @@ function fetchDataByPage($conn, $page, $itemsPerPage) { return $data; } -// Fungsi untuk mengambil data pengguna berdasarkan halaman dan hasil pencarian + function fetchDataByPageAndSearch($conn, $page, $itemsPerPage, $searchTerm, $category, $sortBy) { $offset = ($page - 1) * $itemsPerPage; - $query = "SELECT * FROM article WHERE (article_judul LIKE '%$searchTerm%' OR article_content LIKE '%$searchTerm%')"; // Sesuaikan dengan nama tabel Anda dan nama kolom yang sesuai + $query = "SELECT * FROM article WHERE (article_judul LIKE '%$searchTerm%' OR article_content LIKE '%$searchTerm%')"; if (!empty($category)) { $query .= " AND article_category = '$category'"; } @@ -101,18 +100,18 @@ function fetchDataByPageAndSearch($conn, $page, $itemsPerPage, $searchTerm, $cat return $data; } -// Ambil data pengguna berdasarkan halaman dan hasil pencarian + if (!empty($searchTerm) || !empty($category) || !empty($sortBy)) { $data = fetchDataByPageAndSearch($conn, $page, $itemsPerPage, $searchTerm, $category, $sortBy); $totalPages = calculateTotalPagesBySearch($conn, $itemsPerPage, $searchTerm, $category, $sortBy); - // echo "<script>masuk sini</scrip>"; + } else { $data = fetchDataByPage($conn, $page, $itemsPerPage); $totalPages = calculateTotalPages($conn, $itemsPerPage); - // echo "default"; + } $response = array( 'data' => $data, diff --git a/src/public/js/artikel.js b/src/public/js/artikel.js index 7f62f09b21a5beb3a6ee717bbed092aa13c6c04b..a9eddf6c24a3b4bc598e92cf53776c2e591f4417 100644 --- a/src/public/js/artikel.js +++ b/src/public/js/artikel.js @@ -113,7 +113,7 @@ document.addEventListener("DOMContentLoaded", function () { xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status === 200) { - // console.log(xhr.responseText); + const response = JSON.parse(xhr.responseText); console.log(xhr.responseText); const { data, totalPages } = response; @@ -125,15 +125,20 @@ document.addEventListener("DOMContentLoaded", function () { xhr.open("GET", `src/backend/artikel.php?page=${currentPage}&search=${searchTerm}&sort=${sortBy}&category=${category}`, true); xhr.send(); } - searchInput.addEventListener("keyup", updateTable); + function debounce(func, delay) { + let timeoutId; + return function () { + clearTimeout(timeoutId); + timeoutId = setTimeout(func, delay); + }; + } + searchInput.addEventListener("keyup", debounce(updateTable, 500)); filterCategorySelect.addEventListener("change", updateTable); - // Menambahkan event listener untuk tombol "Sort by Date" sortDateButton.addEventListener("click", function () { sortBy = "date"; updateTable(); }); - // Menambahkan event listener untuk tombol "Sort Alphabetically" sortAlphabetButton.addEventListener("click", function () { sortBy = "alphabet"; updateTable();