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