diff --git a/app/Controllers/EventController.php b/app/Controllers/EventController.php index 43c16637401848dbcf27334d941213aaa2969058..1175a23035eeba9d1cd250eb82661b6281788b9d 100644 --- a/app/Controllers/EventController.php +++ b/app/Controllers/EventController.php @@ -11,16 +11,18 @@ class EventController { $this->eventModel = new EventModel(); } - public function createEvent($stock, $createdTime, $details) { - return $this->eventModel->createEvent($stock, $createdTime, $details); + public function createEvent($stock, $createdTime, $details, $gambar) { + $eventModel = new EventModel(); + $eventModel->createEvent($stock, $createdTime, $details, $gambar); } public function getEvent($eventId) { return $this->eventModel->getEvent($eventId); } - public function updateEvent($eventId, $stock, $createdTime, $details) { - return $this->eventModel->updateEvent($eventId, $stock, $createdTime, $details); + public function updateEvent($eventId, $stock, $createdTime, $details, $gambar) { + $eventModel = new EventModel(); + $eventModel->updateEvent($eventId, $stock, $createdTime, $details, $gambar); } public function deleteEvent($eventId) { diff --git a/app/Models/Event.php b/app/Models/Event.php index bdabbd7b8d212c61f01a26f61b9f462422134232..405245da8f1c51bcce701a57b3c62f7e7ef38d53 100644 --- a/app/Models/Event.php +++ b/app/Models/Event.php @@ -1,38 +1,53 @@ <?php require_once(__DIR__ . '/../../db/connect.php'); +require_once(__DIR__ . '/../../util.php'); class EventModel { - public function createEvent($stock, $createdTime, $details) { + + public function createEvent($stock, $createdTime, $details, $gambar) { echo "createEvent method called<br>"; global $db; - $stmt = $db->prepare("INSERT INTO events (event_stock, event_created_time, event_details) VALUES (?, ?, ?)"); + // Check if a file is uploaded + if ($gambar !== null && isset($gambar['name']) && isset($gambar['tmp_name'])) { + $uploadDirectory = __DIR__ . '/../../assets/'; + $uploadedFilePath = $uploadDirectory . $gambar['name']; + + // Move the uploaded file to the desired directory + if (move_uploaded_file($gambar['tmp_name'], $uploadedFilePath)) { + echo "File uploaded successfully<br>"; + } else { + echo "Error moving file to destination<br>"; + $uploadedFilePath = null; // Set to null if there's an error + } + } else { + echo "No file uploaded<br>"; + $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 (?, ?, ?, ?)"); - if ($stmt->execute([$stock, $createdTime, $details])) { + if ($stmt->execute([$stock, $createdTime, $details, $uploadedFilePath])) { echo "Event created successfully"; } else { echo "Error creating event: " . print_r($stmt->errorInfo(), true); } } - - public function getEvent($eventId) { - global $db; - - $stmt = $db->prepare("SELECT * FROM events WHERE event_id = ?"); - $stmt->execute([$eventId]); - return $stmt->fetch(PDO::FETCH_ASSOC); - } - - public function updateEvent($eventId, $stock, $createdTime, $details) { + public function updateEvent($eventId, $stock, $createdTime, $details, $gambar = null) { global $db; $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 1); echo "Updating Event with ID: $eventId, Stock: $stock, Created Time: $createdTime, Details: $details"; - $sql = "UPDATE events SET event_stock = '$stock', event_created_time = '$createdTime', event_details = '$details' WHERE event_id = $eventId"; + // 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"; + } else { + $sql = "UPDATE events SET event_stock = '$stock', event_created_time = '$createdTime', event_details = '$details' WHERE event_id = $eventId"; + } $rowCount = $db->exec($sql); @@ -41,10 +56,10 @@ class EventModel { } else { echo "Error updating event: " . print_r($db->errorInfo(), true); } - return "Event updated successfully"; } + public function deleteEvent($eventId) { global $db; @@ -71,8 +86,6 @@ class EventModel { } } - - public function getAllEvents() { global $db; diff --git a/assets/1.jpg b/assets/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0f98933a4c89043b90b74ed8f693db9042357542 Binary files /dev/null and b/assets/1.jpg differ diff --git a/assets/10.jpg b/assets/10.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e6188c8e11294c4aade8103916c419c5dd111104 Binary files /dev/null and b/assets/10.jpg differ diff --git a/assets/11.png b/assets/11.png new file mode 100644 index 0000000000000000000000000000000000000000..a95c47f09e98bbfe02ed1653d52182981dfbf644 Binary files /dev/null and b/assets/11.png differ diff --git a/assets/12.jpg b/assets/12.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b2803f56ca06409ba9c2bba9aefbc97440f19820 Binary files /dev/null and b/assets/12.jpg differ diff --git a/assets/13.jpg b/assets/13.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d639dc5d8231496cdb787d77a06d3ca73070b223 Binary files /dev/null and b/assets/13.jpg differ diff --git a/assets/14.jpg b/assets/14.jpg new file mode 100644 index 0000000000000000000000000000000000000000..482d989ad8f883f046aa24e4ade3e1634585d7a4 Binary files /dev/null and b/assets/14.jpg differ diff --git a/assets/15.jpg b/assets/15.jpg new file mode 100644 index 0000000000000000000000000000000000000000..19cdfe99bf418f53dde71fa3058d44e162a24258 Binary files /dev/null and b/assets/15.jpg differ diff --git a/assets/16.jpg b/assets/16.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a7c5ef33edf129ee657ba44eb730091a80520b22 Binary files /dev/null and b/assets/16.jpg differ diff --git a/assets/2.png b/assets/2.png new file mode 100644 index 0000000000000000000000000000000000000000..414c5c1fae9e3b3d8851dc27a2deb2585b835744 Binary files /dev/null and b/assets/2.png differ diff --git a/assets/3.jpg b/assets/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a528f563d6da83b585b0d0fb5e46962177575435 Binary files /dev/null and b/assets/3.jpg differ diff --git a/assets/4.jpg b/assets/4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ff354903a75c7a79b98a68e2fe3b9af25fc220e Binary files /dev/null and b/assets/4.jpg differ diff --git a/assets/5.jpg b/assets/5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6e83d8a29f11a14e653d985b58466257660e1a74 Binary files /dev/null and b/assets/5.jpg differ diff --git a/assets/6.png b/assets/6.png new file mode 100644 index 0000000000000000000000000000000000000000..d787df19dc1384689f264d855d01f1520976f7f6 Binary files /dev/null and b/assets/6.png differ diff --git a/assets/7.jpeg b/assets/7.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..6dc6066941c849c8d2ef9491031291e8f90ef6bc Binary files /dev/null and b/assets/7.jpeg differ diff --git a/assets/8.png b/assets/8.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d5d3a60ca11d7b037fe6c887416420c256a71b Binary files /dev/null and b/assets/8.png differ diff --git a/assets/9.jpg b/assets/9.jpg new file mode 100644 index 0000000000000000000000000000000000000000..03907e91630698587e8c325d3f9a3f29e3040077 Binary files /dev/null and b/assets/9.jpg differ diff --git a/assets/ramen.jpg b/assets/ramen.jpg new file mode 100644 index 0000000000000000000000000000000000000000..649375db9c9a2b0e01319363ca4c0c68d68147d4 Binary files /dev/null and b/assets/ramen.jpg differ diff --git a/db/data.php b/db/data.php index 028cca76225141fa6d80264258fff019308fe78c..9fbefb71c2c9eefd72bfe63ef4d2f428d6e785bb 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) VALUES - (100, '2023-09-30 10:00:00', 'Music Concert'), - (50, '2023-10-05 15:30:00', 'Art Exhibition'), - (200, '2023-11-12 18:45:00', 'Sports Tournament'), - (75, '2023-12-03 20:00:00', 'Comedy Show'), - (120, '2024-01-18 14:15:00', 'Tech Conference'); + 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.jpg'), + (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'); EOF; $sqlTicket = <<<EOF diff --git a/db/init.sql b/db/init.sql index aad1a0de91c186f077fb68772694e81d8406f7ea..10b3a9049eece7f604553f88d2ec1dc57406c6db 100644 --- a/db/init.sql +++ b/db/init.sql @@ -6,7 +6,8 @@ CREATE TABLE IF NOT EXISTS events ( event_id INT AUTO_INCREMENT PRIMARY KEY, event_stock INT, event_created_time DATETIME, - event_details CHAR(255) + event_details CHAR(255), + gambar VARCHAR(255) ); CREATE TABLE IF NOT EXISTS tickets ( diff --git a/home.php b/home.php index 2925e7853d1c7faf56323c746d58120b445c5c24..77633f7790eb40f3c32a9fb537aa294e9a643ab6 100644 --- a/home.php +++ b/home.php @@ -14,28 +14,63 @@ $userController = new UserController(); // Check if form is submitted for event if ($_SERVER["REQUEST_METHOD"] == "POST") { - var_dump($_POST); // Output the submitted form data for debugging purposes + var_dump($_POST); // Output for debugging purposes if (isset($_POST['action'])) { if ($_POST['action'] === 'createEvent') { $eventStock = $_POST['stock']; $eventCreatedTime = $_POST['createdTime']; $eventDetails = $_POST['details']; + $uploadedFilePath = $_POST['gambar']; // Check if the values are not empty if (!empty($eventStock) && !empty($eventCreatedTime) && !empty($eventDetails)) { - $eventController->createEvent($eventStock, $eventCreatedTime, $eventDetails); + var_dump($_FILES); + $uploadedFilePath = isset($_FILES['gambar']) ? $_FILES['gambar'] : null; // Check if 'gambar' is set in the files array + + // Check for file upload + $uploadedFile = isset($_FILES['gambar']) ? $_FILES['gambar'] : null; + + var_dump($uploadedFile); // Output for debugging purposes + + if ($uploadedFile !== null && $uploadedFile['error'] === 0) { + // Handle file upload + $uploadedFilePath = 'assets/' . $uploadedFile['name']; + move_uploaded_file($uploadedFile['tmp_name'], $uploadedFilePath); + } + + $eventController->createEvent($eventStock, $eventCreatedTime, $eventDetails, $uploadedFilePath); } else { echo "Please fill in all the fields for creating an event."; } } elseif ($_POST['action'] === 'updateEvent') { - $eventController->updateEvent($_POST['eventIdUpdate'], $_POST['eventStock'], $_POST['eventCreatedTime'], $_POST['eventDetails']); + $eventIdUpdate = $_POST['eventIdUpdate']; + $eventStock = $_POST['eventStock']; + $eventCreatedTime = $_POST['eventCreatedTime']; + $eventDetails = $_POST['eventDetails']; + $uploadedFilePath = $_POST['uploadedFilePath']; + // Check if the values are not empty + if (!empty($eventIdUpdate) && !empty($eventStock) && !empty($eventCreatedTime) && !empty($eventDetails)) { + $uploadedFilePath = isset($_FILES['gambar']) ? $_FILES['gambar'] : null; // Check if 'gambar' is set in the files array + + // Check for file upload + if ($uploadedFilePath !== null && $uploadedFilePath['error'] === 0) { + // Handle file upload + $uploadedFilePath = 'assets/' . $uploadedFilePath['name']; + move_uploaded_file($uploadedFilePath['tmp_name'], $uploadedFilePath); + } + + $eventController->updateEvent($eventIdUpdate, $eventStock, $eventCreatedTime, $eventDetails, $uploadedFile); + } else { + echo "Please fill in all the fields for updating an event."; + } } elseif ($_POST['action'] === 'deleteEvent') { $eventController->deleteEvent($_POST['eventIdDelete']); } } } + // check form submitted for User if ($_SERVER["REQUEST_METHOD"] == "POST") { if (isset($_POST['userAction'])) { @@ -88,22 +123,41 @@ $users = $userController->getAllUsers(); <!-- Event CRUD Form --> <h2>Events</h2> <form method="post" action="home.php"> - <!-- Create Event --> + + <!-- Create Event --> + <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"> + + <!-- Drag-and-drop area for image upload --> + <div id="drop-area-create"> + <p>Drag and drop an image file here or click to select one.</p> + <input type="file" id="file-input-create" name="gambar" accept="image/*"> + </div> + <button type="submit" name="action" value="createEvent">Create</button> + </form> - <!-- Update Event --> + <!-- Update Event --> + <form method="post" action="home.php" enctype="multipart/form-data"> <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"> - <button type="submit" name="action" value="updateEvent">Update</button> + <!-- Drag-and-drop area for image upload --> + <div id="drop-area-update"> + <p>Drag and drop an image file here or click to select one.</p> + <input type="file" id="file-input-update" name="gambar" accept="image/*"> + </div> + + <button type="submit" name="action" value="updateEvent">Update</button> + </form> + <form method="post" action="home.php"> <!-- Delete Event --> <label>Delete Event:</label> <input type="text" name="eventIdDelete" placeholder="Event ID"> @@ -143,7 +197,12 @@ $users = $userController->getAllUsers(); <h3>Event List:</h3> <ul> <?php foreach ($events as $event) : ?> - <li><?php echo $event['event_id'] . ': ' . $event['event_stock'] . ', ' . $event['event_created_time'] . ', ' . $event['event_details']; ?></li> + <li> + <?php + echo $event['event_id'] . ': ' . $event['event_stock'] . ', ' . $event['event_created_time'] . ', ' . $event['event_details']; + echo isset($event['gambar']) ? ', Image: <img src="' . $event['gambar'] . '" alt="Event Image">' : ''; // Display the image if available + ?> + </li> <?php endforeach; ?> </ul> diff --git a/util.php b/util.php new file mode 100644 index 0000000000000000000000000000000000000000..da3c6d57c9624c8dcc4ed19faa9297280b76715d --- /dev/null +++ b/util.php @@ -0,0 +1,13 @@ +<?php +function preprocess($str) { + return str_replace(' ', '%20', $str); +} + +function formatPrice($price) { + return number_format($price,0,',','.'); +} + +function isEmailValid($email) { + return filter_var($email, FILTER_VALIDATE_EMAIL); +} +?> \ No newline at end of file