Cara Membuat project E-Ticketing Maskapai

Website Tiket Pesawat

Website ini dirancang sebagai latihan untuk Uji sertifikasi,Website ini menggunakan 3 tabel. Konsep  Dan Website ini cukup sederhana, hanya ada 3 tokoh (ADMIN, STAFF dan USER). User bisa memesan tiket yang tersedia, Staff bisa mengkonfirmasi orderan dari user sedangkan admin bertugas menyiapkan dan menentukan jadwal penerbangannya

-Website ini Menggunakan Php Native & Boostrap File

   *langkah-langkah ada dibawah ini



-Membuat Database




-Admin/adminheader.php
-Admin/index.php
<?php

// untuk menghubungkan dengan file lain
require '../functions.php';
include 'adminheader.php';

// mengambil data produk sintaks dituliskan dalam huruf besar nama tabel database huruf kecil
$flight = mysqli_query($db, "SELECT * FROM flight");

?>



<body>
    <div class="container mt-4">
        <a href="tambah.php" class="btn btn-primary">Add +</a>
        <br>
        <!-- border : menambahkan garis -->
        <!-- cellpadding : menambah ruang pada cell/kolom -->
        <!-- cellspacing : agar bordernya hanya satu garis tidak double maka dibuat 0 -->
        <table class="table table-striped">
            <thead>
                <tr>
                    <th class="col-1">No.</th>
                    <th class="col-2">Aksi</th>
                    <th class="col-1">Foto</th>
                    <th class="col-2">Nama Maskapai</th>
                    <th class="col-1">Tanggal Penerbangan</th>
                    <th class="col-1">Kuota Penerbangan</th>
                    <th class="col-1">Bandara Asal</th>
                    <th class="col-1">Bandara Tujuan</th>
                    <th class="col-1">Jam Berangkat</th>
                    <th class="col-1">Jam Tiba</th>
                    <th class="col-2">Harga Tiket</th>
                </tr>
            </thead>
            <tbody>
                <!-- Diganti dengan data aktual -->
                <?php $i = 1; ?>
                <?php foreach ($flight as $row) : ?>
                    <tr>
                        <td><?= $i; ?></td>
                        <td>
                            <a href="ubah.php?id=<?= $row["flight_id"]; ?>" class="btn btn-warning btn-sm">Edit</a>
                            <a href="hapus.php?id=<?= $row["flight_id"]; ?>" class="btn btn-danger btn-sm" onclick=" return confirm('yakin nich?');">hapus</a>
                        </td>
                        <td><img src="../img/<?= $row["foto_flight"]; ?>" width="50"></td>
                        <td><?= $row["nama_maskapai"]; ?></td>
                        <td><?= $row["tanggal_penerbangan"]; ?></td>
                        <td><?= $row["kuota_penerbangan"]; ?></td>
                        <td><?= $row["bandara_asal"]; ?></td>
                        <td><?= $row["bandara_tujuan"]; ?></td>
                        <td><?= $row["jam_berangkat"]; ?></td>
                        <td><?= $row["jam_tiba"]; ?></td>
                        <td><?= $row["harga_tiket"]; ?></td>
                    </tr>
                    <?php $i++; ?>
                <?php endforeach; ?>
            </tbody>
        </table>

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

</html>

-admin/hapus.php
<?php
require "../functions.php";
$id = $_GET["id"];

if (hapus($id) > 0) {
    echo "
        <script>
        alert('data berhasil dihapus!');
        document.location.href = 'index.php';
        </script>
        ";
} else {
    echo "
        <script>
        alert('data gagal dihapus!');
        document.location.href = 'index.php';
        </script>
        ";
}


-admin/tambah.php
<?php

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

// untuk cek apakah tombol submit sudah diklik atau belum
// jika $_POST yang namanya-nya submit
if (isset($_POST["submit"])) {

    // cek apakah data berhasil ditambah
    if (tambah($_POST) > 0) {
        echo "
        <script>
        alert('data berhasil ditambahkan!');
        document.location.href = 'index.php';
        </script>
        ";
    } else {
        echo "
        <script>
        alert('data gagal ditambahkan!');
        document.location.href = 'index.php';
        </script>
        ";
    }
}
?>


