Membuat Website Maskapai Penerbangan

 


     Halo teman-teman! Kali ini saya akan sharing langkah-langkah membuat web store E-tiket pesawat menggunakan PHP native. Semoga blog ini dapat menjadi referensi untuk saya dan juga kalian.

Oke langsung saja masuk ke tutorial nya:


Link Bootstrap

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>




1. Membuat DataBase

di bawah ini adalah gambaran ERD (Entity Relationship Diagram) yang menyambungkan ketiga buah tabel: "tb_penerbangan", "tb_order", dan "tb_user".



  a. Tabel "tb_penerbangan"

    Tabel "tb_penerbangan" digunakan untuk data dan jadwal lengkap mengenai penerbangan yang tersedia. Berikut adalah syntax SQL nya :

CREATE TABLE tb_penerbangan(
    id_penerbangan INT(10) NOT NULL AUTO_INCREMENT,
    nama_maskapai VARCHAR(100) NOT NULL,
    kuota_penerbangan int(10),
    harga_tiket int(50) NOT NULL,
    tanggal_penerbangan DATE NOT NULL,
    bandara_asal VARCHAR(100) NOT NULL,
    bandara_tujuan VARCHAR(100) NOT NULL,
    jam_berangkat VARCHAR(100) NOT NULL,
    jam_tiba VARCHAR(100) NOT NULL,
    foto VARCHAR(100) NOT NULL,
    PRIMARY KEY (id_penerbangan)
);


    b. Tabel "tb_user"

    Tabel "tb_user" digunakan untuk data lengkap mengenai user yang sudah login di web tersebut dengan role yang berbeda-beda, yaitu user, admin, dan petugas maskapai. Berikut adalah syntax SQL nya :

CREATE TABLE tb_user(
    user_id INT (10) NOT NULL AUTO_INCREMENT,
    username VARCHAR(100) NOT NULL,
    email VARCHAR(50) NOT NULL,
    password VARCHAR(100) NOT NULL,
    role VARCHAR(20) NOT NULL,
    PRIMARY KEY (user_id)
);


    c. Tabel "tb_order"

    Tabel "tb_order" digunakan untuk data lengkap mengenai order yang sudah dilakukan oleh user. Kali ini kita menggunakan foreign key untuk menyambungkan field "id_user" dan "id_penerbangan" yang ada di tabel "tb_order" dengan yang ada di tabel "tb_user" dan "tb_penerbangan". Berikut adalah syntax SQL nya :

CREATE TABLE tb_order(
    id_order INT(10) NOT NULL AUTO_INCREMENT,
    nama VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL,
    no_telpon VARCHAR(12) NOT NULL,
    alamat TEXT NOT NULL,
    kode_pos VARCHAR(15) NOT NULL,
    jumlah_penumpang INT(10) NOT NULL,
    status VARCHAR(100) NOT NULL,
    user_id INT(10) NOT NULL,
    id_penerbangan INT(10) NOT NULL,
    PRIMARY KEY (id_order),
    FOREIGN KEY (user_id) REFERENCES tb_user (user_id),
    FOREIGN KEY (id_penerbangan) REFERENCES tb_penerbangan (id_penerbangan)
);


2. Membuat Folder Image

    Selanjutnya kita akan membuat folder image tambahan yang akan dibutuhkan kedepannya. Saya akan membuat 2 folder image yang pertama dengan nama "img" dan yang kedua dengan nama "logo".

    a. Folder "img"

    Folder ini berfungsi untuk menyimpan image yang akan diinput oleh admin untuk data penerbangan.

    b. Folder "logo"

    Folder ini berfungsi untuk menyimpan foto logo-logo yang akan saya gunakan di web kali ini.

3. Source Code

    Berikut saya akan mencantumkan source code untuk web kali ini, teman teman hanya perlu mengikuti urutannya dan pastikan nama file dan folder benar.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

    a. functions.php

File function digunakan untuk membuat koneksi ke database yang sudah kita buat.

<?php
// koneksi ke db
$db = mysqli_connect("localhost", "root", "", "tiket");

//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"]);
    $kuota_penerbangan = htmlspecialchars($data["kuota_penerbangan"]);
    $harga_tiket =  htmlspecialchars($data["harga_tiket"]);
    $tanggal_penerbangan = htmlspecialchars($data["tanggal_penerbangan"]);
    // $logo_maskapai = htmlspecialchars($data["logo_maskapai"]);
    $bandara_asal =  htmlspecialchars($data["bandara_asal"]);
    $bandara_tujuan =  htmlspecialchars($data["bandara_tujuan"]);
    $jam_berangkat = htmlspecialchars($data["jam_berangkat"]);
    $jam_tiba =  htmlspecialchars($data["jam_tiba"]);
   
    $foto_flight = upload();
    if (!$foto_flight) {
        exit; // Jika upload gagal, hentikan eksekusi script
    }

    //query insert data
    $query = "INSERT INTO tb_penerbangan VALUES
    (NULL, '$nama_maskapai', '$kuota_penerbangan', '$harga_tiket', '$tanggal_penerbangan','$bandara_asal', '$bandara_tujuan', '$jam_berangkat'
    , '$jam_tiba', '$foto_flight')";

    global $db;
    mysqli_query($db, $query);

    return mysqli_affected_rows($db);
}

