Sudah setahun sejak artikel tentang membuat sistem login PHP dengan beberapa level pengguna (admin, editor, penulis, dll) diterbitkan, sepertinya sekarang adalah waktu yang tepat untuk memberikan informasi serupa, yaitu tentang penantian PHP. sistem moderasi. Ini adalah logika yang akan menahan (pending) setiap postingan yang dibuat oleh user selain admin, postingan tersebut tidak akan muncul di website sampai admin menyetujuinya Logika ini bisa diterapkan untuk apa saja seperti kiriman artikel, komentar, dan lain-lain. Kita buat contoh untuk submit artikel, ketika user selain administrator, maka artikel berstatus pending dan belum muncul di blog sampai disetujui oleh administrator. Begitu juga jika menerapkan logika ini di komentar atau lainnya Caranya super gampang gan, misal di tabel database submit artikel yang sudah ada sekarang seperti ini iklan oleh posciety
Tambahkan struktur baru yang akan digunakan untuk sistem pending, biasanya saya menggunakan statuspost. Jadi sekarang tabel database akan berisi sesuatu seperti ini Baca Juga Apa itu memory_limit dan bagaimana cara mengaturnya di cPanel? Cara Mengatur max_input_time di cPanel Cara Mengatur max_execution_time di cPanel Cara Mudah Membuat Tabel di Ms. Unggul
Untuk status postingan atur defaultnya ke angka saja biar gampang, misal angka 0 artinya pending dan angka 1 artinya publish. Jadi nilai default untuk statuspost adalah 0 Cara mengubah nilai default ini tinggal klik Change kemudian pada bagian Default (jika menggunakan bahasa Indonesia) pilih As Defined. dan masukkan angka 0, ini juga bisa dilakukan secara langsung saat membuat struktur baru. Jangan lupa atur sebagai INT karena kita mendeklarasikannya sebagai angka Sampai saat ini sistem pending sudah siap untuk dibangun. Pastikan anda sudah membaca tutorial sebelumnya tentang Menampilkan Data di PHP Menurut Apa yang Dibuat Pengguna Login, sangat membantu untuk menyusun kode yang berfungsi untuk menampilkan data yang berbeda untuk setiap pengguna login sesuai dengan apa yang mereka lakukan. Misal user A login maka dia akan melihat semua artikel yang dia buat di dashboardnya, artikel yang dibuat oleh user B dan user lain tidak akan ditampilkan Sekadar mengingatkan, buat halaman untuk menambahkan postingan/artikel di dashboard pengguna. Misalnya seperti ini Bikin sesuai selera ya gan 😀 Untuk postingan kali ini tentunya kita akan menggunakan sistem insert, disini saya tidak akan membahasnya lagi karena sudah dijelaskan dengan sangat detail pada tutorial sebelumnya tentang cara membuat sistem insert di php. Silahkan baca terlebih dahulu jika ingin mengetahui sistem insert lebih detail Salin kode berikut dan tempel di halaman penambahan posting <?php $sess_prof = $_SESSION; if(isset($_POST['submitpost'])) { $pilih_kategori = $_POST['pilih_kategori']; $judulpost = $_POST['judulpost']; $isipost = $_POST['isipost']; $date = date("Y-m-d H:i:s"); $author = $_POST['id_author']; $statuspost = $_POST['statuspost']; $file_name = $_FILES['gambarpost']['name']; $tmp_name = $_FILES['gambarpost']['tmp_name']; move_uploaded_file($tmp_name, "../images/blog/".$file_name); mysqli_query($koneksi, "INSERT INTO post VALUES('','$pilih_kategori','$judulpost','$isipost','$file_name','$date','$author','$statuspost')"); header("location:index.php?daftar-blog&berhasiltambahblog"); } $kategori = mysqli_query($koneksi, "SELECT * FROM kategoripost ORDER BY nama_kategoripost ASC"); ?> <div class="content"> <div class="container-fluid"> <div class="row"> <div class="col-lg-12 col-md-12"> <div class="card"> <div class="header"> <h4 class="title" id="berhasiltambahakun">Tambah Post</h4> </div> <div class="content"> <form method="post" enctype="multipart/form-data" role="form"> <div class="row"> <div class="col-md-12"> <div class="form-group"> <label for="judulpost">Judul Post</label> <input type="text" name="judulpost" class="form-control border-input" placeholder="Masukkan Judul Post"> </div> </div> </div> <div class="row"> <div class="col-md-12"> <div class="form-group"> <textarea class="form-control border-input" name="isipost" required placeholder="Tulis Artikel Menarik..." rows="7"></textarea> </div> </div> </div> <div class="row"> <div class="col-md-6"> <div class="form-group"> <label for="username_author">Author Username</label> <input type="text" name="username_author" class="form-control border-input" readonly value="<?php echo $sess_prof['akun_username'] ?>"> </div> </div> <div class="col-md-6"> <label for="pilih_kategori">Kategori</label> <select name="pilih_kategori" class="form-control border-input" required> <option value="">Pilih Kategori</option> <?php if(mysqli_num_rows($kategori)) {?> <?php while($row_kategori = mysqli_fetch_array($kategori)) {?> <option value="<?php echo $row_kategori['id'] ?>"><?php echo $row_kategori['nama_kategoripost'] ?></option> <?php } ?> <?php } ?> </select> </div> </div> <div class="row"> <div class="col-md-6"> <div class="form-group"> <label for="gambarpost">Gambar Post</label> <input type="file" name="gambarpost" class="form-control border-input" required> </div> </div> <div class="col-md-6"> <div class="form-group"> <button type="submit" name="submitpost" class="btn btn-info">Kirim Post</button> <button type="reset" class="btn btn-danger">Batal</button> </div> </div> <div> <div class="col-xs-12"> <input type="hidden" name="id_author" value="<?php echo $sess_prof['akun_id'] ?>"> </div> </form> </div> <div class="col-xs-12 text-center"> <a href="index.php?daftar-blog">← Kembali Ke Daftar Artikel Saya</a> </div> </div> </div> </div> </div> </div> Karena di sini saya menggunakan kategori sebagai contoh, membutuhkan kueri kategori juga, hapus saja jika tidak diperlukan. Pastikan Anda telah menyesuaikan dengan benar kode PHP ini dengan HTML yang ada Sampai disini mungkin ada yang bertanya, lalu untuk apa nilai postingan status? Kita cukup menerapkannya di system insert ($_POST) dan di query saja agar tidak ada error saat pengiriman ke database, tidak perlu membuat field form karena tadi kita sudah menentukan nilai default untuk statuspost adalah 0. Artinya setiap postingan yang dikirim akan memiliki status postingan 0 Tidak hanya sampai disini, masih ada beberapa hal yang perlu kami selesaikan Oke, sekarang semua postingan yang terkirim akan memiliki status postingan 0. Lalu apa yang harus dilakukan? Jika sudah membaca tutorial sebelumnya tentang cara menampilkan data dari database di PHP, maka tidak akan sulit lagi. Cukup tambahkan $query = mysqli_query($koneksi, "SELECT * FROM post WHERE post.statuspost = '1' ORDER BY id DESC");_ Dengan cara ini ketika mengunjungi halaman blog pada website yang bersangkutan, maka akan ditampilkan semua postingan yang berstatus post 1 alias publish alias sudah disetujui oleh admin. Sedangkan artikel dengan status postingan 0 tidak akan muncul dan menunggu persetujuan admin Lalu Bagaimana Admin Menyetujuinya?Masih ada yang kurang saat menjelaskan hanya sampai disini, apakah admin menyetujui postingan dengan mengubah angka 0 menjadi 1 di database? Diatas artikel ini telah disertakan link tutorial tentang menampilkan postingan yang berbeda untuk setiap login user, disitu sudah dijelaskan bahwa user A hanya bisa melihat postingan yang dibuatnya, user B juga bisa melihat yang sama, sedangkan admin bisa melihat semua postingan di database mulai dari yang pending, sampai yang sudah publish Artinya admin dapat mengedit artikel/postingan dan merubah status postingan dari 0 menjadi 1, pastikan anda sudah membuat form field untuk ini. Contoh Ubah ke nomor 1 lalu Perbarui Posting (ini menggunakan sistem edit yang sudah dibahas pada tutorial sebelumnya), maka sistem akan menyimpan data terbaru ini (nomor 1) dan mungkin beberapa konten posting yang ingin diubah oleh admin. Setelah berubah menjadi 1, postingan akan muncul di halaman blog |