<body>
    <div class="container mt-4">
        <form action="" method="post" enctype="multipart/form-data">
            <div class="row g-3">
                <div class="col-6">
                    <input type="file" name="foto_flight" id="foto_flight" class="form-control" placeholder="Foto Flight" required>
                </div>
                <div class="col-6">
                    <input type="text" name="nama_maskapai" id="nama_maskapai" class="form-control" placeholder="Nama Maskapai" required>
                </div>
                <div class="col-6">
                    <input type="date" name="tanggal_penerbangan" id="tanggal_penerbangan" class="form-control" required>
                </div>
                <div class="col-6">
                    <input type="number" name="kuota_penerbangan" id="kuota_penerbangan" class="form-control" placeholder="Kuota Penerbangan" min="0" required>
                </div>
                <div class="col-6">
                    <input type="text" name="bandara_asal" id="bandara_asal" class="form-control" placeholder="Bandara Asal" required>
                </div>
                <div class="col-6">
                    <input type="text" name="bandara_tujuan" id="bandara_tujuan" class="form-control" placeholder="Bandara Tujuan" required>
                </div>
                <div class="col-6">
                    <input type="time" name="jam_berangkat" id="jam_berangkat" class="form-control" placeholder="Jam Berangkat" required>
                </div>
                <div class="col-6">
                    <input type="time" name="jam_tiba" id="jam_tiba" class="form-control" placeholder="Jam Tiba" required>
                </div>
                <div class="col-6">
                    <input type="number" name="harga_tiket" id="harga_tiket" class="form-control" placeholder="Harga Tiket" min="0" required>
                </div>
                <div class="col-12">
                    <button type="submit" name="submit" class="btn btn-primary      ">Add new data</button>
                </div>
            </div>
        </form>
    </div>

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


-admin/ubah.php
<?php

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

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

$flight = query("SELECT * FROM flight WHERE flight_id = $id")[0];


// untuk cek apakah tombol submit sudah diklik atau belum
// jika $_POST yang namanya-nya submit
if (isset($_POST["submit"])) {


    // cek apakah data berhasil diubah
    if (ubah($_POST) > 0) {
        echo "
        <script>
        alert('data berhasil diubah!');
        document.location.href = 'index.php';
        </script>
        ";
    } else {
        echo "
        <script>
        alert('data gagal diubah!');
        document.location.href = 'index.php';
        </script>
        ";
    }
}
?>


<body>
    <div class="container mt-4">
        <form action="" method="post">
            <input type="hidden" name="id" value="<?= $flight["flight_id"]; ?>">
            <div class="row g-3">
                <div class="col-6">
                    <input type="text" name="foto_flight" id="foto_flight" class="form-control" value="<?= $flight["foto_flight"]; ?>" required>
                </div>
                <div class="col-6">
                    <input type="text" name="nama_maskapai" id="nama_maskapai" class="form-control" value="<?= $flight["nama_maskapai"]; ?>" required>
                </div>
                <div class="col-6">
                    <input type="date" name="tanggal_penerbangan" id="tanggal_penerbangan" class="form-control" value="<?= $flight["tanggal_penerbangan"]; ?>" required>
                </div>
                <div class="col-6">
                    <input type="number" name="kuota_penerbangan" id="kuota_penerbangan" class="form-control" min="0" value="<?= $flight["kuota_penerbangan"]; ?>" required>
                </div>
                <div class="col-6">
                    <input type="text" name="bandara_asal" id="bandara_asal" class="form-control" value="<?= $flight["bandara_asal"]; ?>" required>
                </div>
                <div class="col-6">
                    <input type="text" name="bandara_tujuan" id="bandara_tujuan" class="form-control" value="<?= $flight["bandara_tujuan"]; ?>" required>
                </div>
                <div class="col-6">
                    <input type="time" name="jam_berangkat" id="jam_berangkat" class="form-control" value="<?= $flight["jam_berangkat"]; ?>" required>
                </div>
                <div class="col-6">
                    <input type="time" name="jam_tiba" id="jam_tiba" class="form-control" value="<?= $flight["jam_tiba"]; ?>" required>
                </div>
                <div class="col-6">
                    <input type="number" name="harga_tiket" id="harga_tiket" class="form-control" min="0" value="<?= $flight["harga_tiket"]; ?>" required>
                </div>
                <div class="col-12">
                    <button type="submit" name="submit" class="btn btn-primary">Ubah Flight</button>
                </div>
            </div>
        </form>
    </div>
    <script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>