function upload()
{
    $namaFile = $_FILES['foto']['name'];
    $ukuranFile = $_FILES['foto']['size'];
    $error = $_FILES['foto']['error'];
    $tmpName = $_FILES['foto']['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 tb_penerbangan WHERE id_penerbangan = $id");
    return mysqli_affected_rows($db);
}

function ubah($data)
{
    global $db;

    $id = $data["id"];
    $nama_maskapai = htmlspecialchars($data["nama_maskapai"]);
    $kuota_penerbangan = htmlspecialchars($data["kuota_penerbangan"]);
    $harga_tiket = htmlspecialchars($data["harga_tiket"]);
    $tanggal_penerbangan = htmlspecialchars($data["tanggal_penerbangan"]);
    // $logo_maskapai = htmlspecialchars($data["logo_maskapai"]);
    $bandara_asal = htmlspecialchars($data["bandara_asal"]);
    $bandara_tujuan = htmlspecialchars($data["bandara_tujuan"]);
    $jam_berangkat = htmlspecialchars($data["jam_berangkat"]);
    $jam_tiba = htmlspecialchars($data["jam_tiba"]);

    // Ambil foto lama dari database
    $query_foto_lama = mysqli_query($db, "SELECT foto FROM tb_penerbangan WHERE id_penerbangan = $id");
    $row = mysqli_fetch_assoc($query_foto_lama);
    $foto_lama = $row['foto'];

    // Jika tidak ada pengunggahan file baru, gunakan foto lama
    $foto = $foto_lama;

    // Jika ada pengunggahan file baru, proses file gambar
    if ($_FILES['foto']['size'] > 0) {
        $filename = basename($_FILES["foto"]["name"]);
        $target_dir = "../img/";
        $target_file = $target_dir . $filename;
        $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

        // Pindahkan file yang diunggah ke lokasi yang ditentukan
        if (move_uploaded_file($_FILES["foto"]["tmp_name"], $target_file)) {
            // Hapus file foto lama
            if ($foto_lama != "") {
                unlink($target_dir . $foto_lama);
            }
            // Simpan nama file foto baru
            $foto = $filename;
        }
    }

    // Query untuk update data
    $query = "UPDATE tb_penerbangan SET
        nama_maskapai = '$nama_maskapai',
        kuota_penerbangan = '$kuota_penerbangan',
        harga_tiket = '$harga_tiket',
        tanggal_penerbangan = '$tanggal_penerbangan',
        bandara_asal = '$bandara_asal',
        bandara_tujuan = '$bandara_tujuan',
        jam_berangkat = '$jam_berangkat',
        jam_tiba = '$jam_tiba',
        foto = '$foto'
        WHERE id_penerbangan = $id";

    // Eksekusi query
    mysqli_query($db, $query);

    // Mengembalikan jumlah baris yang terpengaruh
    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 tb_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 tb_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);
// }





    b. 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</title>
    <link rel="stylesheet" href="./Style/css/bootstrap.min.css">

    <nav class="navbar" style="background-color: white;">
        <div class="container-fluid">
            <a class="navbar-brand" href="index.php">
                <!-- <img src="logo/makeitflight2.png" alt="Bootstrap" width="200"> -->
                Wanna Flight
            </a>
            <form class="d-flex">
                <a href="login.php" class="btn btn-dark" style="background-color: #589d9c; border-color: #589d9c"
                    type="button">Login</a>
                <p style="color: white">...</p>
                <a href="register.php" class="btn btn-light" style="border-color: #589d9c; color: #589d9c"
                    type="button">Register</a>
            </form>
    </nav>
</head>

    c. 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 tb_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 tb_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, '/');
            setcookie('username', $row['username'], time() + 3600, "/"); // Cookie akan berlaku selama 30 hari

            //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: /USK/User/index.php");
                exit;
            } elseif ($row["role"] == "admin") {
                header("Location: /USK/Admin/index.php");
                exit;
            } elseif ($row["role"] == "petugas") {
                header("Location: /USK/Petugas/index.php");
                exit;
            } else {
                echo "Role tidak valid";
            }
        } else {
            echo "<script>alert('Password salah!');</script>";
        }
    } else {
        echo "<script>alert('Username tidak ditemukan!');</script>";
    }
}
?>

<body style="background-color: #ACE2E1;">
    <div class="container py-5">
        <center>
            <div class="card" style="width: 18rem;">
                <div class="card-body" style="color: #589d9c;">
                    <!-- <img src="logo/makeitflight2.png" alt="logo" style="max-width: 100%;">
                    <br><br> -->
                    <h5 class="card-title">Login</h5>
                    <h6 class="card-subtitle mb-2">Silahkan login terlebih dahulu.</h6>
                    <br>
                    <form action="" method="post">

                        <div class="mb-3">
                            <label for="username" class="form-label" style="float: left;">Username</label>
                            <input type="text" class="form-control" name="username" id="username"
                                style="border-color: #589d9c; color: #589d9c" required="required">
                        </div>

                        <div class="mb-3">
                            <label for="password" class="form-label" style="float: left;">Password</label>
                            <input type="password" class="form-control" name="password" id="password"
                                style="border-color: #589d9c; color: #589d9c;" required="required">
                        </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>

                        <button type="submit" name="login" class="btn btn-dark"
                            style="background-color: #589d9c; border-color: white">Login</button>

                        <br><br>
                        <p>Belum mempunyai akun? <a href="register.php" class="text-reset">Registrasi di sini</a>.</p>
                    </form>

                </div>
            </div>
        </center>
    </div>

    <script src="./Style/js/bootstrap.bundle.min.js"></script>
</body>

