diff --git a/app/Controllers/EventController.php b/app/Controllers/EventController.php
index 7a1f24d2f7a4ab316cc53bc3e26465e6114c8e24..7e43171b3943362878240cbdc32a7f16ea86d06c 100644
--- a/app/Controllers/EventController.php
+++ b/app/Controllers/EventController.php
@@ -11,18 +11,18 @@ class EventController {
         $this->eventModel = new EventModel();
     }
 
-    public function createEvent($stock, $createdTime, $details, $gambar) {
+    public function createEvent($stock, $event_date, $event_name, $gambar, $event_location){
         $eventModel = new EventModel();
-        $eventModel->createEvent($stock, $createdTime, $details, $gambar);
+        $eventModel->createEvent($stock, $event_date, $event_name, $gambar, $event_location);
     }
 
     public function getEvent($eventId) {
         return $this->eventModel->getEvent($eventId);
     }
 
-    public function updateEvent($eventId, $stock, $createdTime, $details, $gambar) {
+    public function updateEvent($eventId, $stock, $event_date, $event_name, $event_location, $gambar = null){
         $eventModel = new EventModel();
-        $eventModel->updateEvent($eventId, $stock, $createdTime, $details, $gambar);
+        $eventModel->updateEvent($eventId, $stock, $event_date, $event_name, $gambar);
     }
 
     public function deleteEvent($eventId) {
@@ -32,16 +32,27 @@ class EventController {
     public function getAllEvents() {
         return $this->eventModel->getAllEvents();
     }
-    
-    public function paginateEvents($events,$page=1,$pagesize=10) {
-        $maxpage = ceil(count($events)/$pagesize);
+
+    public function paginateEvents($events, $page = 1, $pagesize = 10) {
+        $maxpage = ceil(count($events) / $pagesize);
         if ($page > $maxpage) {
             $page = $maxpage;
         }
-        $offset = $pagesize * ($page-1);
+        $offset = $pagesize * ($page - 1);
         $selectedEvents = array_slice($events, $offset, $pagesize);
-
+    
         return $selectedEvents;
     }
+
+
+    public function searchEvents($searchQuery, $sortKey, $minStock = null) {
+        try {
+            return $this->eventModel->searchEvents($searchQuery, $sortKey, $minStock);
+        } catch (Exception $e) {
+            echo "Error searching events: " . $e->getMessage();
+            return [];
+        }
+    }
+
 }
 ?>
\ No newline at end of file
diff --git a/app/Models/Event.php b/app/Models/Event.php
index 58c634f635b183f70cddf4dcb86589d65a8822ad..1c3dd531b1064ce5dc3814b5dbe2cdccf81615b5 100644
--- a/app/Models/Event.php
+++ b/app/Models/Event.php
@@ -5,7 +5,7 @@ require_once(__DIR__ . '/../../util.php');
 
 class EventModel {
 
-    public function createEvent($stock, $createdTime, $details, $gambar) {
+    public function createEvent($stock, $event_date, $event_name, $gambar, $event_location) {
         echo "createEvent method called<br>"; 
         global $db;
     
@@ -26,9 +26,9 @@ class EventModel {
             $uploadedFilePath = null; // Set to null if no file is uploaded
         }
     
-        $stmt = $db->prepare("INSERT INTO events (event_stock, event_created_time, event_details, gambar) VALUES (?, ?, ?, ?)");
+        $stmt = $db->prepare("INSERT INTO events (event_stock, event_date, event_name, gambar, event_location) VALUES (?, ?, ?, ?)");
     
-        if ($stmt->execute([$stock, $createdTime, $details, $uploadedFilePath])) {
+        if ($stmt->execute([$stock, $event_date, $event_name, $uploadedFilePath, $event_location])) {
             echo "Event created successfully";
         } else {
             echo "Error creating event: " . print_r($stmt->errorInfo(), true);
@@ -36,17 +36,17 @@ class EventModel {
     }
     
 
-    public function updateEvent($eventId, $stock, $createdTime, $details, $gambar = null) {
+    public function updateEvent($eventId, $stock, $event_date, $event_name, $event_location, $gambar = null) {
         global $db;
         $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);
     
-        echo "Updating Event with ID: $eventId, Stock: $stock, Created Time: $createdTime, Details: $details";
+        echo "Updating Event with ID: $eventId, Stock: $stock, Date: $event_date, Name: $event_name, Location: $event_location";
     
         // Check whether a new image is provided
         if ($gambar !== null) {
-            $sql = "UPDATE events SET event_stock = '$stock', event_created_time = '$createdTime', event_details = '$details', gambar = '$gambar' WHERE event_id = $eventId";
+            $sql = "UPDATE events SET event_stock = '$stock', event_date = '$event_date', event_name = '$event_name', gambar = '$gambar', event_location = '$event_location' WHERE event_id = $eventId";
         } else {
-            $sql = "UPDATE events SET event_stock = '$stock', event_created_time = '$createdTime', event_details = '$details' WHERE event_id = $eventId";
+            $sql = "UPDATE events SET event_stock = '$stock', event_date = '$event_date', event_name = '$event_name', event_location = '$event_location' WHERE event_id = $eventId";
         }
     
         $rowCount = $db->exec($sql);
@@ -88,10 +88,59 @@ class EventModel {
     
     public function getAllEvents() {
         global $db;
+        $stmt = $db->prepare("SELECT * FROM events");
+        $stmt->execute();
+        return $stmt->fetchAll(PDO::FETCH_ASSOC);
+    }
+
+
+    public function searchEvents($searchQuery, $sortKey, $minStock) {
+    global $db;
+
+    try {
+        $sql = "SELECT * FROM events WHERE 1"; // Start with a true condition
+
+        // Add search condition 
+        if (!empty($searchQuery)) {
+            $sql .= " AND (LOWER(event_name) LIKE :query OR LOWER(event_location) LIKE :query)";
+        }
+
+        // Add filter condition 
+        if ($minStock !== null) {
+            $sql .= " AND event_stock >= :minStock";
+        }
+
+        // Add sort condition
+        if ($sortKey === 'name') {
+            $sql .= " ORDER BY event_name ASC";
+        } elseif ($sortKey === 'location') {
+            $sql .= " ORDER BY event_location ASC";
+        }
+
+        $stmt = $db->prepare($sql);
+
+        // Bind search query parameter
+        if (!empty($searchQuery)) {
+            $lowerSearchQuery = strtolower("%" . $searchQuery . "%");
+            $stmt->bindParam(':query', $lowerSearchQuery, PDO::PARAM_STR);
+        }
+
+        // Bind filter parameter 
+        if ($minStock !== null) {
+            $stmt->bindParam(':minStock', $minStock, PDO::PARAM_INT);
+        }
+
+        $stmt->execute();
 
-        $stmt = $db->query("SELECT * FROM events");
         return $stmt->fetchAll(PDO::FETCH_ASSOC);
+    } catch (PDOException $e) {
+        throw new Exception("Error searching events: " . $e->getMessage());
     }
+}
+
+    
+
+
 }
 ?>
 
diff --git a/db/data.php b/db/data.php
index f53d8c0b0ca76a06c2870972d57fd9d4c4b10b3e..7f614a096154588f7d8cd81d424146b6480dba3d 100644
--- a/db/data.php
+++ b/db/data.php
@@ -5,12 +5,12 @@
    if (isset($db)) {
       try {
          $sqlEvent = <<<EOF
-            INSERT INTO events (event_stock, event_created_time, event_details, gambar) VALUES
-            (100, '2023-09-30 10:00:00', 'Music Concert', 'assets/1.jpg'),
-            (50, '2023-10-05 15:30:00', 'Art Exhibition', 'assets/2.png'),
-            (200, '2023-11-12 18:45:00', 'Sports Tournament', 'assets/3.jpg'),
-            (75, '2023-12-03 20:00:00', 'Comedy Show', 'assets/4.jpg'),
-            (120, '2024-01-18 14:15:00', 'Tech Conference', 'assets/5.jpg');
+            INSERT INTO events (event_stock, event_date, event_name, gambar, event_location) VALUES
+            (100, '2023-09-30 10:00:00', 'Music Concert', 'assets/1.jpg', 'jakarta'),
+            (50, '2023-10-05 15:30:00', 'Art Exhibition', 'assets/2.png', 'prancis'),
+            (200, '2023-11-12 18:45:00', 'Sports Tournament', 'assets/3.jpg', 'italy'),
+            (75, '2023-12-03 20:00:00', 'Comedy Show', 'assets/4.jpg', 'jakarta'),
+            (120, '2024-01-18 14:15:00', 'Tech Conference', 'assets/5.jpg', 'ITB');
          EOF;
 
          $sqlTicket = <<<EOF
diff --git a/db/init.sql b/db/init.sql
index d009cd96e21e3ee94a27815b4742247ee2461dd9..77e4e1d75c33c0b704ae026747b0a1e6715bd0c7 100644
--- a/db/init.sql
+++ b/db/init.sql
@@ -5,9 +5,10 @@ USE tubes1_WBD;
 CREATE TABLE IF NOT EXISTS events (
   event_id INT AUTO_INCREMENT PRIMARY KEY,
   event_stock INT,
-  event_created_time DATETIME,
-  event_details CHAR(255),
-  gambar VARCHAR(255)
+  event_date DATETIME,
+  event_name CHAR(255),
+  gambar VARCHAR(255),
+  event_location CHAR(255)
 );
 
 CREATE TABLE IF NOT EXISTS tickets (
diff --git a/home.php b/home.php
index f6a7bdd2312388a6ace6ea7b4af552ace2b16aa5..a043c9fe94529396b0464fc5f9e5a4eb4f6809a5 100644
--- a/home.php
+++ b/home.php
@@ -20,12 +20,13 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
     if (isset($_POST['action'])) {
         if ($_POST['action'] === 'createEvent') {
             $eventStock = $_POST['stock'];
-            $eventCreatedTime = $_POST['createdTime'];
-            $eventDetails = $_POST['details'];
+            $eventDate = $_POST['event_date'];
+            $eventName = $_POST['name'];
+            $eventLocation = $_POST['location'];
             // $uploadedFilePath = $_POST['gambar'];
 
             // Check if the values are not empty
-            if (!empty($eventStock) && !empty($eventCreatedTime) && !empty($eventDetails)) {
+            if (!empty($eventStock) && !empty($eventDate) && !empty($eventName) && !empty($eventLocation)) {
                 var_dump($_FILES);
                 $uploadedFilePath = isset($_FILES['gambar']) && $_FILES['gambar']['error'] === 0 ? $_FILES['gambar'] : null; // Check if 'gambar' is set in the files array
 
@@ -40,19 +41,20 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
                 //     move_uploaded_file($uploadedFile['tmp_name'], $uploadedFilePath);
                 // }
 
-                $eventController->createEvent($eventStock, $eventCreatedTime, $eventDetails, $uploadedFilePath);
+                $eventController->createEvent($eventStock, $eventDate, $eventName, $uploadedFilePath, $eventLocation);
             } else {
                 echo "Please fill in all the fields for creating an event.";
             }
         } elseif ($_POST['action'] === 'updateEvent') {
             $eventIdUpdate = $_POST['eventIdUpdate'];
             $eventStock = $_POST['eventStock'];
-            $eventCreatedTime = $_POST['eventCreatedTime'];
-            $eventDetails = $_POST['eventDetails'];
+            $eventDate = $_POST['event_date'];
+            $eventName = $_POST['eventName'];
+            $eventLocation = $_POST['eventLocation'];
             var_dump($_FILES);
             // $uploadedFilePath = $_POST['uploadedFilePath'];
             // Check if the values are not empty
-            if (!empty($eventIdUpdate) && !empty($eventStock) && !empty($eventCreatedTime) && !empty($eventDetails)) {
+            if (!empty($eventIdUpdate) && !empty($eventStock) && !empty($eventDate) && !empty($eventName) && !empty($eventLocation)) {
                 $uploadedFilePath = isset($_FILES['gambar']) ? $_FILES['gambar'] : null; // Check if 'gambar' is set in the files array
                 
                 $uploadedFile = isset($_FILES['gambar']) ? $_FILES['gambar'] : null;
@@ -63,7 +65,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
                     move_uploaded_file($uploadedFile['tmp_name'], $uploadedFilePath);
                 }
 
-                $eventController->updateEvent($eventIdUpdate, $eventStock, $eventCreatedTime, $eventDetails, $uploadedFilePath);
+                $eventController->updateEvent($eventIdUpdate, $eventStock, $eventDate, $eventName, $uploadedFilePath, $eventLocation);
             } else {
                 echo "Please fill in all the fields for updating an event.";
             }
@@ -156,8 +158,9 @@ $users = $userController->getAllUsers();
         <form method="post" action="home.php" enctype="multipart/form-data">
             <label>Create Event:</label>
             <input type="text" name="stock" placeholder="Stock">
-            <input type="datetime-local" name="createdTime">
-            <input type="text" name="details" placeholder="Details">
+            <input type="datetime-local" name="event_date">
+            <input type="text" name="name" placeholder="Name">
+            <input type="text" name="location" placeholder="Location">
 
             <!-- Drag-and-drop area for image upload -->
             <div id="drop-area-create">
@@ -173,8 +176,9 @@ $users = $userController->getAllUsers();
             <label>Update Event:</label>
             <input type="text" name="eventIdUpdate" placeholder="Event ID">
             <input type="text" name="eventStock" placeholder="Stock">
-            <input type="datetime-local" name="eventCreatedTime">
-            <input type="text" name="eventDetails" placeholder="Details">
+            <input type="datetime-local" name="event_dateUpdate">
+            <input type="text" name="eventName" placeholder="Name">
+            <input type="text" name="eventLocation" placeholder="Location">
 
             <!-- Drag-and-drop area for image upload -->
             <div id="drop-area-update">
diff --git a/index.php b/index.php
index 526fd204b4e603f264f56e7cafb79eeca4162490..87b639410efd437b474569c3da4c7291a374d520 100644
--- a/index.php
+++ b/index.php
@@ -1,7 +1,17 @@
 <?php
     session_start();
     include './db/connect.php';
-    // include './db/init.php';
+    require_once './app/Controllers/EventController.php';
+
+    $eventController = new EventController();
+
+    // Handle search query
+    $searchQuery = isset($_GET['search']) ? $_GET['search'] : '';
+    $sortKey = isset($_GET['sort']) ? $_GET['sort'] : 'name'; 
+    $minStock = isset($_GET['min_stock']) ? $_GET['min_stock'] : null;
+
+    // Get search results or all events 
+    $searchResults = $eventController->searchEvents($searchQuery, $sortKey, $minStock);
 ?>
 
 <!DOCTYPE html>
@@ -54,17 +64,16 @@
                 <?php
                     require_once './app/Controllers/EventController.php';
                     $eventController = new EventController();
-                    // Get all events
                     $allEvents = $eventController->getAllEvents();
 
-                    // Loop through events and display details
                     foreach ($allEvents as $event) {
                         echo "<li>";
                         echo "<strong>Event ID:</strong> " . $event['event_id'] . "<br>";
                         echo "<strong>Stock:</strong> " . $event['event_stock'] . "<br>";
-                        echo "<strong>Created Time:</strong> " . $event['event_created_time'] . "<br>";
-                        echo "<strong>Details:</strong> " . $event['event_details'] . "<br>";
+                        echo "<strong>Created Time:</strong> " . $event['event_date'] . "<br>";
+                        echo "<strong>Name:</strong> " . $event['event_name'] . "<br>";
                         echo "<strong>Image:</strong> <img src='" . $event['gambar'] . "' alt='Event Image' width='100'><br>";
+                        echo "<strong>Location:</strong> " . $event['event_location'] . "<br>";
                         echo "</li>";
                     }
 
@@ -72,6 +81,47 @@
                 ?>
             </ul>
         </div>
+        <!-- Search Bar with Filter -->
+        <div class="search-bar">
+            <form method="get" action="index.php">
+                <input type="text" name="search" placeholder="Search events..." value="<?= htmlspecialchars($searchQuery) ?>">
+                <?php if (!empty($searchQuery) || !empty($minStock) || !empty($sortKey)) : ?>
+                    <select name="sort">
+                        <option value="" <?= empty($sortKey) ? 'selected' : '' ?>>No Sorting</option>
+                        <option value="name" <?= $sortKey === 'name' ? 'selected' : '' ?>>Sort by Name</option>
+                        <option value="location" <?= $sortKey === 'location' ? 'selected' : '' ?>>Sort by Location</option>
+                    </select>
+                <?php else : ?>
+                    <select name="sort">
+                        <option value="" selected>No Sorting</option>
+                        <option value="name">Sort by Name</option>
+                        <option value="location">Sort by Location</option>
+                    </select>
+                <?php endif; ?>
+                <!-- Change input type to "text" for minimum stock -->
+                <input type="text" name="min_stock" placeholder="Min Stock" value="<?= htmlspecialchars($minStock) ?>">
+                <button type="submit">Search</button>
+            </form>
+        </div>
+
+        <!-- Display Search Results or All Events -->
+        <div class="events">
+            <h2><?= !empty($searchQuery) || !empty($minStock) ? 'Search Results' : 'All Events' ?></h2>
+            <ul>
+                <?php
+                foreach ($searchResults as $event) {
+                    echo "<li>";
+                    echo "<strong>Event ID:</strong> " . $event['event_id'] . "<br>";
+                    echo "<strong>Stock:</strong> " . $event['event_stock'] . "<br>";
+                    echo "<strong>Created Time:</strong> " . $event['event_date'] . "<br>";
+                    echo "<strong>Name:</strong> " . $event['event_name'] . "<br>";
+                    echo "<strong>Image:</strong> <img src='" . $event['gambar'] . "' alt='Event Image' width='100'><br>";
+                    echo "<strong>Location:</strong> " . $event['event_location'] . "<br>";
+                    echo "</li>";
+                }
+                ?>
+            </ul>
+        </div>
         <div class="footer">
             &copy; 2023 Ticket Ku. All rights reserved.
         </div>