-maskapai/maskapaiheadar.php
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Maskapai Page</title>
    <link rel="stylesheet" href="../Style/css/bootstrap.min.css">
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
        <div class="container-fluid">
            <a class="navbar-brand" href="#"> Apatist Air
                <img src="../img/222.png" alt="Logo" width="40">
            </a>
            <button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbarCollapse">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarCollapse">
                <div class="navbar-nav">
                    <a href="dashboard.php" class="nav-item nav-link active">Dashboard</a>
                    <a href="konfirmasi.php" class="nav-item nav-link">Konfirmasi</a>
                </div>
                <div class="navbar-nav ms-auto">
                    <a href="../logout.php" class="nav-item nav-link">Logout</a>
                </div>
            </div>
        </div>
    </nav>
</head>

-maskapai/komfirmasi.php
<?php
require '../functions.php';
include 'maskapaiheader.php';

// Jika tombol konfirmasi atau cancel diklik
if (isset($_GET['action'])) {
    $action = $_GET['action'];
    $order_id = $_GET['order_id']; // Ambil order_id dari parameter URL

    // Update status sesuai dengan aksi yang dipilih
    if ($action == 'confirm') {
        $status = 'Confirmed';
    } elseif ($action == 'cancel') {
        $status = 'Cancelled';
    }

    // Query untuk update status di database
    $update_query = "UPDATE `order` SET status='$status' WHERE order_id='$order_id'";
    mysqli_query($db, $update_query);
}

?>


<body>
    <div class="container mt-4">
        <div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4">
            <?php
            // Mengambil data pesanan dari tabel order dan data penerbangan dari tabel flight
            $query = "SELECT * FROM `order`
                      JOIN flight ON `order`.flight_id = flight.flight_id";
            $result = mysqli_query($db, $query);

            // Loop untuk menampilkan data pesanan dan penerbangan dalam bentuk card
            foreach ($result as $row) :
            ?>
                <div class="card" style="width: 18rem; margin-bottom: 20px;">
                    <img class="card-img-top" src="../img/<?= $row["foto_flight"]; ?>" alt="Card image cap">
                    <div class="card-body">
                        <h5 class="card-title">Ms/Mr <?= $row["nama"]; ?></h5>
                    </div>
                    <ul class="list-group list-group-flush">
                        <li class="list-group-item">Tanggal Keberangkatan: <?= $row["tanggal_penerbangan"]; ?></li>
                        <li class="list-group-item">Bandara Asal: <?= $row["bandara_asal"]; ?></li>
                        <li class="list-group-item">Bandara Tujuan: <?= $row["bandara_tujuan"]; ?></li>
                        <li class="list-group-item">Jam Berangkat: <?= $row["jam_berangkat"]; ?></li>
                        <li class="list-group-item">Jam Tiba: <?= $row["jam_tiba"]; ?></li>
                        <li class="list-group-item text-danger">Status: <?= $row['status']; ?></li>
                    </ul>
                    <div class="card-body">
                        <!-- Tambahkan parameter action dan order_id di URL -->
                        <a href="?action=confirm&order_id=<?= $row['order_id']; ?>" class="btn btn-warning btn-sm">Konfirmasi</a>
                        <a href="?action=cancel&order_id=<?= $row['order_id']; ?>" class="btn btn-warning btn-sm">Cancel</a>
                    </div>
                </div>
            <?php endforeach; ?>
        </div>
    </div>
    <script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>

</html>



-maskapai/dashboard.php
<?php
require '../functions.php';
include 'maskapaiheader.php';
?>

<body>
    <div class="container mt-4">
        <div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4">
            <?php
            // Mengambil data pesanan dari tabel order dan data penerbangan dari tabel flight
            $query = "SELECT * FROM `order`
                      JOIN flight ON `order`.flight_id = flight.flight_id";
            $result = mysqli_query($db, $query);

            // Mengambil total tiket terjual dari tabel order
            $total_tiket_terjual_query = "SELECT SUM(jumlah_penumpang) AS total_penumpang FROM `order`";
            $total_tiket_terjual_result = mysqli_query($db, $total_tiket_terjual_query);
            $total_tiket_terjual_row = mysqli_fetch_assoc($total_tiket_terjual_result);
            $total_tiket_terjual = $total_tiket_terjual_row['total_penumpang'];

            // Loop untuk menampilkan data pesanan dan penerbangan dalam bentuk card
            foreach ($result as $row) :
            ?>
                <div class="card" style="width: 18rem; margin-bottom: 20px;">
                    <img class="card-img-top" src="../img/<?= $row["foto_flight"]; ?>" alt="Card image cap">
                    <div class="card-body">
                        <h5 class="card-title">Tiket <?= $row["nama_maskapai"]; ?> Terjual : <?= $total_tiket_terjual; ?></h5>
                    </div>
                </div>
            <?php endforeach; ?>
        </div>
    </div>
    <script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>


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