d. register.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 style="background-color: #ACE2E1;">
    <div class="container py-5">
        <center>
            <div class="card" style="width: 20rem;">
                <div class="card-body" style="color: #589d9c">
                    <h5 class="card-title">Register</h5>
                    <h6 class="card-subtitle mb-2">Silahkan lengkapi data anda.</h6>
                    <br>
                    <form action="" method="post">

                        <div class="mb-3">
                            <label for="email" class="form-label" style="float: left;">Email</label>
                            <input type="text" class="form-control" name="email" id="email" style="border-color: #589d9c; color: #589d9c" autocomplete="off">
                        </div>

                        <div class="mb-3">
                            <label for="username" class="form-label" style="float: left;">Username</label>
                            <input type="text" class="form-control" name="username" id="username" style="border-color: #589d9c; color: #589d9c" autocomplete="off">
                        </div>

                        <div class="mb-3">
                            <label for="password" class="form-label" style="float: left;">Password</label>
                            <input type="password" class="form-control" name="password" id="password" style="border-color: #589d9c; color: #589d9c;">
                        </div>

                        <div class="mb-3">
                            <label for="password2" class="form-label" style="float: left;">Konfirmasi Password</label>
                            <input type="password" class="form-control" name="password2" id="password2" style="border-color: #589d9c; color: #589d9c;">
                        </div>

                        <button type="submit" name="register" class="btn btn-dark" style="background-color: #589d9c; border-color: white">Register</button>
                       
                        <br><br>
                        <p>Sudah mempunyai akun? <a href="login.php" class="text-reset">Login di sini</a>.</p>

                    </form>
                </div>
            </div>
        </center>
    </div>

    <script src="./Style/js/bootstrap.bundle.min.js"></script>
</body>


e. logout.php

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

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


f. 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</title>
    <link rel="stylesheet" href="../Style/css/bootstrap.min.css">

    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css" rel="stylesheet">
    <link rel="stylesheet"
        href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/css/bootstrap-datepicker.min.css">
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/js/bootstrap-datepicker.min.js">
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/2.11.6/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/5.1.3/js/bootstrap.min.js"></script>

    <nav class="navbar navbar-expand-lg" data-bs-theme="dark" style="background-color: #589d9c;">
        <div class="container-fluid">
            <a class="navbar-brand" href="index.php">
                <!-- <img src="../logo/makeitflight3.png" alt="Bootstrap" width="200"> -->
                <span class="badge text-bg-light">Admin</span>
            </a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarScroll"
                aria-controls="navbarScroll" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarScroll">
                <ul class="navbar-nav me-auto my-2 my-lg-0 navbar-nav-scroll" style="--bs-scroll-height: 100px;">
                    <li class="nav-item">
                        <a class="nav-link active" aria-current="page" href="index.php">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link active" href="input.php">Input</a>
                    </li>
                </ul>
                <form class="d-flex">
                    <a href="../logout.php" class="btn btn-light" style="border-color: white; color: #589d9c"
                        type="button">Logout</a>
                </form>
            </div>
        </div>
    </nav>

</head>

    g. 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 tb_penerbangan");

?>

<body style="background-color: #ACE2E1;">
    <div class="row container py-5 px-5">


        <?php $i = 1; ?>
        <?php foreach ($flight as $row): ?>

            <div class="card" style="width: 19rem; margin-right: 10px;">
                <img src="../img/<?php echo $row['foto']; ?>" class="img-fluid rounded-start"
                    style="max-height: 180px; width: 100%" alt="">
                <div class="card-body" style="float: left">
                    <h6 style="float: left; margin-top: 10px; margin-left: 10px">
                        <?php echo $row['nama_maskapai']; ?>
                        <br><br>
                        <?php
                        // Periksa apakah kuota penerbangan bernilai 0 atau null
                        if ($row['kuota_penerbangan'] == 0 || is_null($row['kuota_penerbangan'])) {
                            // Jika ya, tampilkan span dengan teks "habis"
                            echo '<span class="badge border border-1 border-dark rounded-pill" style="color:red ; margin-left: 3px">Habis</span>';
                        } else {
                            // Jika tidak, tampilkan nilai kuota penerbangan
                            echo '<span class="badge border border-1 border-dark rounded-pill" style="color:#589d9c ; margin-left: 3px">' . $row['kuota_penerbangan'] . ' Orang</span>';
                        }
                        ?>
                        <span class="badge border border-1 border-dark rounded-pill"
                            style="color:#589d9c ; margin-left: 3px">
                            <?php echo $row['tanggal_penerbangan']; ?>
                        </span>
                    </h6>
                </div>
                <ul class="list-group list-group-flush">
                    <li class="list-group-item">
                        <h5 style="float: left; margin-top: 10px; color:seagreen">
                            Rp.<?php echo $row['harga_tiket']; ?>
                        </h5>
                        <h6 style="float: left; margin-top: 13px">/orang</h6>

                    </li>
                    <li class="list-group-item">
                        <h7 class="card-title text-muted" style="margin-bottom: 0px; margin-top: 0px">
                            Bandara</h7>
                        <h6 class="card-subtitle"><?php echo $row['bandara_asal']; ?></h6>
                        <h5 style="color:#589d9c"><?php echo $row['jam_berangkat']; ?></h5>
                    </li>
                    <li class="list-group-item">
                        <h7 class="card-title text-muted" style="margin-bottom: 0px; margin-top: 0px">
                            Bandara</h7>
                        <h6 class="card-subtitle"><?php echo $row['bandara_tujuan']; ?></h6>
                        <h5 style="color:#589d9c"><?php echo $row['jam_tiba']; ?></h5>
                    </li>
                </ul>
                <div class="card-body">
                    <a href="edit.php?id=<?= $row["id_penerbangan"]; ?>" class="btn btn-outline-success btn-sm"
                        style="width: fit-content; margin-right: 5px">Edit</a>
                    <a href="delete.php?id=<?= $row["id_penerbangan"]; ?>" class="btn btn-outline-danger btn-sm"
                        style="width: fit-content; margin-right: 5px">Delete</a>
                </div>
            </div>

            <br>

            <?php $i++; ?>
        <?php endforeach; ?>


    </div>
    <script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>

