Membuat Relasi Many to Many

Create

<?php include __DIR__. './../../includes/config.php'; ?>
<?php include __DIR__. './../../includes/header.php'; ?>

    <?php
        $query = "SELECT * FROM kategoribuku";
        $stmt = $pdo->query($query);
        $kategoriBuku = $stmt->fetchAll(PDO::FETCH_ASSOC);
    ?>

    <div class="card border-radius p-4">
        <!-- baris judul dan kembali -->
        <div class="row align-item-center">
            <div class="col">
                <h2>Tambah Data Buku</h2>
            </div>
            <div class="col text-end">
                <a href="/views/data-kategori-buku" class="btn btn-outline-secondary"><i class="fa-solid fa-arrow-right-to-bracket"></i></a>
            </div> 
        </div>

        <!-- form -->
         <div class="row mt-4">
            <div class="col">
                <form action="" method="post">
                    <div class="mb-3">
                        <label for="inputNamaBuku" class="form-label">Nama Buku</label>
                        <input type="text" name="book_name" class="form-control" id="inputNamaBuku" placeholder="Masukkan Buku" required>
                    </div>
                    <div class="mb-3">
                        <label for="inputNamaBuku" class="form-label">Kategori Buku</label>
                        <select name="kategoriBuku" id="" class="form-control">
                            <option disabled selected>-- Pilih Data Kategori Buku --</option>
                            <?php foreach ($kategoriBuku as $kategori) : ?>
                                <option value="<?= $kategori['KategoriID'] ?>"><?= $kategori['NamaKategori'] ?></option>
                            <? endforeach; ?>
                        </select>
                    </div>
                    <div>
                        <button type="submit" class="btn btn-primary btn-sm"><i class="fa-solid fa-floppy-disk"></i></button>
                        <button type="reset" class="btn btn-secondary btn-sm"><i class="fa-solid fa-eraser"></i></button>
                    </div>
                </form>
            </div>
         </div>
    </div>

    <?php

        if ($_SERVER["REQUEST_METHOD"] == "POST") {

            $pdo->beginTransaction();

            date_default_timezone_set('Asia/Jakarta');

            $name = $_POST['book_name'];
            $kategori_buku = $_POST['kategoriBuku'];

            $sql = "INSERT INTO buku (name) VALUES (:name)";
            $stmt = $pdo->prepare($sql);
            
            $stmt->bindParam(':name', $name);
            $stmt->execute();

            $book_id = $pdo->lastInsertId();

            $stmt_pivot = $pdo->prepare("
                INSERT INTO buku_kategori_buku (buku_id, kategori_buku_id) VALUES (:buku_id, :kategori_buku_id)
            ");
            $stmt_pivot->bindParam(':buku_id', $book_id);
            $stmt_pivot->bindParam(':kategori_buku_id', $kategori_buku);
            $stmt_pivot->execute();
            
            if ($pdo->commit()) {
                echo "<script>alert('Data berhasil ditambah!'); window.location.replace('/views/data-buku/index.php');</script>";
            } else {
                echo "Failed to create user.";
            }
        }
    ?>

<?php include __DIR__. './../../includes/footer.php'; ?>

List

<?php include __DIR__. './../../includes/config.php'; ?>
<?php include __DIR__. './../../includes/header.php'; ?>


    <?php
        $query = "
            SELECT buku.*, kategoribuku.NamaKategori as kategori_name FROM buku
            JOIN buku_kategori_buku ON buku.buku_id = buku_kategori_buku.buku_id
            JOIN kategoribuku ON buku_kategori_buku.kategori_buku_id = kategoribuku.KategoriID
        ";
        $stmt = $pdo->query($query);
        $datas = $stmt->fetchAll(PDO::FETCH_ASSOC);
    ?>

    <div class="card border-radius p-4">
        <!-- baris judul dan tambah data pengguna -->
        <div class="row align-item-center">
            <div class="col">
                <h2>List Data Kategori</h2>
            </div>
            <div class="col text-end">
                <a href="/views/data-buku/create.php" class="btn btn-outline-primary" > <i class="fa-solid fa-user-plus"></i> Tambah Data Buku</a>
            </div> 
        </div>

        <!-- table -->
         <div class="row mt-4">
            <div class="col">
                <table class="table table-border table-striped">
                    <thead>
                        <tr>
                            <th>No</th>
                            <th>Nama</th>
                            <th>Kategori</th>
                            <th class="text-center">Aksi</th>
                        </tr>
                    </thead>
                    <tbody>
                        <!-- start looping foreach -->
                        <?php foreach ($datas as $key => $data) : ?>
                        <tr>
                            <td>
                                <?= $key + 1 ?>
                            </td>
                            <td>
                                <?= $data['name'] ?>
                            </td>
                            <td>
                                <?= $data['kategori_name'] ?>
                            </td>
                            <td class="text-center">
                                <a href="/views/data-kategori-buku/detail.php?buku_id=<?= $data['buku_id'] ?>" class="btn btn-sm btn-info"><i class="fa-solid fa-eye"></i></a>
                                <a href="/views/data-kategori-buku/edit.php?buku_id=<?= $data['buku_id'] ?>" class="btn btn-sm btn-warning"><i class="fa-solid fa-pen-to-square"></i></a>
                                <a href="/views/data-kategori-buku/delete.php?buku_id=<?= $data['buku_id'] ?>" class="btn btn-sm btn-danger"><i class="fa-solid fa-trash-can"></i></a>
                            </td>
                        </tr>
                        <?php endforeach; ?>
                        <!-- end looping foreach -->
                    </tbody>
                </table>
            </div>
         </div>
    </div>

<?php include __DIR__. './../../includes/footer.php'; ?>

Last updated