<body>
    <div class="container mt-4">
        <div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4">

            <?php
            // Mengambil data produk dari tabel flight
            $flight = mysqli_query($db, "SELECT * FROM flight");

            // foreach loop untuk menampilkan data dalam bentuk card
            foreach ($flight as $row) :
            ?>
                <div class="card" style="width: 18rem; margin-bottom: 20px;">
                    <img class="card-img-top" src="../img/<?= $row["foto_flight"]; ?>" alt="Card image cap">
                    <div class="card-body">
                        <h5 class="card-title"><?= $row["nama_maskapai"]; ?></h5>
                        <p class="card-text">Tanggal Penerbangan: <?= $row["tanggal_penerbangan"]; ?></p>
                    </div>
                    <ul class="list-group list-group-flush">
                        <li class="list-group-item">Kuota Penerbangan: <?= $row["kuota_penerbangan"]; ?></li>
                        <li class="list-group-item">Bandara Asal: <?= $row["bandara_asal"]; ?></li>
                        <li class="list-group-item">Bandara Tujuan: <?= $row["bandara_tujuan"]; ?></li>
                    </ul>
                    <div class="card-body">
                        <p>Jam Berangkat: <?= $row["jam_berangkat"]; ?></p>
                        <p>Jam Tiba: <?= $row["jam_tiba"]; ?></p>
                        <p>Harga Tiket: <?= $row["harga_tiket"]; ?></p>
                    </div>
                    <a href="Order.php?id=<?= $row['flight_id']; ?>" class="btn btn-danger">Pesan</a>
                </div>
            <?php endforeach; ?>

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



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

<?php
// Inisialisasi variabel
$row = [];

// Periksa apakah parameter URL flight_id ada
$flight_id = $_GET['id'] ?? null;

if ($flight_id) {
    // Mendapatkan informasi penerbangan berdasarkan flight_id
    $flight_info = mysqli_query($db, "SELECT * FROM flight WHERE flight_id = $flight_id");

    // Memastikan data penerbangan ditemukan
    $row = mysqli_fetch_assoc($flight_info);

    // Redirect atau tampilkan pesan kesalahan jika tidak ditemukan
    if (!$row) {
        // Handle error, misalnya redirect ke halaman error atau tampilkan pesan
        echo "Oops! Terjadi kesalahan.";
        exit;
    }
} else {
    echo "Oops! Masih error.";
    exit;
}