</html>


    h. Admin/input.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 style="background-color: #ACE2E1;">
    <div class="container py-5">
        <center>

            <div class="card" style="width: 100%; border-color: #589d9c">
                <div class="card-body" style="color: #589d9c;">

                    <h5 class="card-title">Input Data Tiket</h5>
                    <h6 class="card-subtitle mb-2">Silahkan lengkapi data tiket.</h6>
                    <br>

                    <form class="row g-3" method="POST" enctype="multipart/form-data">

                        <!-- <div class="col-md-3">
                            <label for="logo_maskapai" class="form-label" style="float: left">Logo Maskapai</label>
                            <select class="form-select" aria-label="Default select example" name="logo_maskapai"
                                id="logo_maskapai" style="border-color: #589d9c">
                                <option selected>Pilih logo maskapai</option>
                                <option value="garuda indonesia.png">Garuda Indonesia</option>
                                <option value="citilink.png">Citilink</option>
                                <option value="lion air group.png">Lion Air Group</option>
                                <option value="batik air.png">Batik Air</option>
                                <option value="air asia.png">Air Asia</option>
                                <option value="sriwijaya air.png">Sriwijaya Air</option>
                                <option value="super air jet.png">Super Air Jet</option>
                            </select>
                        </div> -->

                        <div class="col-md-9">
                            <label for="nama_maskapai" class="form-label" style="float: left">Nama Maskapai</label>
                            <input type="text" class="form-control" name="nama_maskapai" id="nama_maskapai"
                                style="border-color: #589d9c">
                        </div>

                        <div class="col-md-6">
                            <label for="bandara_asal" class="form-label" style="float: left">Bendara Asal</label>
                            <input type="text" class="form-control" name="bandara_asal" id="bandara_asal"
                                style="border-color: #589d9c">
                        </div>

                        <div class="col-md-6">
                            <label for="bandara_tujuan" class="form-label" style="float: left">Bendara Tujuan</label>
                            <input type="text" class="form-control" name="bandara_tujuan" id="bandara_tujuan"
                                style="border-color: #589d9c">
                        </div>

                        <div class="col-md-6">
                            <label for="jam_berangkat" class="form-label" style="float: left">Jam Berangkat</label>
                            <input type="text" class="form-control" name="jam_berangkat" id="jam_berangkat"
                                style="border-color: #589d9c">
                        </div>

                        <div class="col-md-6">
                            <label for="jam_tiba" class="form-label" style="float: left">Jam Tiba</label>
                            <input type="text" class="form-control" name="jam_tiba" id="jam_tiba"
                                style="border-color: #589d9c">
                        </div>

                        <div class="col-md-4">
                            <label for="tanggal_penerbangan" class="form-label" style="float: left">Tanggal
                                Penerbangan</label>
                            <div class="input-group date">
                                <span class="input-group-text fas fa-calendar-alt"
                                    style="border-color: #589d9c; color: #589d9c"></span>
                                <input type="text" class="form-control datepicker" name="tanggal_penerbangan"
                                    id="tanggal_penerbangan" style="border-color: #589d9c">
                            </div>
                        </div>

                        <div class="col-md-4">
                            <label for="kuota_penerbangan" class="form-label" style="float: left">Kuota
                                Penerbangan</label>
                            <input type="number" class="form-control" name="kuota_penerbangan" id="kuota_penerbangan"
                                style="border-color: #589d9c">
                        </div>

                        <div class="col-md-4">
                            <label for="harga_tiket" class="form-label" style="float: left">Harga</label>
                            <input type="text" class="form-control" name="harga_tiket" id="harga_tiket"
                                style="border-color: #589d9c">
                        </div>

                        <div class="col-md-3">
                        </div>
                        <div class="col-md-6">
                            <label for="foto" class="form-label" style="float: left">Foto</label>
                            <input type="file" class="form-control" name="foto" id="foto" style="border-color: #589d9c"
                                onchange="previewImage(event)">
                        </div>
                        <div class="col-md-3">
                        </div>

                        <div class="col-md-3">
                        </div>
                        <div class="col-md-6">
                            <div class="card" style="border-color: #589d9c">
                                <div class="card-body">
                                    <p class="card-text">Preview</p>
                                </div>
                                <img id="preview" src="#" class="card-img-bottom" alt="">
                            </div>
                        </div>
                        <div class="col-md-3">
                        </div>

                        <br><br><br><br><br><br>
                        <center>
                            <button type="submit" name="submit" class="btn btn-dark"
                                style="background-color: #589d9c; border-color: white; width: 30%">Input</button>
                            <button type="reset" class="btn btn-light"
                                style="background-color: white; border-color: #589d9c; color: #589d9c; width: 30%">Reset</button>
                        </center>


                    </form>

                    <script type="text/javascript">
                    $(function() {
                        $(".datepicker").datepicker({
                            format: 'yyyy-mm-dd',
                            autoclose: true,
                            todayHighlight: true,
                        });
                    });

                    function previewImage(event) {
                        var reader = new FileReader();
                        reader.onload = function() {
                            var output = document.getElementById('preview');
                            output.src = reader.result;
                            output.style.display = 'block';
                        }
                        reader.readAsDataURL(event.target.files[0]);
                    }
                    </script>

                </div>
            </div>
        </center>
    </div>
    <script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>

    i. Admin/edit.php



<?php

require '../functions.php';
include 'adminheader.php';

//ambil data di URL
$id = $_GET["id"];

