Cara membuat forum diskusi dengan php
DescriptionSource Code Website Forum Menggunakan PHP dan MySQLiSource Code Website Forum Menggunakan PHP dan MySQLi – Website Forum adalah website yang dibuat denga tujuan membuat forum. forum adalah suatu wadah tempat bertemu atau berkomunikasi untuk sebuah komunitas yang memiliki minat yang sama. Show
Sehingga memudahkan pertukaran informasi antara satu anggota komunitas dengan anggota komunitas yang lain, begitu juga sebaliknya. Website forum ini dibuat dengan menggunakan PHP dan MySQLi. dan sangat cocok untuk menjadi bahan referensi untuk teman-teman yang ingin membuat sebuah forum berbasis web. Fitur Apa Saja Yang Tersedia Pada Website Forum Ini ?Berikut ini adalah beberapa fitur unggulan yang tersedia pada website forum. diantaranya adalah :
Hak Akses Website ForumAda dua hak akses yang ada pada website forum ini, yaitu :
Hak Akses AdminBerikut ini adalah beberapa fitur yang tersedia pada hak akses admin.
Hak Akses MemberBerikut adalah beberapa hal yang bisa dilakukan oleh hak akses member.
Untuk Siapa Source Code Website Forum Ini Cocok ?Source code ini cocok untuk teman-teman yang ingin membuat website forum atau forum berbasis web. Source code ini sangat cocok sebagai dijadikan bahan referensi untuk membuat website forum, blog, form pendaftaran / form registrasi dan lain-lain. Untuk detail tentang source code website forum menggunakan PHP dan MySQLi ini bisa teman-teman lihat pada link demo berikut. DEMO WEBSITE FORUM Incoming search terms:
Dalam tutorial ini, kita akan membangun sebuah forum didukung PHP/MySQL dari awal. Tutorial ini sempurna untuk mendapatkan penggunaan PHP dan database yang digunakan untuk dasar. Mari kita langsung menyelaminya! Langkah 1: Membuat Tabel DatabaseAdalah selalu ide yang bagus untuk memulai dengan membuat model data yang bagus saat membuat aplikasi. Mari kita jelaskan aplikasi kita dalam satu kalimat: Kita akan membuat forum yang memiliki users yang membuat topics di berbagai categories. Pengguna lain dapat post balasan. Seperti yang Anda lihat, saya menyoroti beberapa kata benda yang mewakili nama tabel kita. Users
Ketiga objek ini saling terkait satu sama lain, jadi kita akan mengolahnya dalam desain tabel kita. Lihatlah skema di bawah ini. Terlihat cukup rapi ya? Setiap kotak adalah tabel database. Semua kolom yang tercantum di dalamnya dan garis di antara keduanya mewakili relasi. Saya akan menjelaskannya lebih jauh, jadi tidak apa-apa jika itu tidak masuk akal bagi Anda saat ini. Saya akan membahas setiap tabel dengan menjelaskan SQL, yang saya buat dengan menggunakan skema di atas. Untuk skrip Anda sendiri Anda bisa membuat skema serupa dan SQL juga. Beberapa editor seperti MySQL Workbench (yang saya gunakan) dapat menghasilkan file .sql juga, tapi saya akan merekomendasikan belajar SQL karena lebih menyenangkan melakukannya sendiri. Pengenalan SQL dapat ditemukan di W3Schools. Tabel UsersCREATE TABLE users ( user_id INT(8) NOT NULL AUTO_INCREMENT, user_name VARCHAR(30) NOT NULL, user_pass VARCHAR(255) NOT NULL, user_email VARCHAR(255) NOT NULL, user_date DATETIME NOT NULL, user_level INT(8) NOT NULL, UNIQUE INDEX user_name_unique (user_name), PRIMARY KEY (user_id) ) TYPE=INNODB; Pernyataan CREATE TABLE digunakan untuk menunjukkan bahwa kita ingin membuat tabel baru, tentu saja. Pernyataannya diikuti dengan nama tabel dan semua kolom yang dicantumkan di antara tanda kurung. Nama semua field sudah cukup jelas, jadi kita hanya akan membahas tipe data di bawah ini. user_id"Primary key digunakan untuk mengidentifikasi setiap baris dalam sebuah tabel secara unik." Jenis field ini adalah INT, yang berarti field ini memegang integer. Field tidak boleh kosong (NOT NULL) dan penambahan disetiap record yang dimasukkan. Di bagian bawah tabel, Anda dapat melihat field user_id dideklarasikan sebagai primary key. Primary key digunakan untuk mengidentifikasi setiap baris dalam sebuah tabel secara unik. Tidak ada dua baris yang berbeda dalam tabel yang memiliki nilai (atau kombinasi nilai) yang sama di semua kolom. Itu mungkin sedikit tidak jelas, jadi inilah sedikit contohnya. Ada seorang pengguna bernama John Doe. Jika pengguna lain mendaftar dengan nama yang sama, ada masalah, karena: pengguna mana adalah yang mana? Anda tidak bisa mengatakannya dan database juga tidak bisa membedakan keduanya. Dengan menggunakan primary key masalah ini diselesaikan, karena kedua topik itu unik. Semua tabel lainnya juga mempunyai primary key juga dan mereka bekerja dengan cara yang sama. user_nameIni adalah field teks, yang disebut field VARCHAR di MySQL. Jumlah antara tanda kurung adalah panjang maksimum. Pengguna dapat memilih nama pengguna hingga 30 karakter. Field ini tidak boleh NULL. Di bagian bawah tabel, Anda bisa melihat field ini dinyatakan UNIQUE, yang berarti nama pengguna yang sama tidak dapat didaftarkan dua kali. Bagian UNIQUE INDEX menunjukkan database yang ingin kita tambahkan kunci unik. Kemudian kita mendefinisikan nama kunci unik, user_name_unique dalam kasus ini. Antara tanda kurung adalah field kunci unik yang berlaku, yaitu user_name. user_passField ini sama dengan field user_name, kecuali panjang maksimumnya. Karena password pengguna, tidak peduli berapa panjangnya, digabung dengan sha1(), password akan selalu 40 karakter panjangnya. user_emailField ini sama dengan field user_pass. user_dateIni adalah field dimana kita akan menyimpan tanggal pendaftaran pengguna. Jenisnya adalah DATETIME dan field-nya tidak boleh NULL. user_levelField ini berisi tingkat pengguna, misalnya: '0' untuk pengguna biasa dan '1' untuk admin. Lebih lanjut tentang ini nanti. Tabel CategoriesCREATE TABLE categories ( cat_id INT(8) NOT NULL AUTO_INCREMENT, cat_name VARCHAR(255) NOT NULL, cat_description VARCHAR(255) NOT NULL, UNIQUE INDEX cat_name_unique (cat_name), PRIMARY KEY (cat_id) ) TYPE=INNODB; Tipe data ini pada dasarnya bekerja dengan cara yang sama dengan tabel users. Tabel ini juga memiliki primary key dan nama kategori haruslah unik. Tabel TopicsCREATE TABLE topics ( topic_id INT(8) NOT NULL AUTO_INCREMENT, topic_subject VARCHAR(255) NOT NULL, topic_date DATETIME NOT NULL, topic_cat INT(8) NOT NULL, topic_by INT(8) NOT NULL, PRIMARY KEY (topic_id) ) TYPE=INNODB; Tabel ini hampir sama dengan tabel lainnya, kecuali field topic_by. Field itu mengacu pada pengguna yang menciptakan topik. Topic_cat mengacu pada kategori topik miliknya. Kita tidak bisa memaksa relasi ini hanya dengan menyatakan field-nya. Kita harus membiarkan database mengetahui bidang ini harus berisi user_id yang ada dari tabel pengguna, atau tabel cat_id yang valid dari tabel kategori. Kita akan menambahkan beberapa relasi setelah saya membahas tabel posting. Tabel PostsCREATE TABLE posts ( post_id INT(8) NOT NULL AUTO_INCREMENT, post_content TEXT NOT NULL, post_date DATETIME NOT NULL, post_topic INT(8) NOT NULL, post_by INT(8) NOT NULL, PRIMARY KEY (post_id) ) TYPE=INNODB; Ini sama dengan tabel lainnya; ada juga field yang mengacu pada user_id di sini: field post_by. Field post_topic mengacu pada topik pos miliknya. "Foreign key adalah batasan referensi antara dua tabel. Foreign key mengidentifikasi kolom atau kumpulan kolom dalam satu tabel (referensi) yang mengacu pada kolom atau kumpulan kolom di tabel lain (yang direferensikan)." Setelah kita mengeksekusi query ini, kita memiliki model data yang cujup bagus, namun relasinya masih hilang. Mari kita mulai dengan definisi sebuah relasi. Kita akan menggunakan sesuatu yang disebut foreign key. Foreign key adalah batasan referensi antara dua tabel. Foreign key mengidentifikasi kolom atau kumpulan kolom dalam satu tabel (referensi) yang mengacu pada kolom atau kumpulan kolom di tabel lain (yang direferensikan). Beberapa kondisi:
Dengan menambahkan foreign key, informasi dihubungkan bersamaan yang sangat penting untuk normalisasi database. Sekarang Anda tahu apa itu foreign key dan mengapa kita menggunakannya. Saatnya untuk menambahkannya ke tabel yang telah kita buat dengan menggunakan pernyataan ALTER, yang bisa digunakan untuk mengubah tabel yang sudah ada. Kita akan menghubungkan topik ke kategori terlebih dulu: ALTER TABLE topics ADD FOREIGN KEY(topic_cat) REFERENCES categories(cat_id) ON DELETE CASCADE ON UPDATE CASCADE; Bagian terakhir dari query sudah mengatakan apa yang terjadi. Saat kategori dihapus dari database, semua topik akan dihapus juga. Jika cat_id dari kategori berubah, setiap topik akan diperbarui juga. Itulah kegunaan dari bagian ON UPDATE CASCADE. Tentu saja, Anda dapat membalikkan ini untuk melindungi data Anda, sehingga Anda tidak dapat menghapus kategori selama masih memiliki topik yang terkait dengannya. Jika Anda ingin melakukannya, Anda bisa mengganti bagian 'ON DELETE CASCADE' dengan 'ON DELETE RESTRICT'. Ada juga SET NULL dan NO ACTION, yang berbicara untuk mereka sendiri. Sekarang, setiap topik terkait dengan kategori. Mari tautkan topik ke pengguna yang membuatnya. ALTER TABLE topics ADD FOREIGN KEY(topic_by) REFERENCES users(user_id) ON DELETE RESTRICT ON UPDATE CASCADE; Foreign key ini sama dengan yang sebelumnya, tapi ada satu perbedaan: pengguna tidak bisa dihapus asalkan masih ada topik dengan user id dari pengguna. Kita tidak menggunakan CASCADE di sini karena mungkin ada informasi berharga dalam topik kita. Kita tidak ingin informasi tersebut dihapus jika seseorang memutuskan untuk menghapus akun mereka. Untuk tetap memberi pengguna kesempatan untuk menghapus akun mereka, Anda dapat membuat beberapa fitur yang menganonimkan semua topik mereka dan kemudian menghapus akun mereka. Sayangnya, itu diluar lingkup tutorial ini. Tautkan posting ke topik: ALTER TABLE posts ADD FOREIGN KEY(post_topic) REFERENCES topics(topic_id) ON DELETE CASCADE ON UPDATE CASCADE; Dan akhirnya, tautkan setiap posting ke pengguna yang membuatnya: ALTER TABLE posts ADD FOREIGN KEY(post_by) REFERENCES users(user_id) ON DELETE RESTRICT ON UPDATE CASCADE; Itulah bagian database! Cukup banyak pekerjaan, tapi hasilnya, model data yang hebat, yang pasti layak dilakukan. Langkah 2: Pengenalan Sistem Header/FooterSetiap halaman forum kita membutuhkan beberapa hal mendasar, seperti DOCTYPE dan beberapa markup. Itu sebabnya kita akan menyertakan file header.php di bagian atas setiap halaman, dan footer.php di bagian bawah. Header.php berisi DOCTYPE, link ke stylesheet dan beberapa informasi penting tentang forum, seperti tag title dan metatag. header.php
|