if (isset($_POST["submit"])) {
    // Mendapatkan user_id dari cookie
    $user_id = getUserIdFromCookie();

    if ($user_id) {
        // Mendapatkan data dari formulir
        $nama = mysqli_real_escape_string($db, $_POST['nama']);
        $email = mysqli_real_escape_string($db, $_POST['email']);
        $no_telpon = mysqli_real_escape_string($db, $_POST['no_telpon']);
        $alamat = mysqli_real_escape_string($db, $_POST['alamat']);
        $kode_pos = mysqli_real_escape_string($db, $_POST['kode_pos']);
        $jumlah_penumpang = mysqli_real_escape_string($db, $_POST['jumlah_penumpang']);

        // Query untuk menyimpan pesanan ke dalam database
        $query = "INSERT INTO `order` (flight_id, user_id, nama, email, no_tlp, alamat, kode_pos, jumlah_penumpang)
                  VALUES ('$flight_id', '$user_id', '$nama', '$email', '$no_telpon', '$alamat', '$kode_pos', $jumlah_penumpang)";

        // Eksekusi query
        if (mysqli_query($db, $query)) {
            // Ambil kuota penerbangan dari database
            $flight_info = mysqli_query($db, "SELECT kuota_penerbangan FROM flight WHERE flight_id = $flight_id");
            $row = mysqli_fetch_assoc($flight_info);
            $kuota_penerbangan = $row['kuota_penerbangan'];

            // Kurangi kuota penerbangan dengan jumlah penumpang yang dipesan
            $update_kuota = $kuota_penerbangan - intval($jumlah_penumpang);

            if ($update_kuota > 0) {
                // Eksekusi query untuk memperbarui kuota penerbangan
                $query_kuota = "UPDATE flight SET kuota_penerbangan = $update_kuota WHERE flight_id = $flight_id";
                if (mysqli_query($db, $query_kuota)) {
                    // Kuota penerbangan berhasil diperbarui
                    echo "
                    <script>
                        alert('Pesanan berhasil dibuat!');
                        document.location.href = 'pesanan.php';
                    </script>
                    ";
                } else {
                    // Handle kesalahan jika gagal memperbarui kuota penerbangan
                    echo "Gagal memperbarui kuota penerbangan: " . mysqli_error($db);
                }
            } else {
                // Kuota penerbangan habis
                echo "
                <script>
                    alert('Maaf, kuota penerbangan untuk penerbangan ini telah habis. Pesanan dibatalkan.');
                    document.location.href = 'index.php';
                </script>
                ";
            }
        } else {
            // Handle kesalahan jika query pesanan tidak berhasil dieksekusi
            echo "Gagal membuat pesanan: " . mysqli_error($db);
        }
    } else {
        // Handle kesalahan jika user_id tidak tersedia dalam cookie
        echo "User ID tidak ditemukan dalam cookie.";
    }
}

?>


<body>
    <br>
    <div class="container mt-4">
        <!-- Formulir untuk input ke database -->
        <form method="post" action="">
            <input type="hidden" name="flight_id" value="<?= $flight_id; ?>">
            <!-- Menampilkan informasi penerbangan yang diambil otomatis -->
            <div class="row g-3">
                <div class="col-6">
                    <label for="nama_maskapai" class="form-label">Nama Maskapai</label>
                    <input type="text" class="form-control" value="<?= $row['nama_maskapai'] ?? 'N/A'; ?>">
                </div>
                <div class="col-6">
                    <label for="bandara_asal" class="form-label">Bandara Asal</label>
                    <input type="text" class="form-control" value="<?= $row['bandara_asal'] ?? 'N/A'; ?>">
                </div>
                <div class="col-6">
                    <label for="bandara_tujuan" class="form-label">Bandara Tujuan</label>
                    <input type="text" class="form-control" value="<?= $row['bandara_tujuan'] ?? 'N/A'; ?>">
                </div>
                <div class="col-6">
                    <label for="harga" class="form-label">Harga</label>
                    <input type="text" class="form-control" value="<?= $row['harga_tiket'] ?? 'N/A'; ?>">
                </div>
                <div class="col-6">
                    <label for="nama" class="form-label">Nama</label>
                    <input type="text" class="form-control" name="nama" required>
                </div>
                <div class="col-6">
                    <label for="email" class="form-label">Email</label>
                    <input type="email" class="form-control" name="email" required>
                </div>
                <div class="col-6">
                    <label for="no_telpon" class="form-label">No Telepon</label>
                    <input type="text" class="form-control" name="no_telpon" required>
                </div>
                <div class="col-6">
                    <label for="alamat" class="form-label">Alamat</label>
                    <input type="text" class="form-control" name="alamat" required>
                </div>
                <div class="col-6">
                    <label for="kode_pos" class="form-label">Kode Pos</label>
                    <input type="text" class="form-control" name="kode_pos" required>
                </div>
                <div class="col-6">
                    <label for="jumlah_penumpang" class="form-label">Jumlah Penumpang</label>
                    <input type="number" name="jumlah_penumpang" id="jumlah_penumpang" class="form-control" min="0" required>
                </div>
            </div>
            <br>
            <button type="submit" name="submit" class="btn btn-danger">Buat order</button>
        </form>
    </div>
    <script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>


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

