From 5c32fb194c45b8e2f9bfef958d4c6f79f9d9519f Mon Sep 17 00:00:00 2001 From: Naufal-Nalendra <16521240@std.stei.itb.ac.id> Date: Sun, 8 Oct 2023 13:27:09 +0700 Subject: [PATCH] fix: sorting for search --- app/models/BookModel.php | 25 +++++++++++++++++++-- app/views/navbar/navbar.php | 7 ++++-- mysql/#innodb_redo/#ib_redo10 | Bin 3276800 -> 3276800 bytes public/js/navbar.js | 40 ++++++---------------------------- 4 files changed, 35 insertions(+), 37 deletions(-) diff --git a/app/models/BookModel.php b/app/models/BookModel.php index 3585580..680d8da 100644 --- a/app/models/BookModel.php +++ b/app/models/BookModel.php @@ -100,7 +100,17 @@ class BookModel $sql .= " AND (title LIKE '%$searchInput%' OR author.name LIKE '%$searchInput%')"; } - if ($sortSelect != "none" && $sortOrder) { + if ($sortSelect != "none") { + // Check for valid sort order (ASC or DESC) + if ($sortOrder === 'ascending') { + $sortOrder = 'ASC'; + } elseif ($sortOrder === 'descending') { + $sortOrder = 'DESC'; + } else { + // Default to ascending if sortOrder is not valid + $sortOrder = 'ASC'; + } + $sql .= " ORDER BY $sortSelect $sortOrder"; } $sql .= " LIMIT $limit OFFSET $offset"; @@ -124,10 +134,21 @@ class BookModel $sql .= " AND (title LIKE '%$searchInput%' OR author.name LIKE '%$searchInput%')"; } - if ($sortSelect != "none" && $sortOrder) { + if ($sortSelect != "none") { + // Check for valid sort order (ASC or DESC) + if ($sortOrder === 'ascending') { + $sortOrder = 'ASC'; + } elseif ($sortOrder === 'descending') { + $sortOrder = 'DESC'; + } else { + // Default to ascending if sortOrder is not valid + $sortOrder = 'ASC'; + } + $sql .= " ORDER BY $sortSelect $sortOrder"; } $sql .= " LIMIT $limit OFFSET $offset"; + // Execute the query and return the results $this->database->query($sql); return $this->database->resultSet(); diff --git a/app/views/navbar/navbar.php b/app/views/navbar/navbar.php index 43b4de6..9512079 100644 --- a/app/views/navbar/navbar.php +++ b/app/views/navbar/navbar.php @@ -35,7 +35,7 @@ <nav> <div class="icon">AudioLib</div> <?php - if($lastSegment == 'bookmark' || $lastSegment == 'bookmarkSearch'){ + if($lastSegment == 'bookmark'){ $searching = 'bookmarkSearch'; } else{ @@ -58,7 +58,10 @@ <option value="descending">Descending</option> <option value="ascending">Ascending</option> </select> - <button id="sortButton" onclick="toggleSortImage()"><img id="sortImage" src="<?php echo BASEURL; ?>/img/desc-sort.png" alt="Sort Image"></button> + <button type="button" id="sortButton" onclick="toggleSortImage()"> + <img id="sortImage" src="<?php echo BASEURL; ?>/img/desc-sort.png" alt="Sort Image"> + </button> + <select id="filterSelect" name = "filterSelect"> <option value="none">None</option> diff --git a/mysql/#innodb_redo/#ib_redo10 b/mysql/#innodb_redo/#ib_redo10 index 820281576b08548f1f6cf895392667bf7167469d..d76d89080235a1e36295aa10526e22a9f7bbdb36 100644 GIT binary patch delta 196 zcmXBI%S{4N06@{aVUQ~@0t$+#pn&}G(+i#0z=W8))hc95f{AvZ4bTN^!V(e|XLHi@ zKcolCB+6_*)~gV2LcDnU-u#3~C`NJEe!d^`cb5Fkksy&|B$lk4NKOuaDtReLQ4%?m zl9Z()=W-!csmY~WNnNg`Avba>chZ!W+{=Tsr6XN=l%DiuAVV3+SSB)+CwZ2aFJ5<h DSCBI{ delta 196 zcmXBIJ5B;o06@{aVU#NZf}n_ig7`%c-J1)TP~60ZT}WbQLcs!TU=?h@!oU=kOhR#* zlO)TKWWGyLF5SG(L;M@!pTG5L5r&}{#Ub6+_WAkoHJu<qBFRZC2XZKR$^J+Rax6tD zNm)*$B2_t+n$+b?&ZQw2(v(YSNn1K{CD+oGp4>=ZZskty<v||hNe1#PLmA17jOBI4 G+y4#=GBiv8 diff --git a/public/js/navbar.js b/public/js/navbar.js index 9ea7bc6..c279b47 100644 --- a/public/js/navbar.js +++ b/public/js/navbar.js @@ -1,38 +1,6 @@ -document.getElementById('sortButton').addEventListener('click', function() { - // Gather the selected values from the form elements - var selectedSortOption = document.getElementById('sortSelect').value; - var selectedSortOrder = document.getElementById('sortOrder').value; - // Create an object with the selected values - var requestData = { - sortOption: selectedSortOption, - sortOrder: selectedSortOrder - }; - // Serialize the requestData object as JSON - var jsonData = JSON.stringify(requestData); - - // Create an XMLHttpRequest - var xhr = new XMLHttpRequest(); - xhr.open('POST', 'localhost:8080/public/user/booklistSearch', true); - xhr.setRequestHeader('Content-Type', 'application/json'); - - // Send the serialized JSON data as the request body - xhr.send(jsonData); - - // Handle the response from the server - xhr.onload = function() { - if (xhr.status === 200) { - // Parse the response (assuming it's JSON) and update the page - var responseData = JSON.parse(xhr.responseText); - // Handle the data as needed (e.g., update the UI) - } else { - // Handle errors or display an error message - } - }; -}); - -const BASEURL = 'http://localhost/tugas-besar-1/public'; // Define the base URL +const BASEURL = 'http://localhost:8080/public'; // Define the base URL const imageSources = [ `${BASEURL}/img/desc-sort.png`, `${BASEURL}/img/asc-sort.png` @@ -50,6 +18,11 @@ function toggleSortImage() { currentIndex = (currentIndex + 1) % imageSources.length; // Cycle through images sortImage.src = imageSources[currentIndex]; + // Debugging statements + console.log('currentIndex:', currentIndex); + console.log('sortImage.src:', sortImage.src); + console.log('sortOrder.value:', sortOrder.value); + // Update the hidden select element's value based on the current image if (sortImage.src.endsWith('desc-sort.png')) { sortOrder.value = 'descending'; @@ -57,6 +30,7 @@ function toggleSortImage() { sortOrder.value = 'ascending'; } } + // Get references to the select elements const filterSelect = document.getElementById('filterSelect'); const filterQuery = document.getElementById('filterQuery'); -- GitLab