Skip to content
Snippets Groups Projects
Commit 82ea1283 authored by vanessrw's avatar vanessrw
Browse files

db

parents
Branches
Tags
No related merge requests found
Showing with 620 additions and 0 deletions
.env 0 → 100644
MYSQL_ROOT_PASSWORD=m19e11
MYSQL_DATABASE=tubes1_WBD
MYSQL_USER=tubes1-WBD
MYSQL_PASSWORD=1234
FROM php:8.0-apache
RUN docker-php-ext-install pdo pdo_mysql
\ No newline at end of file
## Panduan Pengerjaan
Berikut adalah hal yang harus diperhatikan untuk pengumpulan tugas ini:
1. Buatlah grup pada Gitlab dengan format "IF3110-2023-01-XX", dengan XX adalah nomor kelompok (untuk K1 dan K2) atau kode kelompok (untuk K3).
2. Tambahkan anggota tim pada grup anda.
3. **Fork** pada repository ini dengan organisasi yang telah dibuat.
4. Ubah hak akses repository hasil Fork anda menjadi **private**.
5. Hal-hal yang harus diperhatikan.
* Silakan commit pada repository anda (hasil fork)
* Lakukan beberapa commit dengan pesan yang bermakna, contoh: “add register form”, “fix logout bug”, jangan seperti “final”, “benerin dikit”, “fix bug”.
* Disarankan untuk tidak melakukan commit dengan perubahan yang besar karena akan mempengaruhi penilaian (contoh: hanya melakukan satu commit kemudian dikumpulkan).
* Commit dari setiap anggota tim akan mempengaruhi penilaian.
* Jadi, setiap anggota tim harus melakukan commit yang berpengaruh terhadap proses pembuatan aplikasi.
* Sebagai panduan bisa mengikuti [semantic commit](https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716).
6. Buatlah file README yang berisi:
* Deskripsi aplikasi web
* Daftar requirement
* Cara instalasi
* Cara menjalankan server
* Screenshot tampilan aplikasi (tidak perlu semua kasus, minimal 1 per halaman), dan
* Penjelasan mengenai pembagian tugas masing-masing anggota (lihat formatnya pada bagian pembagian tugas).
<?php
// app/Controllers/EventController.php
include_once 'Event.php';
class EventController {
private $eventModel;
public function __construct() {
$this->eventModel = new EventModel();
}
public function createEvent($stock, $createdTime, $details) {
return $this->eventModel->createEvent($stock, $createdTime, $details);
}
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 deleteEvent($eventId) {
return $this->eventModel->deleteEvent($eventId);
}
}
?>
<?php
// app/controllers/pembelianController.php
include_once '../Models/Pembelian.php';
class PembelianController {
private $pembelianModel;
public function __construct() {
$this->pembelianModel = new PembelianModel();
}
public function createPembelian($ticketId, $userId, $createdTime) {
return $this->pembelianModel->createPembelian($ticketId, $userId, $createdTime);
}
public function getPembelian($pembelianId) {
return $this->pembelianModel->getPembelian($pembelianId);
}
public function updatePembelian($pembelianId, $ticketId, $userId, $createdTime) {
return $this->pembelianModel->updatePembelian($pembelianId, $ticketId, $userId, $createdTime);
}
public function deletePembelian($pembelianId) {
return $this->pembelianModel->deletePembelian($pembelianId);
}
}
?>
<?php
// app/controllers/ticketController.php
include_once '../Models/Ticket.php';
class TicketController {
private $ticketModel;
public function __construct() {
$this->ticketModel = new TicketModel();
}
public function createTicket($name, $price, $eventId) {
return $this->ticketModel->createTicket($name, $price, $eventId);
}
public function getTicket($ticketId) {
return $this->ticketModel->getTicket($ticketId);
}
public function updateTicket($ticketId, $name, $price, $eventId) {
return $this->ticketModel->updateTicket($ticketId, $name, $price, $eventId);
}
public function deleteTicket($ticketId) {
return $this->ticketModel->deleteTicket($ticketId);
}
}
?>
<?php
// app/controllers/userController.php
include_once '../Models/User.php';
class UserController {
private $userModel;
public function __construct() {
$this->userModel = new UserModel();
}
public function createUser($name, $username, $email, $hashedPass, $isAdmin) {
return $this->userModel->createUser($name, $username, $email, $hashedPass, $isAdmin);
}
public function getUser($userId) {
return $this->userModel->getUser($userId);
}
public function updateUser($userId, $name, $username, $email, $hashedPass, $isAdmin) {
return $this->userModel->updateUser($userId, $name, $username, $email, $hashedPass, $isAdmin);
}
public function deleteUser($userId) {
return $this->userModel->deleteUser($userId);
}
}
?>
<?php
// app/models/Event.php
include_once '../db/connect.php';
class EventModel {
public function createEvent($stock, $createdTime, $details) {
global $db;
$stmt = $db->prepare("INSERT INTO event (event_stock, event_created_time, event_details) VALUES (?, ?, ?)");
$stmt->execute([$stock, $createdTime, $details]);
return "Event created successfully";
}
public function getEvent($eventId) {
global $db;
$stmt = $db->prepare("SELECT * FROM event WHERE event_id = ?");
$stmt->execute([$eventId]);
return $stmt->fetch(PDO::FETCH_ASSOC);
}
public function updateEvent($eventId, $stock, $createdTime, $details) {
global $db;
$stmt = $db->prepare("UPDATE event SET event_stock = ?, event_created_time = ?, event_details = ? WHERE event_id = ?");
$stmt->execute([$stock, $createdTime, $details, $eventId]);
return "Event updated successfully";
}
public function deleteEvent($eventId) {
global $db;
$stmt = $db->prepare("DELETE FROM event WHERE event_id = ?");
$stmt->execute([$eventId]);
return "Event deleted successfully";
}
}
?>
<?php
// app/models/Pembelian.php
include_once '../db/connect.php';
class PembelianModel {
public function createPembelian($ticketId, $userId, $createdTime) {
global $db;
$stmt = $db->prepare("INSERT INTO pembelian (ticket_id, user_id, pembelian_created_time) VALUES (?, ?, ?)");
$stmt->execute([$ticketId, $userId, $createdTime]);
return "Pembelian created successfully";
}
public function getPembelian($pembelianId) {
global $db;
$stmt = $db->prepare("SELECT * FROM pembelian WHERE pembelian_id = ?");
$stmt->execute([$pembelianId]);
return $stmt->fetch(PDO::FETCH_ASSOC);
}
public function updatePembelian($pembelianId, $ticketId, $userId, $createdTime) {
global $db;
$stmt = $db->prepare("UPDATE pembelian SET ticket_id = ?, user_id = ?, pembelian_created_time = ? WHERE pembelian_id = ?");
$stmt->execute([$ticketId, $userId, $createdTime, $pembelianId]);
return "Pembelian updated successfully";
}
public function deletePembelian($pembelianId) {
global $db;
$stmt = $db->prepare("DELETE FROM pembelian WHERE pembelian_id = ?");
$stmt->execute([$pembelianId]);
return "Pembelian deleted successfully";
}
}
?>
<?php
// app/models/Ticket.php
include_once '../db/connect.php';
class TicketModel {
public function createTicket($name, $price, $eventId) {
global $db;
$stmt = $db->prepare("INSERT INTO ticket (ticket_name, ticket_price, event_id) VALUES (?, ?, ?)");
$stmt->execute([$name, $price, $eventId]);
return "Ticket created successfully";
}
public function getTicket($ticketId) {
global $db;
$stmt = $db->prepare("SELECT * FROM ticket WHERE ticket_id = ?");
$stmt->execute([$ticketId]);
return $stmt->fetch(PDO::FETCH_ASSOC);
}
public function updateTicket($ticketId, $name, $price, $eventId) {
global $db;
$stmt = $db->prepare("UPDATE ticket SET ticket_name = ?, ticket_price = ?, event_id = ? WHERE ticket_id = ?");
$stmt->execute([$name, $price, $eventId, $ticketId]);
return "Ticket updated successfully";
}
public function deleteTicket($ticketId) {
global $db;
$stmt = $db->prepare("DELETE FROM ticket WHERE ticket_id = ?");
$stmt->execute([$ticketId]);
return "Ticket deleted successfully";
}
}
?>
<?php
// app/models/User.php
include_once '../db/connect.php';
class UserModel {
public function createUser($name, $username, $email, $hashedPass, $isAdmin) {
global $db;
$stmt = $db->prepare("INSERT INTO user (user_name, username, user_email, user_hashedPass, isAdmin) VALUES (?, ?, ?, ?, ?)");
$stmt->execute([$name, $username, $email, $hashedPass, $isAdmin]);
return "User created successfully";
}
public function getUser($userId) {
global $db;
$stmt = $db->prepare("SELECT * FROM user WHERE user_ID = ?");
$stmt->execute([$userId]);
return $stmt->fetch(PDO::FETCH_ASSOC);
}
public function updateUser($userId, $name, $username, $email, $hashedPass, $isAdmin) {
global $db;
$stmt = $db->prepare("UPDATE user SET user_name = ?, username = ?, user_email = ?, user_hashedPass = ?, isAdmin = ? WHERE user_ID = ?");
$stmt->execute([$name, $username, $email, $hashedPass, $isAdmin, $userId]);
return "User updated successfully";
}
public function deleteUser($userId) {
global $db;
$stmt = $db->prepare("DELETE FROM user WHERE user_ID = ?");
$stmt->execute([$userId]);
return "User deleted successfully";
}
}
?>
<?php
$host = 'db';
$dbname = 'tubes1_WBD';
$user = 'root';
$pass = 'm19e11';
try {
$db = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
// Execute SQL statements from init.sql
$sqlInit = file_get_contents(__DIR__ . '/init.sql');
$db->exec($sqlInit);
echo "Connected successfully and database initialized!<br/>";
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
<?php
include 'connect.php';
// Make sure $db is defined and not null
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');
EOF;
$sqlTicket = <<<EOF
INSERT INTO tickets (ticket_name, ticket_price, event_id) VALUES
('General Admission', 20, 1),
('VIP Pass', 50, 1),
('Standard Ticket', 15, 2),
('Student Discount', 10, 2),
('Early Bird Special', 25, 3),
('Premium Access', 40, 3),
('Weekend Pass', 30, 4),
('Group Discount', 18, 4),
('Conference Pass', 60, 5),
('Exhibitor Pass', 75, 5);
EOF;
$sqlUser = <<<EOF
INSERT INTO users (user_name, username, user_email, user_hashedPass, isAdmin) VALUES
('John Doe', 'john_doe', 'john@example.com', 'hashed_password_1', true),
('Jane Smith', 'jane_smith', 'jane@example.com', 'hashed_password_2', false),
('Admin User', 'admin_user', 'admin@example.com', 'hashed_password_3', true),
('Alice Johnson', 'alice', 'alice@example.com', 'hashed_password_4', false),
('Bob Williams', 'bob', 'bob@example.com', 'hashed_password_5', false);
EOF;
$sqlPembelian = <<<EOF
INSERT INTO pembelian (ticket_id, user_id, pembelian_created_time) VALUES
(1, 1, '2023-10-01 12:30:00'),
(3, 2, '2023-10-06 16:15:00'),
(2, 3, '2023-11-15 20:00:00'),
(5, 4, '2023-12-05 10:45:00'),
(8, 5, '2024-01-20 08:30:00');
EOF;
$db->beginTransaction();
$db->exec($sqlEvent);
echo "Successfully inserted dummy data to events table<br/>";
$db->exec($sqlTicket);
echo "Successfully inserted dummy data to tickets table<br/>";
$db->exec($sqlUser);
echo "Successfully inserted dummy data to users table<br/>";
$db->exec($sqlPembelian);
echo "Successfully inserted dummy data to pembelian table<br/>";
$db->commit();
} catch (PDOException $e) {
$db->rollBack();
echo "Error: " . $e->getMessage();
}
} else {
echo "Error: Database connection not established.";
}
$db = null;
?>
<?php
include 'connect.php';
$dotenvContents = file_get_contents(__DIR__ . '/../.env');
$dotenvLines = explode("\n", $dotenvContents);
foreach ($dotenvLines as $line) {
// Skip empty lines and comments
if (!empty($line) && strpos($line, '=') !== false && strpos($line, '#') !== 0) {
list($name, $value) = explode('=', $line, 2);
$_ENV[$name] = $value;
putenv("$name=$value");
}
}
error_reporting(E_ALL);
ini_set('display_errors', 1);
include 'reset.php';
include 'data.php';
$db = null;
echo "Database initialization successful!";
?>
CREATE DATABASE IF NOT EXISTS tubes1_WBD;
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)
);
CREATE TABLE IF NOT EXISTS tickets (
ticket_id INT AUTO_INCREMENT PRIMARY KEY,
ticket_name CHAR(255),
ticket_price INT,
event_id INT,
FOREIGN KEY (event_id) REFERENCES events(event_id)
);
CREATE TABLE IF NOT EXISTS users (
user_ID INT AUTO_INCREMENT PRIMARY KEY,
user_name CHAR(255),
username CHAR(255),
user_email VARCHAR(255),
user_hashedPass CHAR(255),
isAdmin BOOLEAN
);
CREATE TABLE IF NOT EXISTS pembelian (
pembelian_id INT AUTO_INCREMENT PRIMARY KEY,
ticket_id INT,
user_id INT,
pembelian_created_time DATETIME,
FOREIGN KEY (ticket_id) REFERENCES tickets(ticket_id),
FOREIGN KEY (user_id) REFERENCES users(user_ID)
);
\ No newline at end of file
<?php
include 'connect.php';
try {
$db->exec("DROP TABLE IF EXISTS pembelian");
$db->exec("DROP TABLE IF EXISTS tickets");
$db->exec("DROP TABLE IF EXISTS events");
$db->exec("DROP TABLE IF EXISTS users");
echo "Successfully reset the database<br/>";
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
$db = null;
?>
\ No newline at end of file
version: '3.3'
services:
web:
image: php:8.0-apache
build:
context: ./
dockerfile: Dockerfile
container_name: tubes-1
depends_on:
- db
ports:
- 8008:80
volumes:
- .:/var/www/html/
- ./config.ini:/usr/local/etc/php/conf.d/custom.ini
db:
image: mysql:5.7
env_file:
- .env
ports:
- 3306:3306
volumes:
- ./db:/docker-entrypoint-initdb.d
home.php 0 → 100644
<?php
// home.php
include_once './app/Controllers/EventController.php';
include_once './app/Controllers/PembelianController.php';
include_once './app/Controllers/TicketController.php';
include_once './app/Controllers/UserController.php';
$eventController = new EventController();
$pembelianController = new PembelianController();
$ticketController = new TicketController();
$userController = new UserController();
// Check if form is submitted for event
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST['createEvent'])) {
$eventController->createEvent($_POST['eventStock'], $_POST['eventCreatedTime'], $_POST['eventDetails']);
} elseif (isset($_POST['updateEvent'])) {
$eventController->updateEvent($_POST['eventId'], $_POST['eventStock'], $_POST['eventCreatedTime'], $_POST['eventDetails']);
} elseif (isset($_POST['deleteEvent'])) {
$eventController->deleteEvent($_POST['eventId']);
}
}
// Fetch all records for display
$events = $eventController->getAllEvents();
$pembelians = $pembelianController->getAllPembelians();
$tickets = $ticketController->getAllTickets();
$users = $userController->getAllUsers();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CRUD Test</title>
</head>
<body>
<h1>CRUD Test</h1>
<!-- Event CRUD Form -->
<h2>Events</h2>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<!-- Create Event -->
<label>Create Event:</label>
<input type="text" name="eventStock" placeholder="Stock">
<input type="datetime-local" name="eventCreatedTime">
<input type="text" name="eventDetails" placeholder="Details">
<button type="submit" name="createEvent">Create</button>
<!-- Update Event -->
<label>Update Event:</label>
<input type="text" name="eventId" 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="updateEvent">Update</button>
<!-- Delete Event -->
<label>Delete Event:</label>
<input type="text" name="eventId" placeholder="Event ID">
<button type="submit" name="deleteEvent">Delete</button>
</form>
<!-- Display Events -->
<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>
<?php endforeach; ?>
</ul>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>PHP TITLE</title>
</head>
<body>
<h1>HAI HAI HAI HAI</h1>
<p>lalalalala</p>
<?php
include './db/connect.php';
// Include other files and check for success or errors
include './db/init.php';
// include './db/data.php';
// include './db/reset.php';
// PHP code
$phpVersion = phpversion();
echo "<p>PHP Version: $phpVersion</p>";
?>
<p>asdf</p>
<!-- Add the button to navigate to home.php -->
<a href="home.php"><button>Go to Home Page</button></a>
</body>
</html>
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment