DEMONSTRASI


DATABASE

PENJELASAN

Database    :
Saya membuat database dengan nama tiket_penerbangan yang mempunyai 3 tabel. dimana tabel order memiliki foreign key flight_id dan user_id yang menghubungkan data order dengan data pada tabel lain untuk memudahkan saat pemanggilan data pada saat coding.

Coding        : 
Saya memiliki 3 aktor utama yaitu user, admin, dan pegawai maskapai yang memiliki peranan berbeda. mereka dibedakan dengan pemberian role. ketika registrasi, user otomatis memiliki role 'user'. role hanya bisa diubah melalui database. role digunakan untuk mengarahkan login sesuai halaman masing-masing. saya juga menggunakan cookie agar data yang tampil hanya data user yang sedang login saja. (user hanya akan login ke halaman user, admin hanya login ke halaman admin, maskapai hanya akan login ke halaman maskapai)

Catatan : saya menggunakan bootstrap yang sudah didownload dalam bentuk file

CODING




Penerbangan/functions.php

<?php

// koneksi ke db
$db = mysqli_connect("localhost", "root", "", "DB_LSP");

//untuk menerima query
function query($query)
{
    //untuk menggunakan variabel db yg udah dibuat, dengan nih buat array kosong yang nantinya akan jadi wadah buat terima
    //data querynya disimpan dalam variable array rows.
    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)
{
    global $db;

    $id = $data["id"];
    $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"]);

    // Cek apakah ada perubahan foto
    if ($_FILES['foto_flight']['error'] === 4) {
        // Jika tidak ada perubahan foto, gunakan foto yang sudah ada
        $query = "UPDATE flight SET
            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";
    } else {
        // Jika ada perubahan foto, tambahkan foto baru
        $foto_flight = upload();
        if (!$foto_flight) {
            return false;
        }

        // Hapus foto lama jika berhasil diunggah
        $flight = query("SELECT * FROM flight WHERE flight_id = $id")[0];
        $foto_lama = $flight['foto_flight'];
        unlink("../img/$foto_lama");

        // Update dengan foto baru
        $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";
    }

    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;
    }
}

Penerbangan/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: /Penerbangan/User/index.php");
                exit;
            } elseif ($row["role"] == "admin") {
                header("Location: /Penerbangan/Admin/index.php");
                exit;
            } elseif ($row["role"] == "maskapai") {
                header("Location: /Penerbangan/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>

Penerbangan/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>

Penerbangan/logout.php

<?php
setcookie('id','', time()-3600);
setcookie('key', '', time()-3600);

header("Location: login.php");
exit;
?>

Penerbangan/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="#"> NetiTravel
                <img src="./img/somehowlogo.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>

Penerbangan/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>


Penerbangan/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_telpon, 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>

Penerbangan/User/pesanan.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>

Penerbangan/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="#"> NetiTravel
                <img src="../img/somehowlogo.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>

Penerbangan/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>

Penerbangan/Maskapai/konfirmasi.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>

Penerbangan/Maskapai/maskapaiheader.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="#"> NetiTravel
                <img src="../img/somehowlogo.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>

Penerbangan/Admin/adminheader.php

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Admin 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="#"> NetiTravel
                <img src="../img/somehowlogo.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="tambah.php" class="nav-item nav-link">Add</a>
                </div>
                <div class="navbar-nav ms-auto">
                    <a href="../logout.php" class="nav-item nav-link">Logout</a>
                </div>
            </div>
        </div>
    </nav>
</head>

Penerbangan/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>
        ";
}

Penerbangan/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>

Penerbangan/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>

Penerbangan/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"enctype="multipart/form-data">
            <input type="hidden" name="id" value="<?= $flight["flight_id"]; ?>">
            <div class="row g-3">
                <div class="col-6">
                <img src="../img/<?= $flight['foto_flight']; ?>" alt="">
                    <input type="file" 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="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
</body>


LINK DOWNLOAD:

https://drive.google.com/drive/folders/1EWrz_MlmGWdiPMC0jEnUl8UeUDHvKdeb?usp=sharing


Posting Komentar

0 Komentar

Langsung ke konten utama