Cara Membuat project E-Ticketing Maskapai
Website Tiket Pesawat
Website ini dirancang sebagai latihan untuk Uji sertifikasi,Website ini menggunakan 3 tabel. Konsep Dan Website ini cukup sederhana, hanya ada 3 tokoh (ADMIN, STAFF dan USER). User bisa memesan tiket yang tersedia, Staff bisa mengkonfirmasi orderan dari user sedangkan admin bertugas menyiapkan dan menentukan jadwal penerbangannya
-Website ini Menggunakan Php Native & Boostrap File
*langkah-langkah ada dibawah ini
-Admin/adminheader.php
-Admin/index.php
<?php
// untuk menghubungkan dengan file lain
require '../functions.php';
include 'adminheader.php';
// mengambil data produk sintaks dituliskan dalam huruf besar nama tabel database huruf kecil
$flight = mysqli_query($db, "SELECT * FROM flight");
?>
<body>
<div class="container mt-4">
<a href="tambah.php" class="btn btn-primary">Add +</a>
<br>
<!-- border : menambahkan garis -->
<!-- cellpadding : menambah ruang pada cell/kolom -->
<!-- cellspacing : agar bordernya hanya satu garis tidak double maka dibuat 0 -->
<table class="table table-striped">
<thead>
<tr>
<th class="col-1">No.</th>
<th class="col-2">Aksi</th>
<th class="col-1">Foto</th>
<th class="col-2">Nama Maskapai</th>
<th class="col-1">Tanggal Penerbangan</th>
<th class="col-1">Kuota Penerbangan</th>
<th class="col-1">Bandara Asal</th>
<th class="col-1">Bandara Tujuan</th>
<th class="col-1">Jam Berangkat</th>
<th class="col-1">Jam Tiba</th>
<th class="col-2">Harga Tiket</th>
</tr>
</thead>
<tbody>
<!-- Diganti dengan data aktual -->
<?php $i = 1; ?>
<?php foreach ($flight as $row) : ?>
<tr>
<td><?= $i; ?></td>
<td>
<a href="ubah.php?id=<?= $row["flight_id"]; ?>" class="btn btn-warning btn-sm">Edit</a>
<a href="hapus.php?id=<?= $row["flight_id"]; ?>" class="btn btn-danger btn-sm" onclick=" return confirm('yakin nich?');">hapus</a>
</td>
<td><img src="../img/<?= $row["foto_flight"]; ?>" width="50"></td>
<td><?= $row["nama_maskapai"]; ?></td>
<td><?= $row["tanggal_penerbangan"]; ?></td>
<td><?= $row["kuota_penerbangan"]; ?></td>
<td><?= $row["bandara_asal"]; ?></td>
<td><?= $row["bandara_tujuan"]; ?></td>
<td><?= $row["jam_berangkat"]; ?></td>
<td><?= $row["jam_tiba"]; ?></td>
<td><?= $row["harga_tiket"]; ?></td>
</tr>
<?php $i++; ?>
<?php endforeach; ?>
</tbody>
</table>
</div>
<script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>
</html>
-admin/hapus.php
<?php
require "../functions.php";
$id = $_GET["id"];
if (hapus($id) > 0) {
echo "
<script>
alert('data berhasil dihapus!');
document.location.href = 'index.php';
</script>
";
} else {
echo "
<script>
alert('data gagal dihapus!');
document.location.href = 'index.php';
</script>
";
}
-admin/tambah.php
<?php
require '../functions.php';
include 'adminheader.php';
// untuk cek apakah tombol submit sudah diklik atau belum
// jika $_POST yang namanya-nya submit
if (isset($_POST["submit"])) {
// cek apakah data berhasil ditambah
if (tambah($_POST) > 0) {
echo "
<script>
alert('data berhasil ditambahkan!');
document.location.href = 'index.php';
</script>
";
} else {
echo "
<script>
alert('data gagal ditambahkan!');
document.location.href = 'index.php';
</script>
";
}
}
?>
<body>
<div class="container mt-4">
<form action="" method="post" enctype="multipart/form-data">
<div class="row g-3">
<div class="col-6">
<input type="file" name="foto_flight" id="foto_flight" class="form-control" placeholder="Foto Flight" required>
</div>
<div class="col-6">
<input type="text" name="nama_maskapai" id="nama_maskapai" class="form-control" placeholder="Nama Maskapai" required>
</div>
<div class="col-6">
<input type="date" name="tanggal_penerbangan" id="tanggal_penerbangan" class="form-control" required>
</div>
<div class="col-6">
<input type="number" name="kuota_penerbangan" id="kuota_penerbangan" class="form-control" placeholder="Kuota Penerbangan" min="0" required>
</div>
<div class="col-6">
<input type="text" name="bandara_asal" id="bandara_asal" class="form-control" placeholder="Bandara Asal" required>
</div>
<div class="col-6">
<input type="text" name="bandara_tujuan" id="bandara_tujuan" class="form-control" placeholder="Bandara Tujuan" required>
</div>
<div class="col-6">
<input type="time" name="jam_berangkat" id="jam_berangkat" class="form-control" placeholder="Jam Berangkat" required>
</div>
<div class="col-6">
<input type="time" name="jam_tiba" id="jam_tiba" class="form-control" placeholder="Jam Tiba" required>
</div>
<div class="col-6">
<input type="number" name="harga_tiket" id="harga_tiket" class="form-control" placeholder="Harga Tiket" min="0" required>
</div>
<div class="col-12">
<button type="submit" name="submit" class="btn btn-primary ">Add new data</button>
</div>
</div>
</form>
</div>
<script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>
-admin/ubah.php
<?php
require '../functions.php';
include 'adminheader.php';
//ambil data di URL
$id = $_GET["id"];
$flight = query("SELECT * FROM flight WHERE flight_id = $id")[0];
// untuk cek apakah tombol submit sudah diklik atau belum
// jika $_POST yang namanya-nya submit
if (isset($_POST["submit"])) {
// cek apakah data berhasil diubah
if (ubah($_POST) > 0) {
echo "
<script>
alert('data berhasil diubah!');
document.location.href = 'index.php';
</script>
";
} else {
echo "
<script>
alert('data gagal diubah!');
document.location.href = 'index.php';
</script>
";
}
}
?>
<body>
<div class="container mt-4">
<form action="" method="post">
<input type="hidden" name="id" value="<?= $flight["flight_id"]; ?>">
<div class="row g-3">
<div class="col-6">
<input type="text" name="foto_flight" id="foto_flight" class="form-control" value="<?= $flight["foto_flight"]; ?>" required>
</div>
<div class="col-6">
<input type="text" name="nama_maskapai" id="nama_maskapai" class="form-control" value="<?= $flight["nama_maskapai"]; ?>" required>
</div>
<div class="col-6">
<input type="date" name="tanggal_penerbangan" id="tanggal_penerbangan" class="form-control" value="<?= $flight["tanggal_penerbangan"]; ?>" required>
</div>
<div class="col-6">
<input type="number" name="kuota_penerbangan" id="kuota_penerbangan" class="form-control" min="0" value="<?= $flight["kuota_penerbangan"]; ?>" required>
</div>
<div class="col-6">
<input type="text" name="bandara_asal" id="bandara_asal" class="form-control" value="<?= $flight["bandara_asal"]; ?>" required>
</div>
<div class="col-6">
<input type="text" name="bandara_tujuan" id="bandara_tujuan" class="form-control" value="<?= $flight["bandara_tujuan"]; ?>" required>
</div>
<div class="col-6">
<input type="time" name="jam_berangkat" id="jam_berangkat" class="form-control" value="<?= $flight["jam_berangkat"]; ?>" required>
</div>
<div class="col-6">
<input type="time" name="jam_tiba" id="jam_tiba" class="form-control" value="<?= $flight["jam_tiba"]; ?>" required>
</div>
<div class="col-6">
<input type="number" name="harga_tiket" id="harga_tiket" class="form-control" min="0" value="<?= $flight["harga_tiket"]; ?>" required>
</div>
<div class="col-12">
<button type="submit" name="submit" class="btn btn-primary">Ubah Flight</button>
</div>
</div>
</form>
</div>
<script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>
-maskapai/maskapaiheadar.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Maskapai Page</title>
<link rel="stylesheet" href="../Style/css/bootstrap.min.css">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#"> Apatist Air
<img src="../img/222.png" alt="Logo" width="40">
</a>
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbarCollapse">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<div class="navbar-nav">
<a href="dashboard.php" class="nav-item nav-link active">Dashboard</a>
<a href="konfirmasi.php" class="nav-item nav-link">Konfirmasi</a>
</div>
<div class="navbar-nav ms-auto">
<a href="../logout.php" class="nav-item nav-link">Logout</a>
</div>
</div>
</div>
</nav>
</head>
-maskapai/komfirmasi.php
<?php
require '../functions.php';
include 'maskapaiheader.php';
// Jika tombol konfirmasi atau cancel diklik
if (isset($_GET['action'])) {
$action = $_GET['action'];
$order_id = $_GET['order_id']; // Ambil order_id dari parameter URL
// Update status sesuai dengan aksi yang dipilih
if ($action == 'confirm') {
$status = 'Confirmed';
} elseif ($action == 'cancel') {
$status = 'Cancelled';
}
// Query untuk update status di database
$update_query = "UPDATE `order` SET status='$status' WHERE order_id='$order_id'";
mysqli_query($db, $update_query);
}
?>
<body>
<div class="container mt-4">
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4">
<?php
// Mengambil data pesanan dari tabel order dan data penerbangan dari tabel flight
$query = "SELECT * FROM `order`
JOIN flight ON `order`.flight_id = flight.flight_id";
$result = mysqli_query($db, $query);
// Loop untuk menampilkan data pesanan dan penerbangan dalam bentuk card
foreach ($result as $row) :
?>
<div class="card" style="width: 18rem; margin-bottom: 20px;">
<img class="card-img-top" src="../img/<?= $row["foto_flight"]; ?>" alt="Card image cap">
<div class="card-body">
<h5 class="card-title">Ms/Mr <?= $row["nama"]; ?></h5>
</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">Tanggal Keberangkatan: <?= $row["tanggal_penerbangan"]; ?></li>
<li class="list-group-item">Bandara Asal: <?= $row["bandara_asal"]; ?></li>
<li class="list-group-item">Bandara Tujuan: <?= $row["bandara_tujuan"]; ?></li>
<li class="list-group-item">Jam Berangkat: <?= $row["jam_berangkat"]; ?></li>
<li class="list-group-item">Jam Tiba: <?= $row["jam_tiba"]; ?></li>
<li class="list-group-item text-danger">Status: <?= $row['status']; ?></li>
</ul>
<div class="card-body">
<!-- Tambahkan parameter action dan order_id di URL -->
<a href="?action=confirm&order_id=<?= $row['order_id']; ?>" class="btn btn-warning btn-sm">Konfirmasi</a>
<a href="?action=cancel&order_id=<?= $row['order_id']; ?>" class="btn btn-warning btn-sm">Cancel</a>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
<script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>
</html>
-maskapai/dashboard.php
<?php
require '../functions.php';
include 'maskapaiheader.php';
?>
<body>
<div class="container mt-4">
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4">
<?php
// Mengambil data pesanan dari tabel order dan data penerbangan dari tabel flight
$query = "SELECT * FROM `order`
JOIN flight ON `order`.flight_id = flight.flight_id";
$result = mysqli_query($db, $query);
// Mengambil total tiket terjual dari tabel order
$total_tiket_terjual_query = "SELECT SUM(jumlah_penumpang) AS total_penumpang FROM `order`";
$total_tiket_terjual_result = mysqli_query($db, $total_tiket_terjual_query);
$total_tiket_terjual_row = mysqli_fetch_assoc($total_tiket_terjual_result);
$total_tiket_terjual = $total_tiket_terjual_row['total_penumpang'];
// Loop untuk menampilkan data pesanan dan penerbangan dalam bentuk card
foreach ($result as $row) :
?>
<div class="card" style="width: 18rem; margin-bottom: 20px;">
<img class="card-img-top" src="../img/<?= $row["foto_flight"]; ?>" alt="Card image cap">
<div class="card-body">
<h5 class="card-title">Tiket <?= $row["nama_maskapai"]; ?> Terjual : <?= $total_tiket_terjual; ?></h5>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
<script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>
-user/index.php
<?php
require '../functions.php';
include 'userheader.php';
?>
<body>
<div class="container mt-4">
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4">
<?php
// Mengambil data produk dari tabel flight
$flight = mysqli_query($db, "SELECT * FROM flight");
// foreach loop untuk menampilkan data dalam bentuk card
foreach ($flight as $row) :
?>
<div class="card" style="width: 18rem; margin-bottom: 20px;">
<img class="card-img-top" src="../img/<?= $row["foto_flight"]; ?>" alt="Card image cap">
<div class="card-body">
<h5 class="card-title"><?= $row["nama_maskapai"]; ?></h5>
<p class="card-text">Tanggal Penerbangan: <?= $row["tanggal_penerbangan"]; ?></p>
</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">Kuota Penerbangan: <?= $row["kuota_penerbangan"]; ?></li>
<li class="list-group-item">Bandara Asal: <?= $row["bandara_asal"]; ?></li>
<li class="list-group-item">Bandara Tujuan: <?= $row["bandara_tujuan"]; ?></li>
</ul>
<div class="card-body">
<p>Jam Berangkat: <?= $row["jam_berangkat"]; ?></p>
<p>Jam Tiba: <?= $row["jam_tiba"]; ?></p>
<p>Harga Tiket: <?= $row["harga_tiket"]; ?></p>
</div>
<a href="Order.php?id=<?= $row['flight_id']; ?>" class="btn btn-danger">Pesan</a>
</div>
<?php endforeach; ?>
</div>
</div>
<script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>
-user/order.php
<?php
require '../functions.php';
include 'userheader.php';
?>
<?php
// Inisialisasi variabel
$row = [];
// Periksa apakah parameter URL flight_id ada
$flight_id = $_GET['id'] ?? null;
if ($flight_id) {
// Mendapatkan informasi penerbangan berdasarkan flight_id
$flight_info = mysqli_query($db, "SELECT * FROM flight WHERE flight_id = $flight_id");
// Memastikan data penerbangan ditemukan
$row = mysqli_fetch_assoc($flight_info);
// Redirect atau tampilkan pesan kesalahan jika tidak ditemukan
if (!$row) {
// Handle error, misalnya redirect ke halaman error atau tampilkan pesan
echo "Oops! Terjadi kesalahan.";
exit;
}
} else {
echo "Oops! Masih error.";
exit;
}
if (isset($_POST["submit"])) {
// Mendapatkan user_id dari cookie
$user_id = getUserIdFromCookie();
if ($user_id) {
// Mendapatkan data dari formulir
$nama = mysqli_real_escape_string($db, $_POST['nama']);
$email = mysqli_real_escape_string($db, $_POST['email']);
$no_telpon = mysqli_real_escape_string($db, $_POST['no_telpon']);
$alamat = mysqli_real_escape_string($db, $_POST['alamat']);
$kode_pos = mysqli_real_escape_string($db, $_POST['kode_pos']);
$jumlah_penumpang = mysqli_real_escape_string($db, $_POST['jumlah_penumpang']);
// Query untuk menyimpan pesanan ke dalam database
$query = "INSERT INTO `order` (flight_id, user_id, nama, email, no_tlp, alamat, kode_pos, jumlah_penumpang)
VALUES ('$flight_id', '$user_id', '$nama', '$email', '$no_telpon', '$alamat', '$kode_pos', $jumlah_penumpang)";
// Eksekusi query
if (mysqli_query($db, $query)) {
// Ambil kuota penerbangan dari database
$flight_info = mysqli_query($db, "SELECT kuota_penerbangan FROM flight WHERE flight_id = $flight_id");
$row = mysqli_fetch_assoc($flight_info);
$kuota_penerbangan = $row['kuota_penerbangan'];
// Kurangi kuota penerbangan dengan jumlah penumpang yang dipesan
$update_kuota = $kuota_penerbangan - intval($jumlah_penumpang);
if ($update_kuota > 0) {
// Eksekusi query untuk memperbarui kuota penerbangan
$query_kuota = "UPDATE flight SET kuota_penerbangan = $update_kuota WHERE flight_id = $flight_id";
if (mysqli_query($db, $query_kuota)) {
// Kuota penerbangan berhasil diperbarui
echo "
<script>
alert('Pesanan berhasil dibuat!');
document.location.href = 'pesanan.php';
</script>
";
} else {
// Handle kesalahan jika gagal memperbarui kuota penerbangan
echo "Gagal memperbarui kuota penerbangan: " . mysqli_error($db);
}
} else {
// Kuota penerbangan habis
echo "
<script>
alert('Maaf, kuota penerbangan untuk penerbangan ini telah habis. Pesanan dibatalkan.');
document.location.href = 'index.php';
</script>
";
}
} else {
// Handle kesalahan jika query pesanan tidak berhasil dieksekusi
echo "Gagal membuat pesanan: " . mysqli_error($db);
}
} else {
// Handle kesalahan jika user_id tidak tersedia dalam cookie
echo "User ID tidak ditemukan dalam cookie.";
}
}
?>
<body>
<br>
<div class="container mt-4">
<!-- Formulir untuk input ke database -->
<form method="post" action="">
<input type="hidden" name="flight_id" value="<?= $flight_id; ?>">
<!-- Menampilkan informasi penerbangan yang diambil otomatis -->
<div class="row g-3">
<div class="col-6">
<label for="nama_maskapai" class="form-label">Nama Maskapai</label>
<input type="text" class="form-control" value="<?= $row['nama_maskapai'] ?? 'N/A'; ?>">
</div>
<div class="col-6">
<label for="bandara_asal" class="form-label">Bandara Asal</label>
<input type="text" class="form-control" value="<?= $row['bandara_asal'] ?? 'N/A'; ?>">
</div>
<div class="col-6">
<label for="bandara_tujuan" class="form-label">Bandara Tujuan</label>
<input type="text" class="form-control" value="<?= $row['bandara_tujuan'] ?? 'N/A'; ?>">
</div>
<div class="col-6">
<label for="harga" class="form-label">Harga</label>
<input type="text" class="form-control" value="<?= $row['harga_tiket'] ?? 'N/A'; ?>">
</div>
<div class="col-6">
<label for="nama" class="form-label">Nama</label>
<input type="text" class="form-control" name="nama" required>
</div>
<div class="col-6">
<label for="email" class="form-label">Email</label>
<input type="email" class="form-control" name="email" required>
</div>
<div class="col-6">
<label for="no_telpon" class="form-label">No Telepon</label>
<input type="text" class="form-control" name="no_telpon" required>
</div>
<div class="col-6">
<label for="alamat" class="form-label">Alamat</label>
<input type="text" class="form-control" name="alamat" required>
</div>
<div class="col-6">
<label for="kode_pos" class="form-label">Kode Pos</label>
<input type="text" class="form-control" name="kode_pos" required>
</div>
<div class="col-6">
<label for="jumlah_penumpang" class="form-label">Jumlah Penumpang</label>
<input type="number" name="jumlah_penumpang" id="jumlah_penumpang" class="form-control" min="0" required>
</div>
</div>
<br>
<button type="submit" name="submit" class="btn btn-danger">Buat order</button>
</form>
</div>
<script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>
-user/oder.php
<?php
require '../functions.php';
include 'userheader.php';
?>
<body>
<div class="container mt-4">
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4">
<?php
// Ambil user_id dari cookie
$user_id = isset($_COOKIE['user_id']) ? $_COOKIE['user_id'] : null;
// Periksa apakah user_id tersedia sebelum melanjutkan
if ($user_id) {
// Query untuk mengambil data pesanan berdasarkan user_id
$query = "SELECT * FROM `order`
JOIN flight ON `order`.flight_id = flight.flight_id
WHERE `order`.user_id = $user_id";
$result = mysqli_query($db, $query);
// Loop untuk menampilkan data pesanan dan penerbangan dalam bentuk card
foreach ($result as $row) :
$total_harga = $row["jumlah_penumpang"] * $row['harga_tiket'];
?>
<div class="card" style="width: 18rem; margin-bottom: 20px;">
<img class="card-img-top" src="../img/<?= $row["foto_flight"]; ?>" alt="Card image cap">
<div class="card-body">
<h5 class="card-title">Ms/Mr <?= $row["nama"]; ?></h5>
</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">Kode Booking: <?= $row["order_id"]; ?></li>
<li class="list-group-item">Tanggal Keberangkatan: <?= $row["tanggal_penerbangan"]; ?></li>
<li class="list-group-item">Bandara Asal: <?= $row["bandara_asal"]; ?></li>
<li class="list-group-item">Bandara Tujuan: <?= $row["bandara_tujuan"]; ?></li>
<li class="list-group-item">Jam Berangkat: <?= $row["jam_berangkat"]; ?></li>
<li class="list-group-item">Jam Tiba: <?= $row["jam_tiba"]; ?></li>
<li class="list-group-item">Total Harga: <?= $total_harga; ?></li>
</ul>
<div class="card-body">
<p class="card-text text-danger">Status: <?= $row['status']; ?></p>
</div>
</div>
<?php endforeach;
} else {
// Jika user_id tidak tersedia dalam cookie
echo "User ID tidak ditemukan dalam cookie.";
}
?>
</div>
</div>
<script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>
</html>
-user/userheader.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>User Page</title>
<link rel="stylesheet" href="../Style/css/bootstrap.min.css">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#"> Apatist Air
<img src="../img/222.png" alt="Logo" width="40">
</a>
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbarCollapse">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<div class="navbar-nav">
<a href="index.php" class="nav-item nav-link active">Home</a>
<a href="pesanan.php" class="nav-item nav-link">Pesanan</a>
</div>
<div class="navbar-nav ms-auto">
<a href="../logout.php" class="nav-item nav-link">Logout</a>
</div>
</div>
</div>
</nav>
</head>
-user/functions.php
<?php
// koneksi ke db
$db = mysqli_connect("localhost", "root", "", "flighting");
//untuk menerima query
function query($query)
{
//untuk menggunakan variabel db yg udah dibuat
global $db;
$result = mysqli_query($db, $query);
$rows = [];
// mysqli_.._assoc = untuk mengambil satu baris data dalam table
while ($row = mysqli_fetch_assoc($result)) {
$rows[] = $row;
}
return $rows;
}
function tambah($data)
{
//buat variabel untuk ambil data dari tiap elemen dalam form
//htmlspecialchars menghindari user iseng yang ingin menyisipkan coding html dalam input.
//jika mau simple gausah pakai aja jadi tinggal $data["nama"];
$nama_maskapai = htmlspecialchars($data["nama_maskapai"]);
$tanggal_penerbangan = htmlspecialchars($data["tanggal_penerbangan"]);
$kuota_penerbangan = htmlspecialchars($data["kuota_penerbangan"]);
$bandara_asal = htmlspecialchars($data["bandara_asal"]);
$bandara_tujuan = htmlspecialchars($data["bandara_tujuan"]);
$jam_berangkat = htmlspecialchars($data["jam_berangkat"]);
$jam_tiba = htmlspecialchars($data["jam_tiba"]);
$harga_tiket = htmlspecialchars($data["harga_tiket"]);
$foto_flight = upload();
if (!$foto_flight) {
exit; // Jika upload gagal, hentikan eksekusi script
}
//query insert data
$query = "INSERT INTO flight VALUES
(NULL, '$bandara_asal', '$bandara_tujuan', '$nama_maskapai', '$tanggal_penerbangan', '$jam_berangkat'
, '$jam_tiba', '$kuota_penerbangan', '$harga_tiket', '$foto_flight')";
global $db;
mysqli_query($db, $query);
return mysqli_affected_rows($db);
}
function upload()
{
$namaFile = $_FILES['foto_flight']['name'];
$ukuranFile = $_FILES['foto_flight']['size'];
$error = $_FILES['foto_flight']['error'];
$tmpName = $_FILES['foto_flight']['tmp_name'];
$ekstensGambarValid = ['jpg', 'jpeg', 'png'];
$ekstensGambar = explode('.', $namaFile);
$ekstensGambar = strtolower(end($ekstensGambar));
if (!in_array($ekstensGambar, $ekstensGambarValid)) {
echo "<script>
alert('Yang Anda upload bukan gambar!');
</script>";
return false;
}
if ($ukuranFile > 1000000) {
echo "<script>
alert('Ukuran gambar terlalu besar!');
</script>";
return false;
}
// Pindahkan file ke direktori yang diinginkan
$destination = '../img/' . $namaFile;
if (move_uploaded_file($tmpName, $destination)) {
return $namaFile; // Kembalikan nama file jika berhasil diupload
} else {
echo "<script>
alert('Gagal mengupload gambar!');
</script>";
return false;
}
}
function hapus($id)
{
global $db;
mysqli_query($db, "DELETE FROM flight WHERE flight_id = $id");
return mysqli_affected_rows($db);
}
function ubah($data)
{
$id = $data["id"];
$foto_flight = htmlspecialchars($data["foto_flight"]);
$nama_maskapai = htmlspecialchars($data["nama_maskapai"]);
$tanggal_penerbangan = htmlspecialchars($data["tanggal_penerbangan"]);
$kuota_penerbangan = htmlspecialchars($data["kuota_penerbangan"]);
$bandara_asal = htmlspecialchars($data["bandara_asal"]);
$bandara_tujuan = htmlspecialchars($data["bandara_tujuan"]);
$jam_berangkat = htmlspecialchars($data["jam_berangkat"]);
$jam_tiba = htmlspecialchars($data["jam_tiba"]);
$harga_tiket = htmlspecialchars($data["harga_tiket"]);
//query insert data
$query = "UPDATE flight SET
foto_flight = '$foto_flight',
nama_maskapai = '$nama_maskapai',
tanggal_penerbangan = '$tanggal_penerbangan',
kuota_penerbangan = '$kuota_penerbangan',
bandara_asal = '$bandara_asal',
bandara_tujuan = '$bandara_tujuan',
jam_berangkat = '$jam_berangkat',
jam_tiba = '$jam_tiba',
harga_tiket = '$harga_tiket'
WHERE flight_id = $id
";
global $db;
mysqli_query($db, $query);
return mysqli_affected_rows($db);
}
function registrasi($data)
{
global $db;
//agar user tidak memasukan karakter slash dan memasukan huruf kecil
$username = strtolower(stripslashes($data['username']));
//supaya aman dari sql injection seperti tdk sengaja memasukan kutip mysqli_real_escape_string
$password = mysqli_real_escape_string($db, $data["password"]);
$password2 = mysqli_real_escape_string($db, $data["password2"]);
$email = htmlspecialchars($data['email']);
// Periksa kesesuaian password
if ($password !== $password2) {
echo "<script>
alert('Konfirmasi password tidak sesuai!');
</script>";
return false; // Mengembalikan false jika konfirmasi password tidak sesuai
}
// Hash password menggunakan password_hash()
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
// Periksa apakah username sudah ada
$result = mysqli_query($db, "SELECT username FROM user WHERE username = '$username'");
if (mysqli_fetch_assoc($result)) {
echo "<script>
alert('Username sudah terdaftar!');
</script>";
return false; // Mengembalikan false jika username sudah terdaftar
}
// Simpan data registrasi ke dalam database
mysqli_query($db, "INSERT INTO user (username, email, password, role) VALUES ('$username', '$email', '$hashedPassword', 'user')");
return mysqli_affected_rows($db); // Mengembalikan jumlah baris yang terpengaruh oleh operasi INSERT
}
function getUserIdFromCookie()
{
if (isset($_COOKIE['user_id'])) {
return $_COOKIE['user_id'];
} else {
return null;
}
}
// gunakan var_dump untuk memeriksa hasil queri apakah udah sesuai belum
// $mydata = mysqli_fetch_row($result);
// var_dump($mydata);
// untuk cek apakah ada error
// if (!$result){
// echo mysqli_error($db);
// }
-user/login.php
<?php
require 'functions.php';
include 'mainheader.php';
// cek cookie
if (isset($_COOKIE['id']) && isset($_COOKIE['key'])) {
$id = $_COOKIE['id'];
$key = $_COOKIE['key'];
// ambil username berdasarkan id
$result = mysqli_query($db, "SELECT username FROM user WHERE user_id = $id");
$row = mysqli_fetch_assoc($result);
}
if (isset($_POST["login"])) {
$username = $_POST["username"];
$password = $_POST["password"];
$result = mysqli_query($db, "SELECT * FROM user WHERE username = '$username'");
if (mysqli_num_rows($result) === 1) {
// Cek password
$row = mysqli_fetch_assoc($result);
if (password_verify($password, $row["password"])) {
// Set user_id cookie
setcookie('user_id', $row['user_id'], time() + 3600, '/');
//cek pakai remeber
if (isset($_POST['remember'])) {
//buat coookie
setcookie('id', $row['user_id'], time() + 3600, '/');
setcookie('key', $row['username'], time() + 3600, '/');
}
// Periksa role
if ($row["role"] == "user") {
header("Location: /Flighting/user/index.php");
exit;
} elseif ($row["role"] == "admin") {
header("Location: /Flighting/admin/index.php");
exit;
} elseif ($row["role"] == "maskapai") {
header("Location: /Flighting/maskapai/dashboard.php");
exit;
} else {
echo "Role tidak valid";
}
} else {
echo "<script>alert('Password salah!');</script>";
}
} else {
echo "<script>alert('Username tidak ditemukan!');</script>";
}
}
?>
<body>
<br>
<br>
<form action="" method="post">
<div class="container-sm">
<div class="row mb-3">
<label for="username" class="col-sm-2 col-form-label">Username</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="username" name="username" placeholder="username">
</div>
</div>
<div class="row mb-3">
<label for="password" class="col-sm-2 col-form-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="password" name="password" placeholder="password">
</div>
</div>
<div class="row mb-3">
<div class="col-sm-10 offset-sm-2">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="remember" id="remember">
<label class="form-check-label" for="checkRemember">Remember me</label>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-10 offset-sm-2">
<button type="submit" name="login" class="btn btn-primary">Sign in</button>
</div>
</div>
</div>
</form>
<script src="./Style/js/bootstrap.bundle.min.js"></script>
</body>
-user/logout.php
<?php
setcookie('id','', time()-3600);
setcookie('key', '', time()-3600);
header("Location: login.php");
exit;
?>
-user/mainheader.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Authentication Page</title>
<link rel="stylesheet" href="./Style/css/bootstrap.min.css">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#"> Apatist Air
<img src="./img/s2.png" alt="Logo" width="40">
</a>
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbarCollapse">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<div class="navbar-nav ms-auto">
<a href="login.php" class="nav-item nav-link">Login</a>
<a href="registrasi.php" class="nav-item nav-link">Register</a>
</div>
</div>
</div>
</nav>
</head>
-user/registrasi.php
<?php
require 'functions.php';
include 'mainheader.php';
if (isset($_POST["register"])) {
if (registrasi($_POST) > 0) {
echo "
<script>
alert('registrasi berhasil!');
document.location.href = 'login.php';
</script>
";
} else {
echo mysqli_error($db);
}
}
?>
<body>
<br>
<br>
<form action="" method="post">
<div class="container-sm">
<div class="row mb-3">
<label for="username" class="col-sm-2 col-form-label">Username</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="username" name="username" placeholder="Username">
</div>
</div>
<div class="row mb-3">
<label for="email" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="email" name="email" placeholder="Email">
</div>
</div>
<div class="row mb-3">
<label for="password" class="col-sm-2 col-form-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="password" name="password" placeholder="Password">
</div>
</div>
<div class="row mb-3">
<label for="password2" class="col-sm-2 col-form-label">Konfirmasi Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="password2" name="password2" placeholder="Konfirmasi Password">
</div>
</div>
<div class="row">
<div class="col-sm-10 offset-sm-2">
<button type="submit" name="register" class="btn btn-primary">Registrasi</button>
</div>
</div>
</div>
</form>
<script src="./Style/js/bootstrap.bundle.min.js"></script>
</body>
</html>
-DOKUMENTASI
Komentar
Posting Komentar