FileMaster
Search
Toggle Dark Mode
Home
/
.
/
back
Edit File: tag.php
<?php include('config.php'); $aktif = "productlist"; if (!isset($_GET['id'])) { echo "ID sesi produk tidak ditemukan."; exit; } $masterTags = $pdo->query("SELECT * FROM mastertag ORDER BY nama_tag ASC")->fetchAll(); $sesi_produk = $_GET['id']; // Ambil tag berdasarkan sesi_produk $stmt = $pdo->prepare(" SELECT t.id_tag, mt.nama_tag, t.hash_tag FROM tag t JOIN mastertag mt ON t.sesi_tag = mt.sesi_tag WHERE t.sesi_produk = ? "); $stmt->execute([$sesi_produk]); $tags = $stmt->fetchAll(PDO::FETCH_ASSOC); ?> <!doctype html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Daftar Tag</title> <meta name="viewport" content="width=device-width, initial-scale=1.0" /><!-- Summernote CSS --> <link href="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.18/summernote.min.css" rel="stylesheet"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource/source-sans-3@5.0.12/index.css" integrity="sha256-tXJfXfp6Ewt1ilPzLDtQnJV4hclT9XuaZUKyUvmyr+Q=" crossorigin="anonymous" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.10.1/styles/overlayscrollbars.min.css" integrity="sha256-tZHrRjVqNSRyWg2wbppGnT833E/Ys0DHWGwT04GiqQg=" crossorigin="anonymous" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" integrity="sha256-9kPW/n5nn53j4WMRYAxe9c1rCY96Oogo/MKSVdKzPmI=" crossorigin="anonymous" /> <link rel="stylesheet" href="https://cdn.datatables.net/1.13.6/css/dataTables.bootstrap5.min.css"> <link rel="stylesheet" href="dist/css/adminlte.css" /> </head> <body class="layout-fixed sidebar-expand-lg bg-body-tertiary"> <?php include('header.php'); ?> <main class="app-main"> <div class="app-content-header"> <div class="container-fluid"> <div class="row"> <div class="col-sm-6"><h3 class="mb-0">Daftar Tag</h3></div> <div class="col-sm-6"> <ol class="breadcrumb float-sm-end"> <li class="breadcrumb-item"><a href="daftar-produk">Daftar Produk</a></li> <li class="breadcrumb-item active" aria-current="page">Daftar Tag</li> </ol> </div> </div> </div> </div> <div class="app-content"> <div class="container-fluid"> <div class="row"> <div class="col-12 col-sm-12 col-md-12"> <?php $sesi_produk = $_GET['id'] ?? null; if (!$sesi_produk) { die("Produk tidak ditemukan."); } // Hapus tag if (isset($_POST['hapus_tag_id'])) { $stmt = $pdo->prepare("DELETE FROM tag WHERE id_tag = ?"); $stmt->execute([$_POST['hapus_tag_id']]); echo "<div class='alert alert-success'>Berhasil dihapus.</div>"; } // Tambah tag if (isset($_POST['tambah_tag'])) { $sesi_tag = $_POST['sesi_tag']; $hash_tag = $_POST['hash_tag'] ?: uniqid('tag_'); $stmt = $pdo->prepare("INSERT INTO tag (hash_tag, sesi_tag, sesi_produk) VALUES (?, ?, ?)"); $stmt->execute([$hash_tag, $sesi_tag, $sesi_produk]); echo "<div class='alert alert-success'>Berhasil ditambahkan.</div>"; } // Edit tag if (isset($_POST['edit_tag'])) { $id_tag = $_POST['id_tag']; $sesi_tag = $_POST['sesi_tag']; $stmt = $pdo->prepare("UPDATE tag SET sesi_tag = ? WHERE id_tag = ?"); $stmt->execute([$sesi_tag, $id_tag]); echo "<div class='alert alert-success'>Berhasil diubah.</div>"; } // Ambil daftar tag $stmt = $pdo->prepare(" SELECT t.id_tag, t.hash_tag, t.sesi_tag, mt.nama_tag FROM tag t JOIN mastertag mt ON t.sesi_tag = mt.sesi_tag WHERE t.sesi_produk = ? "); $stmt->execute([$sesi_produk]); $tags = $stmt->fetchAll(PDO::FETCH_ASSOC); // Ambil daftar master_tag $master_tags = $pdo->query("SELECT * FROM mastertag")->fetchAll(PDO::FETCH_ASSOC); ?> <button class="btn btn-primary btn-sm" data-bs-toggle="modal" data-bs-target="#modalTambah">Tambah Tag</button> <!-- Modal Tambah --> <div class="modal fade" id="modalTambah" tabindex="-1"> <div class="modal-dialog"> <form method="post" class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Tambah Tag</h5> </div> <div class="modal-body"> <div class="mb-2"> <label>Master Tag</label> <select name="sesi_tag" class="form-select" required> <option value="">-- Pilih --</option> <?php foreach ($master_tags as $mt): ?> <option value="<?= htmlspecialchars($mt['sesi_tag']) ?>"> <?= htmlspecialchars($mt['nama_tag']) ?> </option> <?php endforeach; ?> </select> </div> <div class="mb-2"> <label>Hash Tag (Opsional)</label> <input type="text" name="hash_tag" class="form-control"> </div> </div> <div class="modal-footer"> <button type="submit" name="tambah_tag" class="btn btn-success">Simpan</button> </div> </form> </div> </div> <table id="tabelProduk" class="table table-bordered table-striped"> <thead> <tr> <th>No</th> <th>Nama Tag</th> <th>Hash Tag</th> <th>Aksi</th> </tr> </thead> <tbody> <?php foreach ($tags as $i => $tag): ?> <tr> <td><?= $i+1 ?></td> <td><?= htmlspecialchars($tag['nama_tag']) ?></td> <td><?= htmlspecialchars($tag['hash_tag']) ?></td> <td> <!-- Tombol Edit --> <button class="btn btn-warning btn-sm" data-bs-toggle="modal" data-bs-target="#editModal<?= $tag['id_tag'] ?>"><i class='bi bi-pencil-fill'></i></button> <!-- Tombol Hapus --> <form method="post" style="display:inline" onsubmit="return confirm('Yakin hapus tag ini?')"> <input type="hidden" name="hapus_tag_id" value="<?= $tag['id_tag'] ?>"> <button type="submit" class="btn btn-danger btn-sm"><i class='bi bi-trash'></i></button> </form> </td> </tr> <!-- Modal Edit --> <?php endforeach; ?> </tbody> </table> <?php foreach ($tags as $i => $tag): ?> <div class="modal fade" id="editModal<?= $tag['id_tag'] ?>" tabindex="-1"> <div class="modal-dialog"> <form method="post" class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Edit Tag</h5> </div> <div class="modal-body"> <input type="hidden" name="id_tag" value="<?= $tag['id_tag'] ?>"> <div class="mb-2"> <label>Nama Tag</label> <select class="form-select" name="sesi_tag" required> <option value="">-- Pilih Tag --</option> <?php foreach ($masterTags as $mtag): ?> <option value="<?= $mtag['sesi_tag'] ?>" <?= $tag['sesi_tag'] == $mtag['sesi_tag'] ? 'selected' : '' ?>> <?= htmlspecialchars($mtag['nama_tag']) ?> </option> <?php endforeach; ?> </select> </div> </div> <div class="modal-footer"> <button type="submit" name="edit_tag" class="btn btn-success">Simpan Perubahan</button> </div> </form> </div> </div> <?php endforeach; ?> </div> </div> </div> </div> </main> <?php include('footer.php'); ?> <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script> <script src="https://cdn.datatables.net/1.13.6/js/dataTables.bootstrap5.min.js"></script> <script> $(document).ready(function () { $('#tabelProduk').DataTable({ responsive: true, autoWidth: false, lengthChange: true, pageLength: 10, language: { url: '//cdn.datatables.net/plug-ins/1.13.6/i18n/id.json' } }); }); </script> <script> $(document).ready(function () { $('.btn-hapus').on('click', function () { const id = $(this).data('id'); const row = $(this).closest('tr'); if (confirm('Yakin ingin menghapus data ini?')) { $.ajax({ url: 'hapus_produk.php', method: 'POST', data: { id: id }, success: function (res) { if (res === 'sukses') { row.fadeOut(300, function () { $(this).remove(); }); } else { alert('Gagal menghapus data!'); } }, error: function () { alert('Terjadi kesalahan saat menghapus.'); } }); } }); }); </script> <!-- Dropzone --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.3/min/dropzone.min.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.3/min/dropzone.min.js"></script> <script> // Kirim sesi_produk secara dinamis saat modal dibuka function bukaModalGambar(sesi_produk) { $('#sesi_produk').val(sesi_produk); Dropzone.forElement("#formDropzone").options.params = { sesi_produk: sesi_produk }; $('#modalUploadGambar').modal('show'); } Dropzone.autoDiscover = false; var myDropzone = new Dropzone("#formDropzone", { url: "upload_gambar.php", paramName: "file", maxFilesize: 3, acceptedFiles: "image/*", addRemoveLinks: true, success: function(file, response) { // Simpan nama file yang berhasil diupload file.uploadedName = response.trim(); // Pastikan response dari server adalah nama file }, removedfile: function(file) { var fileName = file.uploadedName || file.name; // fallback jika tidak ada uploadedName if (!fileName) return; // Hapus file dari server lewat AJAX $.ajax({ url: 'hapus_gambar.php', type: 'POST', data: { gambar: fileName }, success: function(file, response) { file.uploadedName = response.trim(); // Ini akan jadi "foto123.jpg" }, success: function(response) { console.log("Gambar dihapus:", response); }, error: function() { console.log("Gagal menghapus di server"); } }); // Hapus preview thumbnail dari Dropzone var previewElement = file.previewElement; if (previewElement != null) { previewElement.parentNode.removeChild(previewElement); } } }); </script> </html>
Save
Back