$flight = query("SELECT * FROM tb_penerbangan WHERE id_penerbangan = $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 style="background-color: #ACE2E1;">
    <div class="container py-5">
        <center>
            <div class="card" style="width: 100%; border-color: #589d9c">
                <div class="card-body" style="color: #589d9c;">

                    <h5 class="card-title">Edit Data Tiket</h5>
                    <h6 class="card-subtitle mb-2">Silahkan ubah data tiket.</h6>
                    <br>

                    <form class="row g-3" method="POST" enctype="multipart/form-data">

                        <!-- Input fields filled with existing data -->
                        <input type="hidden" name="id" value="<?= $flight["id_penerbangan"]; ?>">

                        <div class="col-md-9">
                            <label for="nama_maskapai" class="form-label" style="float: left">Nama Maskapai</label>
                            <input type="text" class="form-control" name="nama_maskapai" id="nama_maskapai"
                                style="border-color: #589d9c" value="<?= $flight["nama_maskapai"]; ?>">
                        </div>

                        <div class="col-md-6">
                            <label for="bandara_asal" class="form-label" style="float: left">Bendara Asal</label>
                            <input type="text" class="form-control" name="bandara_asal" id="bandara_asal"
                                style="border-color: #589d9c" value="<?= $flight["bandara_asal"]; ?>">
                        </div>

                        <div class="col-md-6">
                            <label for="bandara_tujuan" class="form-label" style="float: left">Bendara Tujuan</label>
                            <input type="text" class="form-control" name="bandara_tujuan" id="bandara_tujuan"
                                style="border-color: #589d9c" value="<?= $flight["bandara_tujuan"]; ?>">
                        </div>

                        <div class="col-md-6">
                            <label for="jam_berangkat" class="form-label" style="float: left">Jam Berangkat</label>
                            <input type="text" class="form-control" name="jam_berangkat" id="jam_berangkat"
                                style="border-color: #589d9c" value="<?= $flight["jam_berangkat"]; ?>">
                        </div>

                        <div class="col-md-6">
                            <label for="jam_tiba" class="form-label" style="float: left">Jam Tiba</label>
                            <input type="text" class="form-control" name="jam_tiba" id="jam_tiba"
                                style="border-color: #589d9c" value="<?= $flight["jam_tiba"]; ?>">
                        </div>

                        <div class="col-md-4">
                            <label for="tanggal_penerbangan" class="form-label" style="float: left">Tanggal
                                Penerbangan</label>
                            <div class="input-group date">
                                <span class="input-group-text fas fa-calendar-alt"
                                    style="border-color: #589d9c; color: #589d9c"></span>
                                <input type="text" class="form-control datepicker" name="tanggal_penerbangan"
                                    id="tanggal_penerbangan" style="border-color: #589d9c"
                                    value="<?= $flight["tanggal_penerbangan"]; ?>">
                            </div>
                        </div>

                        <div class="col-md-4">
                            <label for="kuota_penerbangan" class="form-label" style="float: left">Kuota
                                Penerbangan</label>
                            <input type="number" class="form-control" name="kuota_penerbangan" id="kuota_penerbangan"
                                style="border-color: #589d9c" value="<?= $flight["kuota_penerbangan"]; ?>">
                        </div>

                        <div class="col-md-4">
                            <label for="harga_tiket" class="form-label" style="float: left">Harga</label>
                            <input type="text" class="form-control" name="harga_tiket" id="harga_tiket"
                                style="border-color: #589d9c" value="<?= $flight["harga_tiket"]; ?>">
                        </div>

                        <div class="col-md-3">
                        </div>
                        <div class="col-md-6">
                            <label for="foto" class="form-label" style="float: left">Foto</label>
                            <input type="file" class="form-control" name="foto" id="foto" style="border-color: #589d9c"
                                onchange="previewImage(event)">
                        </div>
                        <div class="col-md-3">
                        </div>

                        <div class="col-md-3">
                        </div>
                        <div class="col-md-6">
                            <div class="card" style="border-color: #589d9c">
                                <div class="card-body">
                                    <p class="card-text">Preview</p>
                                </div>
                                <img id="preview" src="../img/<?= $flight["foto"]; ?>" class="card-img-bottom"
                                    alt="">
                            </div>
                        </div>
                        <div class="col-md-3">
                        </div>

                        <br><br><br><br><br><br>

                        <center>
                            <button type="submit" name="submit" class="btn btn-dark"
                                style="background-color: #589d9c; border-color: white; width: 25%">Update</button>
                            <button type="reset" class="btn btn-dark"
                                style="background-color: white; border-color: #589d9c; color: #589d9c; width: 25%">Reset</button>
                        </center>
                    </form>

                    <script type="text/javascript">
                    $(function() {
                        $(".datepicker").datepicker({
                            format: 'yyyy-mm-dd',
                            autoclose: true,
                            todayHighlight: true,
                        });
                    });

                    function previewImage(event) {
                        var reader = new FileReader();
                        reader.onload = function() {
                            var output = document.getElementById('preview');
                            output.src = reader.result;
                            output.style.display = 'block';
                        }
                        reader.readAsDataURL(event.target.files[0]);
                    }
                    </script>

                </div>
            </div>
        </center>
    </div>
    <script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>
</html>

    j. Admin/delete.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>
        ";
}



    k. 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" data-bs-theme="dark" style="background-color: #589d9c;">
        <div class="container-fluid">
            <a class="navbar-brand" href="index.php">
                <span class="badge text-bg-light"><?php echo isset($_COOKIE['username']) ? $_COOKIE['username'] : ''; ?><span>
            </a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarScroll"
                aria-controls="navbarScroll" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarScroll">
                <ul class="navbar-nav me-auto my-2 my-lg-0 navbar-nav-scroll" style="--bs-scroll-height: 100px;">
                    <li class="nav-item">
                        <a class="nav-link active" aria-current="page" href="index.php">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link active" href="pesanan.php">Pesanan</a>
                    </li>
                </ul>
                <form class="d-flex">
                    <a href="../logout.php" class="btn btn-light" style="border-color: white; color: #589d9c"
                        type="button">Logout</a>
                </form>
            </div>
        </div>
    </nav>
</head>

    l. User/index.php




<?php
require '../functions.php';
include 'userheader.php';

$flight = mysqli_query($db, "SELECT * FROM tb_penerbangan");
?>