<body>
    <div class="container mt-4">
        <div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4">
            <?php
            // Ambil user_id dari cookie
            $user_id = isset($_COOKIE['user_id']) ? $_COOKIE['user_id'] : null;

            // Periksa apakah user_id tersedia sebelum melanjutkan
            if ($user_id) {
                // Query untuk mengambil data pesanan berdasarkan user_id
                $query = "SELECT * FROM `order`
                          JOIN flight ON `order`.flight_id = flight.flight_id
                          WHERE `order`.user_id = $user_id";
                $result = mysqli_query($db, $query);

                // Loop untuk menampilkan data pesanan dan penerbangan dalam bentuk card
                foreach ($result as $row) :
                    $total_harga = $row["jumlah_penumpang"] * $row['harga_tiket'];

            ?>
                    <div class="card" style="width: 18rem; margin-bottom: 20px;">
                        <img class="card-img-top" src="../img/<?= $row["foto_flight"]; ?>" alt="Card image cap">
                        <div class="card-body">
                            <h5 class="card-title">Ms/Mr <?= $row["nama"]; ?></h5>
                        </div>
                            <ul class="list-group list-group-flush">
                                <li class="list-group-item">Kode Booking: <?= $row["order_id"]; ?></li>
                                <li class="list-group-item">Tanggal Keberangkatan: <?= $row["tanggal_penerbangan"]; ?></li>
                                <li class="list-group-item">Bandara Asal: <?= $row["bandara_asal"]; ?></li>
                                <li class="list-group-item">Bandara Tujuan: <?= $row["bandara_tujuan"]; ?></li>
                                <li class="list-group-item">Jam Berangkat: <?= $row["jam_berangkat"]; ?></li>
                                <li class="list-group-item">Jam Tiba: <?= $row["jam_tiba"]; ?></li>
                                <li class="list-group-item">Total Harga: <?= $total_harga; ?></li>
                            </ul>
                            <div class="card-body">
                                <p class="card-text text-danger">Status: <?= $row['status']; ?></p>
                            </div>
                        </div>
                <?php endforeach;
            } else {
                // Jika user_id tidak tersedia dalam cookie
                echo "User ID tidak ditemukan dalam cookie.";
            }
                ?>
                    </div>
        </div>
        <script src="../Style/js/bootstrap.bundle.min.js"></script>
</body>

</html>

-user/userheader.php
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>User Page</title>
    <link rel="stylesheet" href="../Style/css/bootstrap.min.css">
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
        <div class="container-fluid">
            <a class="navbar-brand" href="#"> Apatist Air
                <img src="../img/222.png" alt="Logo" width="40">
            </a>
            <button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbarCollapse">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarCollapse">
                <div class="navbar-nav">
                    <a href="index.php" class="nav-item nav-link active">Home</a>
                    <a href="pesanan.php" class="nav-item nav-link">Pesanan</a>
                </div>
                <div class="navbar-nav ms-auto">
                    <a href="../logout.php" class="nav-item nav-link">Logout</a>
                </div>
            </div>
        </div>
    </nav>
</head>


-user/functions.php
<?php
// koneksi ke db
$db = mysqli_connect("localhost", "root", "", "flighting");

//untuk menerima query
function query($query)
{
    //untuk menggunakan variabel db yg udah dibuat
    global $db;
    $result = mysqli_query($db, $query);
    $rows = [];
    // mysqli_.._assoc = untuk mengambil satu baris data dalam table
    while ($row = mysqli_fetch_assoc($result)) {
        $rows[] = $row;
    }
    return $rows;
}

function tambah($data)
{
    //buat variabel untuk ambil data dari tiap elemen dalam form
    //htmlspecialchars menghindari user iseng yang ingin menyisipkan coding html dalam input.
    //jika mau simple gausah pakai aja jadi tinggal $data["nama"];
    $nama_maskapai = htmlspecialchars($data["nama_maskapai"]);
    $tanggal_penerbangan = htmlspecialchars($data["tanggal_penerbangan"]);
    $kuota_penerbangan = htmlspecialchars($data["kuota_penerbangan"]);
    $bandara_asal =  htmlspecialchars($data["bandara_asal"]);
    $bandara_tujuan =  htmlspecialchars($data["bandara_tujuan"]);
    $jam_berangkat = htmlspecialchars($data["jam_berangkat"]);
    $jam_tiba =  htmlspecialchars($data["jam_tiba"]);
    $harga_tiket =  htmlspecialchars($data["harga_tiket"]);
    $foto_flight = upload();
    if (!$foto_flight) {
        exit; // Jika upload gagal, hentikan eksekusi script
    }

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

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

    return mysqli_affected_rows($db);
}

