tambahproduk.php PHP
<?php

session_start();

if (empty($_SESSION['loginku'])) {
    header("Location: login");
}

require 'koneksi.php';
require 'function.php';

$query = mysqli_query($kon, "SELECT id, nama_bahan FROM bahan_baku");
$bahan_baku = [];
while ($row = mysqli_fetch_assoc($query)) {
    $bahan_baku[] = $row;
}

#jika button di submit 

if (isset($_POST['submit'])) {
    // Fungsi filter untuk membersihkan input
    $nama = filter_var($_POST['nama'], FILTER_SANITIZE_STRING);
    $kategori = filter_var($_POST['kategori'], FILTER_SANITIZE_STRING);
    $keterangan = filter_var($_POST['keterangan'], FILTER_SANITIZE_STRING);
    $varian = null; // Tidak pakai varian di ver 2
    $provit = filter_var($_POST['provit'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
    $harga = filter_var($_POST['harga'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
    $recomended = filter_var($_POST['recomended'], FILTER_SANITIZE_STRING);
    $url = filter_var($_POST['urlgambar'], FILTER_SANITIZE_URL);

    if ($url) {
        // Acak 8 karakter huruf/angka
        $randomString = "";
        for ($i = 0; $i < 8; $i++) {
            $randomChar = chr(rand(49, 122));
            if (is_numeric($randomChar) || preg_match("/[a-z]/", $randomChar)) {
                $randomString .= $randomChar;
            } else {
                $i--;
            }
        }

        // Tentukan folder tujuan
        $targetDir = "produk/";
        
        // Buat folder produk jika belum ada
        if (!file_exists($targetDir)) {
            mkdir($targetDir, 0777, true);
        }

        // Ambil nama file dari URL
        $fileName = basename(parse_url($url, PHP_URL_PATH));
        $newFileName = $randomString . '_' . $fileName;
        $targetFile = $targetDir . $newFileName;

        // Download dan simpan gambar
        $imageContent = file_get_contents($url);
        file_put_contents($targetFile, $imageContent);

        // Insert ke tabel produk
        $stmt_produk = $kon->prepare("INSERT INTO produk (kode_produk, resto, nama, stok, harga, keterangan, kategori, recomended, gambar, provit) VALUES (?, ?, ?, 'ada', ?, ?, ?, ?, ?, ?)");
        $stmt_produk->bind_param('sssdssssd', $randomString, $_SESSION['resto'], $nama, $harga, $keterangan, $kategori, $recomended, $newFileName, $provit);

        if ($stmt_produk->execute()) {
            // Insert varian (jika ada)
            if (!empty($varian)) {
                $stmt_varian = $kon->prepare("INSERT INTO varian (nama_produk, resto, varian) VALUES (?, ?, ?)");
                foreach ($varian as $varians) {
                    if (!empty($varians)) {
                        $stmt_varian->bind_param('sss', $nama, $_SESSION['resto'], $varians);
                        $stmt_varian->execute();
                    }
                }
                $stmt_varian->close();
            }

            // Insert bahan_baku ke produk_ingredient (jika ada)
            if (!empty($_POST['ingredient']) && !empty($_POST['jumlah_ingredient'])) {
                $ingredient_array = $_POST['ingredient'];
                $ingredient_name = $_POST['ingredient_name']; // <-- array nama
                $jumlah_array = $_POST['jumlah_ingredient'];

                $stmt_ingredient = $kon->prepare("INSERT INTO produk_ingredient (kode_produk, id_bahan_baku, nama, jumlah) VALUES (?, ?, ?, ?)");

                foreach ($ingredient_array as $index => $id_bahan_baku) {
                    if (isset($jumlah_array[$index]) && isset($ingredient_name[$index])) {
                        $jumlah = $jumlah_array[$index];
                        $nama = $ingredient_name[$index];

                        if (!empty($id_bahan_baku) && is_numeric($jumlah)) {
                            $stmt_ingredient->bind_param('sisd', $randomString, $id_bahan_baku, $nama, $jumlah);
                            $stmt_ingredient->execute();
                        }
                    }
                }

                $stmt_ingredient->close();
            }

            $_SESSION['produkditambah'] = 'berhasil';
        } else {
            echo "Error: " . $stmt_produk->error;
        }

        $stmt_produk->close();
    } else {
        $_SESSION['produkditambah'] = 'gagal';
    }
} else {
    $nama = $urlgambar = $kategori = $recomended = $keterangan = $varian = $harga = null;
}


include 'header.php';
include 'navbar.php';
?>

<body style="background-color: #f7f7f7">
    <div class="container mt-3">

        <div class="alert alert-warning"> <i class="fa fa-info-circle"></i> Untuk mengedit produk cukup arahkan pointer mouser ke gambar produk di halaman kasir <b class="text-danger"><a href="#" data-toggle="modal" data-target="#pelajari">Pelajari</a></b></div>

        <div class="card card-body card-round">
            <form action="" method="POST">

                <label>Product name</label>
                <input type="text" name="nama" class="form-control mb-2" required>

                <label>Category</label>
                <select name="kategori" class="form-control selectize mb-3" required>
                    <option value="makanan">Food</option>
                    <option value="minuman">Drink</option>
                    <option value="produk">Produk</option>
                    <option value="jasa">Jasa</option>
                </select>

                <label>Description</label>
                <input type="text" name="keterangan" class="form-control mb-3">

                <label>Url images <b class="text-danger"><a href="#" data-toggle="modal" data-target="#uploadImageModal">Cara upload gambar dari URL</a></b></label>
                <input type="text" name="urlgambar" id="inputurl" class="form-control-noregex mb-3" autocomplete="off" placeholder="Example : https://i.ibb.co/Wg1F0Bp/tea.jpg" required>

                <!-- menampilkan gambar dari url dengan ajax -->
                <div id="tampilgambar" class="mb-3"></div>

                <!-- <div class="alert alert-danger">
                Anda hanya dapat membuat varian dengan harga yang sama, jika ingin membuat varian dengan harga berbeda silahkan membuat produk baru. Contoh : Teh manis varian panas/es <b class="text-danger"><a href="#" data-toggle="modal" data-target="#pelvarian">Pelajari</a></b>
            </div> -->

                <!-- <label>Varian</label>
            <input type="text" name="varian[]" maxlength="35" class="form-control mb-3">

            <label>Varian</label>
            <input type="text" name="varian[]" maxlength="35" class="form-control mb-3">

            <label>Varian</label>
            <input type="text" name="varian[]" maxlength="35" class="form-control mb-3">

            <label>Varian</label>
            <input type="text" name="varian[]" maxlength="35" class="form-control mb-3"> -->


                <label>Price (Input harga yg sudah include Tax)</label>
                <input type="number" name="harga" maxlength="10" class="form-control mb-3" required>

                <label>Profit (keuntung jika terjual)</label>
                <input type="number" name="provit" maxlength="100" class="form-control mb-3" required>

                <label>Ingredient (Bisa bahan baku / produk jadi siap jual)</label>
                <div id="ingredient-group">
                    <div class="input-group mb-3">
                        <select name="ingredient[]" class="form-control ingredient-select">
                            <option value="" disabled selected>-- Pilih --</option>
                            <?php foreach ($bahan_baku as $bahan): ?>
                                <option value="<?= $bahan['id'] ?>"><?= htmlspecialchars($bahan['nama_bahan']) ?></option>
                            <?php endforeach; ?>
                        </select>
                        <input type="number" name="jumlah_ingredient[]" class="form-control mx-2" placeholder="Jumlah (gram/ml/pcs)">
                        <input type="text" name="ingredient_name[]" class="form-control mx-2 ingredient-name-hidden" hidden>
                        <button type="button" class="btn btn-success btn-add-ingredient">+</button>
                    </div>

                </div>

                <label>Recomended?</label>
                <select name="recomended" class="form-control selectize mb-3" required>
                    <option value=" ">No</option>
                    <option value="recomended">Yes</option>
                </select>

                <button type="sumbit" name="submit" class="btn btn-primary">Add!</button>
            </form>
        </div>
    </div>
</body>



<!-- Modal -->
<div class="modal fade" id="uploadImageModal" tabindex="-1" aria-labelledby="uploadImageModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="uploadImageModalLabel">Cara upload gambar dari URL</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <h5>1.Cara Upload gambar dari google images (paling gampang)</h5>
                <center><iframe width="660" height="315" src="https://www.youtube.com/embed/uHWm87b6AgQ?si=80ZqzmrxQgSfJkmQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></center>
                <br>
                <h5>2.Cara Upload gambar hasil foto sendiri</h5>
                <center><iframe width="660" height="315" src="https://www.youtube.com/embed/XCeOlqOH41A?si=uM38IiWLqHMufPQK" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></center>
            </div>
        </div>
    </div>
</div>

<!-- Modal -->
<div class="modal fade" id="pelajari" tabindex="-1" aria-labelledby="pelajari" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="pelajari">Cara ubah produk</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <center><iframe width="660" height="315" src="https://www.youtube.com/embed/krVeMbM-EuI?si=PXaDst4ospTt7SV7" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></center>
            </div>
        </div>
    </div>
</div>

<!-- Modal -->
<div class="modal fade" id="pelvarian" tabindex="-1" aria-labelledby="pelvarian" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="pelvarian">Pahami tentang varian</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <center><iframe width="660" height="315" src="https://www.youtube.com/embed/nLvnvW7Wo3A?si=HHTmofUR4yLyJ9Pi" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></center>
            </div>
        </div>
    </div>
</div>

<?php include 'footer.php'; ?>

<script>
    //matikan klik kanan
    window.oncontextmenu = function() {
        return false;
    }
</script>

<script>
    document.addEventListener('DOMContentLoaded', function() {
        const group = document.getElementById('ingredient-group');

        group.addEventListener('click', function(e) {
            // Menambahkan ingredient baru
            if (e.target.classList.contains('btn-add-ingredient')) {
                const inputSet = document.createElement('div');
                inputSet.className = 'input-group mb-2';
                inputSet.innerHTML = `
        <select name="ingredient[]" class="form-control ingredient-select" required>
          <option value="">-- Pilih --</option>
          <?php foreach ($bahan_baku as $bahan): ?>
            <option value="<?= $bahan['id'] ?>" data-nama="<?= htmlspecialchars($bahan['nama_bahan']) ?>"><?= htmlspecialchars($bahan['nama_bahan']) ?></option>
          <?php endforeach; ?>
        </select>
        <input type="number" name="jumlah_ingredient[]" class="form-control mx-2" placeholder="Jumlah (gram/ml/pcs)" required>
        <input type="text" name="ingredient_name[]" class="form-control mx-2 ingredient-name-hidden" hidden>
        <button type="button" class="btn btn-danger btn-remove-ingredient">-</button>
      `;
                group.appendChild(inputSet);
            }

            // Menghapus ingredient
            if (e.target.classList.contains('btn-remove-ingredient')) {
                e.target.parentElement.remove();
            }
        });

        // Menangani perubahan pilihan pada dropdown untuk setiap ingredient
        document.body.addEventListener('change', function(e) {
            if (e.target.classList.contains('ingredient-select')) {
                const select = e.target;
                const selectedText = select.options[select.selectedIndex].text;
                const inputNama = select.parentElement.querySelector('.ingredient-name-hidden');
                if (inputNama) {
                    inputNama.value = selectedText; // Setel nama bahan pada input tersembunyi
                }
            }
        });
    });
</script>



<?php
if (isset($_SESSION['produkditambah'])) {
    if ($_SESSION['produkditambah'] === 'berhasil') {
        echo '<script>swal("GOOD!", "Add product success!", "success");</script>';
    } elseif ($_SESSION['produkditambah'] === 'gagal') {
        echo '<script>swal("BAD!", "Fail to add product", "error");</script>';
    }

    unset($_SESSION['produkditambah']);
}
?>