<body style="background-color: #ACE2E1;">
    <div class="row container py-5 px-5">


        <?php $i = 1; ?>
        <?php foreach ($flight as $row): ?>

            <div class="card" style="width: 18rem; margin-right: 10px;">
                <img src="../img/<?php echo $row['foto']; ?>" class="img-fluid rounded-start"
                    style="max-height: 180px; width: 100%" alt="">
                <div class="card-body" style="float: left">
                    <h6 style="float: left; margin-top: 10px; margin-left: 10px">
                        <?php echo $row['nama_maskapai']; ?>
                        <?php
                        // Periksa apakah kuota penerbangan bernilai 0 atau null
                        if ($row['kuota_penerbangan'] == 0 || is_null($row['kuota_penerbangan'])) {
                            // Jika ya, tampilkan span dengan teks "habis"
                            echo '<span class="badge border border-1 border-dark rounded-pill" style="color:red ; margin-left: 3px">Habis</span>';
                        } else {
                            // Jika tidak, tampilkan nilai kuota penerbangan
                            echo '<span class="badge border border-1 border-dark rounded-pill" style="color:#589d9c ; margin-left: 3px">' . $row['kuota_penerbangan'] . ' Orang</span>';
                        }
                        ?>
                        <span class="badge border border-1 border-dark rounded-pill"
                            style="color:#589d9c ; margin-left: 3px">
                            <?php echo $row['tanggal_penerbangan']; ?>
                        </span>
                    </h6>
                </div>
                <ul class="list-group list-group-flush">
                    <li class="list-group-item">
                    <h5 style="float: left; margin-top: 10px; color:seagreen">
                            Rp.<?php echo $row['harga_tiket']; ?>
                        </h5>
                        <h6 style="float: left; margin-top: 13px">/orang</h6>
                       
                    </li>
                    <li class="list-group-item">
                        <h7 class="card-title text-muted" style="margin-bottom: 0px; margin-top: 0px">
                            Bandara</h7>
                        <h6 class="card-subtitle"><?php echo $row['bandara_asal']; ?></h6>
                        <h5 style="color:#589d9c"><?php echo $row['jam_berangkat']; ?></h5>
                    </li>
                    <li class="list-group-item">
                        <h7 class="card-title text-muted" style="margin-bottom: 0px; margin-top: 0px">
                            Bandara</h7>
                        <h6 class="card-subtitle"><?php echo $row['bandara_tujuan']; ?></h6>
                        <h5 style="color:#589d9c"><?php echo $row['jam_tiba']; ?></h5>
                    </li>
                </ul>
                <div class="card-body">
                    <a href="order.php?id=<?= $row["id_penerbangan"]; ?>" class="btn btn-sm"
                        style="background-color:#589d9c; color:white; width: 100%; margin-right: 5px">Pesan</a>
                </div>
            </div>

            <br>

            <?php $i++; ?>
        <?php endforeach; ?>

    </div>
    <script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>

    m. 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 tb_penerbangan WHERE id_penerbangan = $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 `tb_order` (nama, email, no_telpon, alamat, kode_pos, jumlah_penumpang, status, id_penerbangan, user_id)
                  VALUES ('$nama', '$email', '$no_telpon', '$alamat', '$kode_pos', $jumlah_penumpang, 'Unconfirmed', '$flight_id', '$user_id')";

        // Eksekusi query
        if (mysqli_query($db, $query)) {
            // Ambil kuota penerbangan dari database
            $flight_info = mysqli_query($db, "SELECT kuota_penerbangan FROM tb_penerbangan WHERE id_penerbangan = $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 tb_penerbangan SET kuota_penerbangan = $update_kuota WHERE id_penerbangan = $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 style="background-color: #ACE2E1;">
    <div class="container py-5">
        <center>
            <div class="card" style="width: 100%; border-color: #589d9c">
                <div class="card-body" style="color: #589d9c;">

                    <h5 class="card-title">Order Tiket Penerbangan</h5>
                    <h6 class="card-subtitle mb-2">Silahkan lengkapi data anda.</h6>
                    <br>

                    <form class="row g-3" method="POST" enctype="multipart/form-data">

                        <input type="hidden" name="flight_id" value="<?= $flight_id; ?>">

                        <div class="col-md-6">
                            <label for="nama_maskapai" class="form-label" style="float: left">Nama Maskapai</label>
                            <input type="text" class="form-control" value="<?= $row['nama_maskapai'] ?? 'N/A'; ?>" style="border-color: #589d9c">
                        </div>

                        <div class="col-md-6">
                            <label for="harga_tiket" class="form-label" style="float: left">Harga</label>
                            <input type="text" class="form-control" value="<?= $row['harga_tiket'] ?? 'N/A'; ?>"
                                style="border-color: #589d9c">
                        </div>

                        <div class="col-md-6">
                            <label for="bandara_asal" class="form-label" style="float: left">Bandara Asal</label>
                            <input type="text" class="form-control" value="<?= $row['bandara_asal'] ?? 'N/A'; ?>" style="border-color: #589d9c">
                        </div>

                        <div class="col-md-6">
                            <label for="bandara_tujuan" class="form-label" style="float: left">Bandara Tujuan</label>
                            <input type="text" class="form-control" value="<?= $row['bandara_tujuan'] ?? 'N/A'; ?>"
                                style="border-color: #589d9c">
                        </div>

                        <div class="col-md-6">
                            <label for="nama" class="form-label" style="float: left">Nama</label>
                            <input type="text" class="form-control" name="nama" id="nama" style="border-color: #589d9c">
                        </div>

                        <div class="col-md-6">
                            <label for="email" class="form-label" style="float: left">Email</label>
                            <input type="email" class="form-control" name="email" id="email"
                                style="border-color: #589d9c">
                        </div>

                        <div class="col-md-4">
                            <label for="no_telpon" class="form-label" style="float: left">Nomor Telepon</label>
                            <input type="text" class="form-control" name="no_telpon" id="no_telpon"
                                style="border-color: #589d9c">
                        </div>

                        <div class="col-md-4">
                            <label for="kode_pos" class="form-label" style="float: left">Kode Pos</label>
                            <input type="text" class="form-control" name="kode_pos" id="kode_pos"
                                style="border-color: #589d9c">
                        </div>

                        <div class="col-md-4">
                            <label for="jumlah_penumpang" class="form-label" style="float: left">Jumlah Orang</label>
                            <input type="number" class="form-control" name="jumlah_penumpang" id="jumlah_penumpang"
                                style="border-color: #589d9c">
                        </div>

                        <div class="col">
                            <label for="alamat" class="form-label" style="float: left">Alamat</label>
                            <textarea class="form-control" name="alamat" id="alamat" style="border-color: #589d9c"
                                aria-label="With textarea"></textarea>
                        </div>

                        <br><br><br><br><br><br>

                        <center>
                            <button name="submit" type="submit" class="btn btn-dark"
                                style="background-color: #589d9c; border-color: white; width: 60%">Selesai</button>
                        </center>

                    </form>

                </div>
            </div>
        </center>
    </div>
    <script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>

    n. User/pesanan.php




<?php
require '../functions.php';
include 'userheader.php';
?>

<body style="background-color: #ACE2E1;">
    <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 `tb_order`
                          JOIN tb_penerbangan ON `tb_order`.id_penerbangan = tb_penerbangan.id_penerbangan
                          WHERE `tb_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 border-secondary" style="width: 100%; height: 185px; border-color: #589d9c">
                <div class="row g-0">
                    <div class="col-md-12">
                        <div class="card-body">
                            <h5 style="float: left; margin-top: 10px; margin-left: 10px">
                                <?php echo $row['nama_maskapai']; ?>
                                <span class="badge border border-1 border-dark rounded-pill"
                                    style="color:#589d9c ; margin-left: 3px">
                                    <?= $row["nama"]; ?>
                                </span>
                                <span class="badge border border-1 border-dark rounded-pill"
                                    style="color:#589d9c ; margin-left : 3px">
                                    Kode Booking: <?= $row["id_order"]; ?>
                                </span>
                                <span class="badge border border-1 border-dark rounded-pill"
                                    style="color:#589d9c ; margin-left: 3px">
                                    <?= $row["tanggal_penerbangan"]; ?>
                                </span>
                            </h5>

                            <h5 style="float: right; margin-top: 10px; color:seagreen">
                                Rp.<?= $total_harga; ?>
                            </h5>
                            <h6 style="float: right; margin-top: 13px">Total :&nbsp;</h6>

                            <br><br>

                            <div class="row" style="float: left; margin-top: 10px">
                                <div class="card"
                                    style="width: 15rem; height: 90px;  padding-left: 0px; padding-right: 0px; margin-right: 10px; margin-left: 10px">
                                    <div class="card-body text-left" style="text-align: start">
                                        <h7 class="card-title text-muted" style="margin-bottom: 0px; margin-top: 0px">
                                            Bandara</h7>
                                        <h6 class="card-subtitle"><?= $row["bandara_asal"]; ?></h6>
                                        <h5 style="color:#589d9c"><?= $row["jam_berangkat"]; ?></h5>
                                    </div>
                                </div>
                                <br>
                                ➜
                                <div class="card"
                                    style="width: 15rem; height: 90px; padding-left: 0px; padding-right: 0px; margin-left: 10px">
                                    <div class="card-body text-left" style="text-align: start">
                                        <h7 class="card-title text-muted" style="margin-bottom: 0px; margin-top: 0px">
                                            Bandara</h7>
                                        <h6 class="card-subtitle"><?= $row["bandara_tujuan"]; ?></h6>
                                        <h5 style="color:#589d9c"><?= $row["jam_tiba"]; ?></h5>
                                    </div>
                                </div>
                            </div>

                            <div class="row" style="float: inline-end; margin-top: 70px; margin-right: 0px">
                                <?php
                                    $status = $row['status'];
                                    $text_color = ''; // Variabel untuk menyimpan warna teks

                                    // Set warna teks berdasarkan nilai status
                                    switch ($status) {
                                        case 'Unconfirmed':
                                            $text_color = 'warning'; // Warna kuning untuk "Unconfirmed"
                                            break;
                                        case 'Confirmed':
                                            $text_color = 'success'; // Warna hijau untuk "Confirmed"
                                            break;
                                        case 'Cancelled':
                                            $text_color = 'danger'; // Warna merah untuk "Cancelled"
                                            break;
                                        default:
                                            $text_color = 'black'; // Warna default untuk nilai yang tidak dikenali
                                            break;
                                    }
                                    ?>
                                <p class="card-text text-<?= $text_color; ?>">Status : <?= $status; ?></p>
                            </div>

                        </div>
                    </div>
                </div>
            </div>

            <br>

            <?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>


    o. Petugas/petugasheader.php

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Petugas Maskapai Page</title>
    <link rel="stylesheet" href="../Style/css/bootstrap.min.css">

    <nav class="navbar navbar-expand-lg" data-bs-theme="dark" style="background-color: #589d9c;">
        <div class="container-fluid">
            <a class="navbar-brand" href="index.php">
                <span class="badge text-bg-light"><?php echo isset($_COOKIE['username']) ? $_COOKIE['username'] : ''; ?><span>
            </a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarScroll"
                aria-controls="navbarScroll" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarScroll">
                <ul class="navbar-nav me-auto my-2 my-lg-0 navbar-nav-scroll" style="--bs-scroll-height: 100px;">
                    <li class="nav-item">
                        <a class="nav-link active" aria-current="page" href="index.php">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="konfirmasi.php">Konfirmasi</a>
                    </li>
                </ul>
                <form class="d-flex">
                    <a href="../logout.php" class="btn btn-light" style="border-color: white; color: #589d9c"
                        type="button">Logout</a>
                </form>
            </div>
        </div>
    </nav>
</head>

    p. Petugas/index.php




<?php
require '../functions.php';
include 'petugasheader.php';
?>

<body style="background-color: #ACE2E1;">
    <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 `tb_order`
                      JOIN tb_penerbangan ON `tb_order`.id_penerbangan = tb_penerbangan.id_penerbangan";
            $result = mysqli_query($db, $query);

            // Mengambil total tiket terjual dari tabel order
            $total_tiket_terjual_query = "SELECT SUM(jumlah_penumpang) AS total_penumpang FROM `tb_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 border-secondary" style="width: 100%; height: 80px; border-color: #589d9c">
                <div class="row g-0">
                    <div class="col-md-12">
                        <div class="card-body">
                            <h5 style="float: left; margin-top: 10px; margin-left: 10px">
                                Tiket <?= $row["nama_maskapai"]; ?>
                                <span class="badge border border-1 border-dark rounded-pill"
                                    style="color:#589d9c ; margin-left: 3px">
                                    Terjual : <?= $total_tiket_terjual; ?>
                                </span>
                            </h5>
                        </div>
                    </div>
                </div>
            </div>

            <br>

            <?php endforeach; ?>
        </div>
    </div>
    <script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>

    q. Petugas/konfirmasi.php




<?php
require '../functions.php';
include 'petugasheader.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 `tb_order` SET status='$status' WHERE id_order='$order_id'";
    mysqli_query($db, $update_query);
}

?>


<body style="background-color: #ACE2E1;">
    <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 `tb_order`
                      JOIN tb_penerbangan ON `tb_order`.id_penerbangan = tb_penerbangan.id_penerbangan";
            $result = mysqli_query($db, $query);

            // Loop untuk menampilkan data pesanan dan penerbangan dalam bentuk card
            foreach ($result as $row) :
            ?>

            <div class="card border-secondary" style="width: 100%; height: 185px; border-color: #589d9c">
                <div class="row g-0">
                    <div class="col-md-12">
                        <div class="card-body">
                            <h5 style="float: left; margin-top: 10px; margin-left: 10px">
                                <?php echo $row['nama_maskapai']; ?>
                                <span class="badge border border-1 border-dark rounded-pill"
                                    style="color:#589d9c ; margin-left: 3px">
                                    <?= $row["nama"]; ?>
                                </span>
                                <span class="badge border border-1 border-dark rounded-pill"
                                    style="color:#589d9c ; margin-left : 3px">
                                    Kode Booking: <?= $row["id_order"]; ?>
                                </span>
                                <span class="badge border border-1 border-dark rounded-pill"
                                    style="color:#589d9c ; margin-left: 3px">
                                    <?= $row["tanggal_penerbangan"]; ?>
                                </span>
                            </h5>

                            <div class="row" style="float: inline-end; margin-top: 15px; margin-right: 0px">
                                <?php
                                    $status = $row['status'];
                                    $text_color = ''; // Variabel untuk menyimpan warna teks

                                    // Set warna teks berdasarkan nilai status
                                    switch ($status) {
                                        case 'Unconfirmed':
                                            $text_color = 'warning'; // Warna kuning untuk "Unconfirmed"
                                            break;
                                        case 'Confirmed':
                                            $text_color = 'success'; // Warna hijau untuk "Confirmed"
                                            break;
                                        case 'Cancelled':
                                            $text_color = 'danger'; // Warna merah untuk "Cancelled"
                                            break;
                                        default:
                                            $text_color = 'black'; // Warna default untuk nilai yang tidak dikenali
                                            break;
                                    }
                                    ?>
                                <p class="card-text text-<?= $text_color; ?>">Status : <?= $status; ?></p>
                            </div>

                            <br><br>

                            <div class="row" style="float: left; margin-top: 10px">
                                <div class="card"
                                    style="width: 15rem; height: 90px;  padding-left: 0px; padding-right: 0px; margin-right: 10px; margin-left: 10px">
                                    <div class="card-body text-left" style="text-align: start">
                                        <h7 class="card-title text-muted" style="margin-bottom: 0px; margin-top: 0px">
                                            Bandara</h7>
                                        <h6 class="card-subtitle"><?= $row["bandara_asal"]; ?></h6>
                                        <h5 style="color:#589d9c"><?= $row["jam_berangkat"]; ?></h5>
                                    </div>
                                </div>
                                <br>
                                ➜
                                <div class="card"
                                    style="width: 15rem; height: 90px; padding-left: 0px; padding-right: 0px; margin-left: 10px">
                                    <div class="card-body text-left" style="text-align: start">
                                        <h7 class="card-title text-muted" style="margin-bottom: 0px; margin-top: 0px">
                                            Bandara</h7>
                                        <h6 class="card-subtitle"><?= $row["bandara_tujuan"]; ?></h6>
                                        <h5 style="color:#589d9c"><?= $row["jam_tiba"]; ?></h5>
                                    </div>
                                </div>
                            </div>

                            <div class="row" style="float: inline-end; margin-top: 70px; margin-right: 0px">
                                <a href="?action=confirm&order_id=<?= $row['id_order']; ?>"
                                    class="btn btn-outline-success btn-sm"
                                    style="width: fit-content; margin-right: 5px">Konfirmasi</a>
                                <a href="?action=cancel&order_id=<?= $row['id_order']; ?>"
                                    class="btn btn-outline-danger btn-sm"
                                    style="width: fit-content; margin-right: 5px">Delete</a>
                            </div>

                        </div>
                    </div>
                </div>
            </div>

            <br>

            <?php endforeach; ?>
        </div>
    </div>
    <script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>

</html>



sekian dari saya mengenai pembuatan E-ticketing pesawat, semoga bermanfaat.

Komentar

Postingan populer dari blog ini

PWdPB bab 3

PWDPB Part2