function upload()
{
    $namaFile = $_FILES['foto_flight']['name'];
    $ukuranFile = $_FILES['foto_flight']['size'];
    $error = $_FILES['foto_flight']['error'];
    $tmpName = $_FILES['foto_flight']['tmp_name'];

    $ekstensGambarValid = ['jpg', 'jpeg', 'png'];
    $ekstensGambar = explode('.', $namaFile);
    $ekstensGambar = strtolower(end($ekstensGambar));

    if (!in_array($ekstensGambar, $ekstensGambarValid)) {
        echo "<script>
            alert('Yang Anda upload bukan gambar!');
        </script>";
        return false;
    }
    if ($ukuranFile > 1000000) {
        echo "<script>
            alert('Ukuran gambar terlalu besar!');
        </script>";
        return false;
    }

    // Pindahkan file ke direktori yang diinginkan
    $destination = '../img/' . $namaFile;
    if (move_uploaded_file($tmpName, $destination)) {
        return $namaFile; // Kembalikan nama file jika berhasil diupload
    } else {
        echo "<script>
            alert('Gagal mengupload gambar!');
        </script>";
        return false;
    }
}

function hapus($id)
{
    global $db;
    mysqli_query($db, "DELETE FROM flight WHERE flight_id = $id");
    return mysqli_affected_rows($db);
}

function ubah($data)
{


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



    //query insert data
    $query = "UPDATE flight SET
    foto_flight = '$foto_flight',
    nama_maskapai = '$nama_maskapai',
    tanggal_penerbangan = '$tanggal_penerbangan',
    kuota_penerbangan = '$kuota_penerbangan',
    bandara_asal = '$bandara_asal',
    bandara_tujuan = '$bandara_tujuan',
    jam_berangkat = '$jam_berangkat',
    jam_tiba = '$jam_tiba',
    harga_tiket = '$harga_tiket'
    WHERE flight_id = $id
    ";


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

    return mysqli_affected_rows($db);
}


function registrasi($data)
{
    global $db;
    //agar user tidak memasukan karakter slash dan memasukan huruf kecil
    $username = strtolower(stripslashes($data['username']));

    //supaya aman dari sql injection seperti tdk sengaja memasukan kutip mysqli_real_escape_string
    $password = mysqli_real_escape_string($db, $data["password"]);
    $password2 = mysqli_real_escape_string($db, $data["password2"]);

    $email = htmlspecialchars($data['email']);

    // Periksa kesesuaian password
    if ($password !== $password2) {
        echo "<script>
        alert('Konfirmasi password tidak sesuai!');
        </script>";
        return false; // Mengembalikan false jika konfirmasi password tidak sesuai
    }
    // Hash password menggunakan password_hash()
    $hashedPassword = password_hash($password, PASSWORD_DEFAULT);

    // Periksa apakah username sudah ada
    $result = mysqli_query($db, "SELECT username FROM user WHERE username = '$username'");
    if (mysqli_fetch_assoc($result)) {
        echo "<script>
        alert('Username sudah terdaftar!');
        </script>";
        return false; // Mengembalikan false jika username sudah terdaftar
    }

    // Simpan data registrasi ke dalam database
    mysqli_query($db, "INSERT INTO user (username, email, password, role) VALUES ('$username', '$email', '$hashedPassword', 'user')");

    return mysqli_affected_rows($db); // Mengembalikan jumlah baris yang terpengaruh oleh operasi INSERT
}





function getUserIdFromCookie()
{
    if (isset($_COOKIE['user_id'])) {
        return $_COOKIE['user_id'];
    } else {
        return null;
    }
}

// gunakan var_dump untuk memeriksa hasil queri apakah udah sesuai belum
// $mydata = mysqli_fetch_row($result);
// var_dump($mydata);

// untuk cek apakah ada error
// if (!$result){
//     echo mysqli_error($db);
// }


-user/login.php
<?php

require 'functions.php';
include 'mainheader.php';

// cek cookie
if (isset($_COOKIE['id']) && isset($_COOKIE['key'])) {
    $id = $_COOKIE['id'];
    $key = $_COOKIE['key'];
    // ambil username berdasarkan id
    $result = mysqli_query($db, "SELECT username FROM user WHERE user_id = $id");
    $row = mysqli_fetch_assoc($result);
}

