MEMBUAT WEBSITE ETICKETING UNTUK PESAWAT

Halo hari ini saya membuat aplikasi website untuk pembelian tiket pesawat.
Dengan 3 aktor user, admin, maskapai semua.

LANGKAH - LANGKAH :

- PERTAMA 
MEMBUAT DATABASE

- KEDUA
MEMBUAT KONEKSI DAN FUNCTION
CODING
<?php
$db = mysqli_connect("localhost", "root", "", "tiket_penerbangan");

function query($query)
{
    
    global $db;
    $result = mysqli_query($db, $query);
    $rows = [];
   
    while ($row = mysqli_fetch_assoc($result)) {
        $rows[] = $row;
    }
    return $rows;
}

function tambah($data)
{
    
  
    $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; 
    }

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

    $destination = '../img/' . $namaFile;
    if (move_uploaded_file($tmpName, $destination)) {
        return $namaFile; 
    } 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;
    $username = strtolower(stripslashes($data['username']));

 mysqli_real_escape_string
    $password = mysqli_real_escape_string($db, $data["password"]);
    $password2 = mysqli_real_escape_string($db, $data["password2"]);

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

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

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

    
    mysqli_query($db, "INSERT INTO user (username, email, password, role) VALUES ('$username', '$email', '$hashedPassword', 'user')");

    return mysqli_affected_rows($db); 
}

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

- KETIGA
MEMBUAT TAMPILAN REGISTER
CODING
<?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>
</body>

- KEEMPAT
MEMBUAT TAMPILAN LOGIN
CODING
<?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) {
        
        $row = mysqli_fetch_assoc($result);
        if (password_verify($password, $row["password"])) {

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

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

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


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

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

- KELIMA
BUAT INDEX ADMIN
CODING
<?php


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


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

?>

<body>
    <div class="container mt-4">
        <a href="tambah.php" class="btn btn-primary">Add +</a>
        <br>
       
        <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>
               
                <?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>

MEMBUAT KONFIRMASI MASKAPAI
CODING

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

if (isset($_GET['action'])) {
    $action = $_GET['action'];
    $order_id = $_GET['order_id'];

    if ($action == 'confirm') {
        $status = 'Confirmed';
    } elseif ($action == 'cancel') {
        $status = 'Cancelled';
    }


    $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
           
            $query = "SELECT * FROM `order`
                      JOIN flight ON `order`.flight_id = flight.flight_id";
            $result = mysqli_query($db, $query);

           
            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>

- KEENAM
MEMBUAT INDEX USER
CODING
<?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
         
            $flight = mysqli_query($db, "SELECT * FROM flight");

     
            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>

SISANYA DAPAT DILIHAT DI GDRIVE DI BAWAH INI
https://shorturl.at/ijLR4

Comments

Popular posts from this blog

MEMBUAT FORM LOGIN DAN REGISTRASI KELOMPOK 5 PERSONA

TUGAS PART 4 ARITMATIKA DALAM CODING