FileMaster
Search
Toggle Dark Mode
Home
/
.
/
back
Edit File: pengguna.php
<?php include('config.php'); $aktif = "users"; ?> <!doctype html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Daftar Pengguna</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 Pengguna</h3></div> </div> </div> </div> <div class="app-content"> <div class="container-fluid"> <div class="row"> <?php if (isset($_POST['tambah'])) { $email = $_POST['email']; $password = $_POST['password']; // Cek apakah email sudah ada di database $stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?"); $stmt->execute([$email]); $existingUser = $stmt->fetch(PDO::FETCH_ASSOC); if ($existingUser) { // Email sudah digunakan $errorMessage = "Email sudah digunakan, silakan gunakan email lain."; } else { // Hash password $hash = password_hash($password, PASSWORD_DEFAULT); // Simpan ke database $stmt = $pdo->prepare("INSERT INTO users (email, password) VALUES (?, ?)"); $stmt->execute([$email, $hash]); $successMessage = "Pengguna berhasil ditambahkan!"; } } if (isset($_POST['ubah'])) { $email = $_POST['email']; $id = $_POST['id']; $stmt = $pdo->prepare("UPDATE users SET email = ? WHERE id = ?"); $stmt->execute([$email, $id]); echo "<div class='alert alert-success'>Pengguna berhasil diperbaharui.</div>"; } if (isset($_POST['hapus'])) { $id = $_POST['id']; $stmt = $pdo->prepare("DELETE FROM users WHERE id = ?"); $stmt->execute([$id]); echo "<div class='alert alert-success'>Pengguna berhasil dihapus.</div>"; } $pengguna = $pdo->query("SELECT * FROM users ORDER BY id DESC")->fetchAll(PDO::FETCH_ASSOC); ?> <!-- Tampilkan pesan error atau sukses --> <?php if (isset($errorMessage)): ?> <div class="alert alert-danger"><?= htmlspecialchars($errorMessage) ?></div> <?php endif; ?> <?php if (isset($successMessage)): ?> <div class="alert alert-success"><?= htmlspecialchars($successMessage) ?></div> <?php endif; ?> <button class="btn btn-primary mb-3" data-bs-toggle="modal" data-bs-target="#modalTambah">Tambah Pengguna</button> <!-- Modal Tambah Pengguna --> <div class="modal fade" id="modalTambah" tabindex="-1" aria-hidden="true"> <div class="modal-dialog"> <form method="post" class="modal-content"> <div class="modal-header"><h5 class="modal-title">Tambah Pengguna</h5></div> <div class="modal-body"> <div class="mb-3"> <label>Email</label> <input type="email" name="email" class="form-control" required> </div> <div class="mb-3"> <label>Password</label> <input type="password" name="password" class="form-control" required> </div> </div> <div class="modal-footer"> <button class="btn btn-secondary" data-bs-dismiss="modal">Batal</button> <button type="submit" name="tambah" class="btn btn-primary">Tambah</button> </div> </form> </div> </div> <div class="col-12 col-sm-12 col-md-12"> <table id="tabelProduk" class="table table-bordered table-striped"> <thead> <tr> <th>#</th> <th>Email</th> <th>Aksi</th> </tr> </thead> <tbody> <?php foreach ($pengguna as $no => $row): ?> <tr> <td><?= $no+1 ?></td> <td><?= htmlspecialchars($row['email']) ?></td> <td> <!-- Tombol Ubah --> <button class="btn btn-sm btn-warning" data-bs-toggle="modal" data-bs-target="#modalUbah<?= $row['id'] ?>"><i class='bi bi-pencil-fill'></i></button> <!-- Tombol Hapus --> <form method="post" class="d-inline" onsubmit="return confirm('Hapus pengguna ini?')"> <input type="hidden" name="id" value="<?= $row['id'] ?>"> <button type="submit" name="hapus" class="btn btn-sm btn-danger"><i class='bi bi-trash'></i></button> </form> </td> </tr> <!-- Modal Ubah --> <?php endforeach ?> </tbody> </table> <?php foreach ($pengguna as $no => $row): ?> <div class="modal fade" id="modalUbah<?= $row['id'] ?>" tabindex="-1"> <div class="modal-dialog"> <form method="post" class="modal-content"> <div class="modal-header"><h5>Ubah Pengguna</h5></div> <div class="modal-body"> <input type="hidden" name="id" value="<?= $row['id'] ?>"> <div class="mb-3"> <label>Email</label> <input type="email" name="email" class="form-control" value="<?= htmlspecialchars($row['email']) ?>" required> </div> </div> <div class="modal-footer"> <button class="btn btn-secondary" data-bs-dismiss="modal">Batal</button> <button type="submit" name="ubah" class="btn btn-warning">Simpan</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