if (isset($_POST["login"])) {
    $username = $_POST["username"];
    $password = $_POST["password"];

    $result = mysqli_query($db, "SELECT * FROM user WHERE username = '$username'");

    if (mysqli_num_rows($result) === 1) {
        // Cek password
        $row = mysqli_fetch_assoc($result);
        if (password_verify($password, $row["password"])) {

            // Set user_id cookie
            setcookie('user_id', $row['user_id'], time() + 3600, '/');

            //cek pakai remeber
            if (isset($_POST['remember'])) {
                //buat coookie
                setcookie('id', $row['user_id'], time() + 3600, '/');
                setcookie('key', $row['username'], time() + 3600, '/');
            }

            // Periksa role
            if ($row["role"] == "user") {
                header("Location: /Flighting/user/index.php");
                exit;
            } elseif ($row["role"] == "admin") {
                header("Location: /Flighting/admin/index.php");
                exit;
            } elseif ($row["role"] == "maskapai") {
                header("Location: /Flighting/maskapai/dashboard.php");
                exit;
            } else {
                echo "Role tidak valid";
            }
        } else {
            echo "<script>alert('Password salah!');</script>";
        }
    } else {
        echo "<script>alert('Username tidak ditemukan!');</script>";
    }
}
?>



<body>
    <br>
    <br>
    <form action="" method="post">
        <div class="container-sm">
            <div class="row mb-3">
                <label for="username" class="col-sm-2 col-form-label">Username</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" id="username" name="username" placeholder="username">
                </div>
            </div>
            <div class="row mb-3">
                <label for="password" class="col-sm-2 col-form-label">Password</label>
                <div class="col-sm-10">
                    <input type="password" class="form-control" id="password" name="password" placeholder="password">
                </div>
            </div>
            <div class="row mb-3">
                <div class="col-sm-10 offset-sm-2">
                    <div class="form-check">
                        <input class="form-check-input" type="checkbox" name="remember" id="remember">
                        <label class="form-check-label" for="checkRemember">Remember me</label>
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-sm-10 offset-sm-2">
                    <button type="submit" name="login" class="btn btn-primary">Sign in</button>
                </div>
            </div>
        </div>
    </form>

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


-user/logout.php
<?php
setcookie('id','', time()-3600);
setcookie('key', '', time()-3600);

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


-user/mainheader.php
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Authentication Page</title>
    <link rel="stylesheet" href="./Style/css/bootstrap.min.css">
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
        <div class="container-fluid">
            <a class="navbar-brand" href="#"> Apatist Air
                <img src="./img/s2.png" alt="Logo" width="40">
            </a>
            <button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbarCollapse">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarCollapse">
                <div class="navbar-nav ms-auto">
                    <a href="login.php" class="nav-item nav-link">Login</a>
                    <a href="registrasi.php" class="nav-item nav-link">Register</a>
                </div>
            </div>
        </div>
    </nav>
</head>


-user/registrasi.php
<?php

require 'functions.php';
include 'mainheader.php';

if (isset($_POST["register"])) {

    if (registrasi($_POST) > 0) {
        echo "
        <script>
        alert('registrasi berhasil!');
        document.location.href = 'login.php';
        </script>
        ";
    } else {
        echo mysqli_error($db);
    }
}
?>

<body>
    <br>
    <br>
    <form action="" method="post">
        <div class="container-sm">
            <div class="row mb-3">
                <label for="username" class="col-sm-2 col-form-label">Username</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" id="username" name="username" placeholder="Username">
                </div>
            </div>
            <div class="row mb-3">
                <label for="email" class="col-sm-2 col-form-label">Email</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" id="email" name="email" placeholder="Email">
                </div>
            </div>
            <div class="row mb-3">
                <label for="password" class="col-sm-2 col-form-label">Password</label>
                <div class="col-sm-10">
                    <input type="password" class="form-control" id="password" name="password" placeholder="Password">
                </div>
            </div>
            <div class="row mb-3">
                <label for="password2" class="col-sm-2 col-form-label">Konfirmasi Password</label>
                <div class="col-sm-10">
                    <input type="password" class="form-control" id="password2" name="password2" placeholder="Konfirmasi Password">
                </div>
            </div>
            <div class="row">
                <div class="col-sm-10 offset-sm-2">
                    <button type="submit" name="register" class="btn btn-primary">Registrasi</button>
                </div>
            </div>
        </div>
    </form>



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

</html>





-DOKUMENTASI









                                         

 







Komentar