Cara menggunakan cara membuat forum html

Dalam tutorial ini, kita akan membangun forum yang didukung PHP/MySQL dari awal. Tutorial ini sangat cocok untuk membiasakan diri dengan PHP dan database yang digunakan untuk kebijakan. Mari selami langsung

Langkah 1. Membuat Tabel Database

Itu selalu merupakan ide yang baik untuk memulai dengan membuat model data yang bagus saat membuat aplikasi. Mari kita jelaskan aplikasi kita dalam satu kalimat. Kami akan membuat forum yang memiliki pengguna yang membuat topik dalam berbagai kategori. Pengguna lain dapat memposting balasan. Seperti yang Anda lihat, saya menyoroti beberapa kata benda yang mewakili nama tabel kami

Pengguna

  • Kategori
  • Topik
  • Posting

Ketiga objek ini saling terkait satu sama lain, jadi kami akan mengolahnya dalam desain tabel kami. Lihatlah skema di bawah ini

Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html

Terlihat cukup rapi bukan? . Semua kolom yang tercantum di dalamnya dan garis di antaranya mewakili hubungan. Saya akan menjelaskannya lebih lanjut, jadi tidak apa-apa jika saat ini tidak masuk akal bagi Anda

Saya akan membahas setiap tabel dengan menjelaskan SQL, yang saya buat menggunakan skema di atas. Untuk skrip Anda sendiri, Anda juga dapat membuat skema dan SQL yang serupa. Beberapa editor seperti MySQL Workbench (yang saya gunakan) dapat menghasilkan file. sql juga, tapi saya akan merekomendasikan belajar SQL karena lebih menyenangkan melakukannya sendiri. Pengantar SQL dapat ditemukan di W3Schools

Tabel pengguna

CREATE 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. Pernyataan tersebut diikuti dengan nama tabel dan semua kolom yang diapit oleh tanda kurung. Nama semua field sudah cukup jelas, jadi kita hanya akan membahas tipe datanya di bawah ini

identitas pengguna

"Kunci utama digunakan untuk mengidentifikasi secara unik setiap baris dalam sebuah tabel. "

Jenis bidang ini adalah INT, yang berarti bidang ini berisi bilangan bulat. Bidang tidak boleh kosong (BUKAN NULL) dan ditambahkan ke setiap catatan yang dimasukkan. Di bagian bawah tabel, Anda dapat melihat kolom user_id yang dideklarasikan sebagai kunci utama. Kunci utama digunakan untuk mengidentifikasi secara unik setiap baris dalam sebuah tabel. Tidak ada dua baris berbeda dalam tabel yang memiliki nilai (atau kombinasi nilai) yang sama di semua kolom. Itu mungkin sedikit tidak jelas, jadi inilah sedikit contoh

Ada seorang pengguna bernama John Doe. Jika pengguna lain mendaftar dengan nama yang sama, ada masalah, karena. pengguna yang mana? . Dengan menggunakan kunci utama masalah ini dapat diselesaikan, karena kedua topik tersebut unik

Semua tabel lain juga memiliki kunci utama dan bekerja dengan cara yang sama

nama belakang

Ini adalah bidang teks, yang disebut bidang VARCHAR di MySQL. Jumlah antara tanda kurung adalah panjang maksimum. Pengguna dapat memilih nama pengguna hingga 30 karakter. Kolom ini tidak boleh NULL. Di bagian bawah tabel, Anda dapat melihat bahwa bidang ini dinyatakan UNIK, artinya nama pengguna yang sama tidak dapat didaftarkan dua kali. Bagian INDEKS UNIK menunjukkan database yang ingin kita tambahkan kunci unik. Kemudian kami mendefinisikan nama kunci unik, user_name_unique dalam kasus ini. Di antara tanda kurung adalah bidang kunci unik yang berlaku, yaitu nama_pengguna

user_pass

Bidang ini sama dengan bidang nama_pengguna, kecuali untuk panjang maksimum. Karena kata sandi pengguna, berapa pun panjangnya, digabungkan dengan sha1(), kata sandi akan selalu sepanjang 40 karakter

email_pengguna

Bidang ini sama dengan bidang user_pass

tanggal_pengguna

Ini adalah bidang tempat kami akan menyimpan tanggal pendaftaran pengguna. Jenisnya adalah DATETIME dan bidangnya tidak boleh NULL

tingkat_pengguna

Bidang ini berisi tingkat pengguna, misalnya. '0' untuk pengguna biasa dan '1' untuk admin. Lebih lanjut tentang ini nanti

Tabel Kategori

CREATE 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 seperti tabel pengguna. Tabel ini juga memiliki primary key dan nama kategori harus unik

Topik Tabel

CREATE 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 untuk field topic_by. Bidang mengacu pada pengguna yang membuat topik. Topic_cat mengacu pada kategori topik yang dimilikinya. Kami tidak dapat memaksakan hubungan ini hanya dengan menentukan bidang. Kita harus memberi tahu database bahwa bidang ini harus berisi user_id yang ada dari tabel user, atau tabel cat_id yang valid dari tabel kategori. Kami akan menambahkan beberapa relasi setelah saya membahas tabel postingan

Tabel posting

CREATE 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; . bidang post_by. Bidang post_topic mengacu pada topik posting

"Kunci asing adalah batasan referensi antara dua tabel. Kunci asing mengidentifikasi kolom atau grup kolom dalam satu tabel (referensi) yang merujuk ke kolom atau grup kolom di tabel lain (direferensikan). "

Setelah kami menjalankan kueri ini, kami memiliki model data yang cukup baik, tetapi hubungannya masih hilang. Mari kita mulai dengan definisi relasi. Kami akan menggunakan sesuatu yang disebut kunci asing. Kunci asing adalah batasan referensi antara dua tabel. Kunci asing mengidentifikasi kolom atau grup kolom dalam satu tabel (referensi) yang merujuk ke kolom atau grup kolom di tabel lain (direferensikan). Beberapa kondisi

  • Kolom dalam tabel referensi yang dirujuk oleh kunci asing harus menjadi kunci utama
  • Nilai yang akan direferensikan harus dalam tabel yang direferensikan

Dengan menambahkan kunci asing, informasi dihubungkan bersama yang sangat penting untuk normalisasi basis data. Sekarang Anda tahu apa itu kunci asing dan mengapa kami menggunakannya. Saatnya menambahkannya ke tabel yang telah kita buat dengan menggunakan pernyataan ALTER, yang dapat digunakan untuk mengubah tabel yang sudah ada

Kami akan menautkan topik ke kategori terlebih dahulu

ALTER TABLE topics ADD FOREIGN KEY(topic_cat) REFERENCES categories(cat_id) ON DELETE CASCADE ON UPDATE CASCADE;
_

Bagian terakhir dari kueri sudah mengatakan apa yang terjadi. Saat kategori dihapus dari database, semua topik juga akan dihapus. Jika cat_id dari kategori berubah, setiap topik juga akan diperbarui. Itu adalah penggunaan bagian ON UPDATE CASCADE. Tentu saja, Anda dapat membalikkan ini untuk melindungi data Anda, jadi Anda tidak dapat menghapus kategori selama Anda masih memiliki topik yang terkait dengannya. Jika Anda ingin melakukannya, Anda dapat mengganti bagian 'ON DELETE CASCADE' dengan 'ON DELETE RESTRICT'. Ada juga SET NULL dan NO ACTION, yang berbicara sendiri

Sekarang, setiap topik dikaitkan 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;

Kunci asing ini sama dengan yang sebelumnya, tetapi ada satu perbedaan. pengguna tidak dapat dihapus selama masih ada topik dengan id pengguna dari pengguna. Kami tidak menggunakan CASCADE di sini karena mungkin ada informasi berharga dalam topik kami. Kami tidak ingin informasi tersebut dihapus jika seseorang memutuskan untuk menghapus akunnya. 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 di luar cakupan tutorial ini

Tautkan postingan ke topik

ALTER TABLE posts ADD FOREIGN KEY(post_topic) REFERENCES topics(topic_id) ON DELETE CASCADE ON UPDATE CASCADE;
_

Dan terakhir, tautkan setiap postingan ke pengguna yang membuatnya

ALTER TABLE posts ADD FOREIGN KEY(post_by) REFERENCES users(user_id) ON DELETE RESTRICT ON UPDATE CASCADE;

Itu bagian database. Cukup banyak pekerjaan, tetapi hasilnya, model data yang bagus, yang pasti layak untuk dilakukan

Setiap halaman forum kami memerlukan beberapa hal dasar, seperti DOCTYPE dan beberapa markup. Itu sebabnya kami akan menyertakan file header. php di bagian atas setiap halaman, dan footer. php di bagian bawah. Tajuk. php berisi DOCTYPE, tautan ke stylesheet dan beberapa informasi penting tentang forum, seperti tag judul dan metatag

tajuk. php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<meta name="description" content="A short description." />
	<meta name="keywords" content="put, keywords, here" />
	<title>PHP-MySQL forum</title>
	<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
<h1>My forum</h1>
	<div id="wrapper">
	<div id="menu">
		<a class="item" href="/forum/index.php">Home</a> -
		<a class="item" href="/forum/create_topic.php">Create a topic</a> -
		<a class="item" href="/forum/create_cat.php">Create a category</a>
		
		<div id="userbar">
		<div id="userbar">Hello Example. Not you? Log out.</div>
	</div>
		<div id="content">
_

Div pembungkus akan digunakan untuk memudahkan tata letak seluruh halaman. Menu div jelas berisi menu dengan tautan ke halaman yang masih harus kita buat, tetapi ini membantu untuk melihat sedikit ke mana kita akan pergi. Div userbar akan digunakan untuk bar atas kecil yang berisi beberapa informasi seperti nama pengguna dan link ke halaman logout. Halaman konten menyimpan konten halaman yang sebenarnya, tentu saja

Pembaca yang penuh perhatian mungkin memperhatikan bahwa kami kehilangan beberapa hal. Tidak ada tag

CREATE 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;
_9 atau
ALTER TABLE topics ADD FOREIGN KEY(topic_cat) REFERENCES categories(cat_id) ON DELETE CASCADE ON UPDATE CASCADE;
0. Mereka ada di halaman footer. php, seperti yang Anda lihat di bawah ini

</div><!-- content -->
</div><!-- wrapper -->
<div id="footer">Created for Nettuts+</div>
</body>
</html>

Saat kami menyertakan header dan footer di setiap halaman, sisa halaman akan disematkan di antara header dan footer. Metode ini telah memperoleh beberapa keuntungan. Pertama dan terpenting, semuanya akan ditata dengan benar. Contoh singkat

CREATE 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;
_0

Seperti yang Anda lihat, halaman tanpa kesalahan akan menghasilkan halaman yang bagus dengan kontennya. Tapi jika ada kesalahan, semuanya terlihat sangat jelek;

Keuntungan lain adalah kemungkinan untuk membuat perubahan cepat. Anda dapat melihatnya sendiri dengan mengedit teks di footer. php saat Anda menyelesaikan tutorial ini; . Akhirnya, kami menambahkan lembar gaya yang memberi kami beberapa markup dasar - tidak ada yang terlalu mewah

CREATE 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;
_1

Langkah 3. Siap Beraksi

Sebelum kita dapat membaca apapun dari database kita, kita membutuhkan sebuah koneksi. Itulah gunanya connect. php. Kami akan memasukkannya ke dalam setiap file yang akan kami buat

CREATE 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;
_2

Cukup ganti nilai default dari variabel di bagian atas halaman dengan database Anda sendiri, simpan file dan Anda siap untuk pergi

Langkah 4. Menampilkan Ikhtisar Forum

Karena kita baru saja memulai dengan beberapa teknik dasar, untuk saat ini kita akan membuat versi sederhana dari forum ini

CREATE 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;
_3

Itu dia. ikhtisar yang bagus dan bersih. Kami akan memperbarui halaman ini sepanjang tutorial hingga lebih seperti hasil akhirnya, selangkah demi selangkah

Langkah 5. Mendaftarkan Pengguna

Mari kita mulai dengan membuat formulir HTML sederhana agar pengguna baru dapat mendaftar

Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html

Halaman PHP diperlukan untuk memproses formulir. Kami akan menggunakan variabel $_SERVER. Variabel $_SERVER adalah larik dengan nilai yang ditetapkan secara otomatis dengan setiap permintaan. Salah satu nilai dari array $_SERVER adalah 'REQUEST_METHOD'. Saat halaman diminta dengan GET, variabel ini akan menyimpan nilai 'GET'. Ketika halaman diminta melalui POST, itu akan menyimpan nilai 'POST'. Kita dapat menggunakan nilai ini untuk memeriksa apakah suatu formulir telah diposting. Lihat halaman pendaftaran. php di bawah ini

CREATE 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;
_4

Ada banyak penjelasan di komentar yang saya buat di file, jadi pastikan untuk memeriksanya. Pemrosesan data berlangsung dalam tiga bagian

  • Validasi data
  • Jika data tidak valid, tampilkan formulir lagi
  • Jika data valid, simpan record di database

Bagian PHP cukup jelas. Namun, kueri SQL mungkin memerlukan lebih banyak penjelasan

CREATE 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;
_5

Pada baris 1 kami memiliki pernyataan INSERT INTO yang cukup jelas. Nama tabel ditentukan pada baris kedua. Kata-kata di antara tanda kurung mewakili kolom tempat kita ingin memasukkan data. Pernyataan VALUES memberi tahu database bahwa kami telah mendeklarasikan nama kolom dan inilah saatnya untuk menentukan nilainya. Ada sesuatu yang baru di sini. mysql_real_escape_string. Fungsi lolos dari karakter khusus dalam string yang tidak lolos, sehingga aman untuk menempatkannya dalam kueri. Fungsi ini HARUS selalu digunakan, dengan sangat sedikit pengecualian. Terlalu banyak skrip yang tidak menggunakannya dan mudah diretas. Jangan mengambil risiko, gunakan mysql_real_escape_string()

"Jangan pernah memasukkan kata sandi normal seperti itu. Anda HARUS mengenkripsinya. "

Juga, Anda dapat melihat bahwa fungsi sha1() digunakan untuk mengenkripsi kata sandi pengguna. Ini juga merupakan hal yang sangat penting untuk diingat. Jangan pernah memasukkan kata sandi normal seperti itu. Anda HARUS mengenkripsinya. Bayangkan seorang peretas yang entah bagaimana berhasil mendapatkan akses ke database Anda. Jika dia melihat semua kata sandi teks biasa, dia dapat masuk ke akun (admin) yang dia inginkan. Jika kolom kata sandi berisi string sha1, dia harus memecahkannya terlebih dahulu, yang hampir tidak mungkin

Catatan. ini juga memungkinkan untuk menggunakan md5(), saya selalu menggunakan sha1() karena tolok ukur telah membuktikan bahwa ini sedikit lebih cepat, tetapi tidak terlalu banyak. Anda dapat mengganti sha1 dengan md5 jika Anda mau

Jika proses pendaftaran berhasil, Anda akan melihat sesuatu seperti ini

Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html

Coba segarkan layar phpMyAdmin Anda, catatan baru akan muncul di tabel pengguna

Langkah 6. Menambahkan Otentikasi dan Tingkat Pengguna

Aspek penting dari sebuah forum adalah perbedaan antara pengguna biasa dan admin/moderator. Karena ini adalah forum kecil dan menambahkan fitur seperti menambahkan moderator baru dan banyak hal akan memakan banyak waktu, kami akan fokus pada proses login dan membuat beberapa fitur admin seperti membuat kategori baru dan menutup utas.

Setelah menyelesaikan langkah sebelumnya, kami akan menjadikan akun yang baru dibuat sebagai akun admin. Di phpMyAdmin, klik pada tabel pengguna, lalu 'Jelajahi'. Akun Anda mungkin langsung muncul. Klik ikon edit dan ubah nilai bidang user_level dari 0 menjadi 1. Itu saja untuk saat ini. Anda tidak akan langsung melihat perbedaan apa pun dalam aplikasi kami, tetapi ketika kami menambahkan fitur admin, akun normal Anda dan akun Anda akan memiliki kemampuan yang berbeda

Proses masuk bekerja dengan cara berikut

  • Pengunjung memasukkan data pengguna dan mengirimkan formulir
  • Jika nama pengguna dan kata sandi sudah benar, kita dapat memulai sesi
  • Jika username dan password salah, kita tampilkan form lagi dengan pesan
Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html

File masuk. php ada di bawah. Jangan mengira saya tidak menjelaskan apa yang saya lakukan, tetapi periksa komentar di file. Jauh lebih mudah dipahami dengan cara itu

CREATE 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;
_6

Ini adalah kueri di file masuk. php

CREATE 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;
_7

Ini jelas kami perlu memeriksa untuk mengetahui apakah kredensial yang diberikan milik pengguna yang ada. Banyak skrip mengambil kata sandi dari database dan membandingkannya menggunakan PHP. Jika kita melakukan ini secara langsung melalui SQL, kata sandi akan disimpan dalam database satu kali selama pendaftaran dan tidak akan pernah meninggalkannya lagi. Ini lebih aman, karena semua tindakan nyata yang terjadi di lapisan basis data dan bukan di aplikasi kita

Jika pengguna berhasil masuk, kami melakukan beberapa hal

CREATE 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;
_8

Pertama, kami menyetel 'signed_in' $_SESSION var ke true, sehingga kami dapat menggunakannya di halaman lain untuk memastikan pengguna masuk. Kami juga menempatkan id pengguna dan pengguna dalam variabel $_SESSION untuk digunakan pada halaman yang berbeda. Terakhir, kami menampilkan tautan sekilas ke forum sehingga pengguna dapat langsung memulai

Tentu saja, masuk membutuhkan fungsi lain, keluar. Proses keluar sebenarnya jauh lebih mudah daripada proses masuk. Karena semua informasi tentang pengguna disimpan dalam variabel $_SESSION, yang harus kita lakukan adalah menghapusnya dan menampilkan pesan

Setelah kami mengatur variabel $_SESSION, kami dapat menentukan apakah seseorang masuk. Mari buat satu perubahan sederhana terakhir pada header. php

Mengganti

CREATE 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;
_9

Oleh

CREATE 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;
0

Jika pengguna masuk, dia akan melihat namanya ditampilkan di halaman depan dengan tautan ke halaman keluar. Otentikasi kami selesai. Sekarang forum kita akan terlihat seperti ini

Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html

Langkah 7. Buat Kategori

Kami ingin membuat kategori, jadi mari kita mulai dengan membuat formulir

CREATE 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;
1

Langkah ini sangat mirip dengan langkah 4 (pengguna mendaftar), jadi saya tidak akan melakukan penjelasan mendalam di sini. Jika Anda mengikuti semua langkah, Anda seharusnya dapat mengetahuinya dengan cukup cepat

CREATE 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;
2

Seperti yang Anda lihat, kami memulai skrip dengan pemeriksaan $_SERVER, setelah memeriksa apakah pengguna memiliki hak admin, yang diperlukan untuk membuat kategori. Formulir akan ditampilkan jika belum terkirim. Jika ya, nilainya akan disimpan. Sekali lagi, kueri SQL disiapkan dan kemudian dieksekusi

Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html

Langkah 8. Menambahkan Kategori ke index. php

Kami telah membuat beberapa kategori, jadi sekarang kami dapat menampilkannya di halaman depan. Mari tambahkan kueri berikut untuk wilayah konten indeks. php

CREATE 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;
_3

Kueri ini memilih semua kategori beserta nama dan deskripsinya dari tabel kategori. Kita hanya perlu sedikit PHP untuk menampilkan hasilnya. Jika kita menambahkan bagian tersebut seperti yang kita lakukan pada langkah sebelumnya, kodenya akan terlihat seperti ini

CREATE 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;
_4

Perhatikan bagaimana kami menggunakan cat_id untuk membuat tautan ke kategori. php. Semua tautan ke halaman ini akan terlihat seperti ini. kategori. php?cat_id=x, di mana x bisa berupa nilai numerik. Ini mungkin baru bagi Anda. Kita dapat memeriksa url dengan PHP untuk nilai $_GET. Misalnya, kami memiliki tautan ini

CREATE 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;
5

Pernyataan echo $_GET['cat_id']; . Dalam beberapa langkah berikutnya, kami akan menggunakan nilai ini untuk mengambil topik saat melihat kategori, tetapi topik tidak akan terlihat jika kami belum membuatnya. Jadi mari kita membuat beberapa topik

Langkah 9. Buat Topik

Pada langkah ini, kami menggabungkan teknik yang telah kami pelajari pada langkah sebelumnya. Kami memeriksa apakah pengguna masuk, kami akan menggunakan kueri input untuk membuat topik dan membuat beberapa formulir HTML dasar

Struktur create_topic. php hampir tidak dapat dijelaskan dalam registri atau semacamnya, jadi saya menulisnya kembali dalam kode semu

CREATE 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;
6

Ini adalah kode sebenarnya dari bagian forum kami ini, periksa penjelasan di bawah kode untuk melihat fungsinya

CREATE 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;
7

Saya akan membahas halaman ini dalam dua bagian, menampilkan form dan form processing

Tunjukkan formulir
Kami mulai dengan formulir HTML sederhana. Sebenarnya ada yang spesial disini, karena kita menggunakan dropdown. Dropdown ini diisi dengan data dari database, menggunakan query ini

CREATE 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;
_8

Itulah satu-satunya bagian yang berpotensi membingungkan di sini; . php di bagian bawah langkah ini

Pemrosesan formulir

Proses menyimpan topik terdiri dari dua bagian. simpan topik di tabel topik dan simpan posting pertama di tabel posting. Ini membutuhkan sesuatu yang cukup canggih yang sedikit melampaui cakupan tutorial ini. Ini disebut transaksi, yang pada dasarnya berarti kita mulai dengan menjalankan perintah mulai dan kemudian kembalikan ketika ada kesalahan database dan lakukan ketika semuanya berjalan dengan baik. Lebih lanjut tentang transaksi

CREATE 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;
_9

Kueri pertama yang digunakan untuk menyimpan data adalah kueri pembuatan topik, yang terlihat seperti ini

CREATE 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;
0

Mula-mula bidang ditentukan, kemudian nilai yang akan dimasukkan. Kami telah melihat yang pertama sebelumnya, itu hanya sebuah string yang dibuat aman dengan menggunakan mysql_real_escape_string(). Nilai kedua, NOW(), adalah fungsi SQL untuk waktu saat ini. Namun, nilai ketiga adalah nilai yang belum pernah kita lihat sebelumnya. Ini mengacu pada id (valid) dari suatu kategori. Nilai terakhir mengacu pada user_id (yang ada), yang dalam hal ini adalah nilai $_SESSION['user_id']. Variabel ini ditentukan selama proses masuk

Jika kueri dijalankan tanpa kesalahan, kami melanjutkan ke kueri kedua. Ingat kita masih melakukan transaksi di sini. Jika kami memiliki kesalahan, kami akan menggunakan perintah ROLLBACK

CREATE 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;
1

Hal pertama yang kami lakukan dalam kode ini adalah menggunakan mysql_insert_id() untuk mengambil id terbaru yang dihasilkan dari bidang topic_id di tabel topik. Seperti yang mungkin Anda ingat dari langkah pertama tutorial ini, id dibuat di database menggunakan auto_increment

Kemudian postingan tersebut dimasukkan ke dalam tabel postingan. Kueri ini terlihat sangat mirip dengan kueri topik. Satu-satunya perbedaan adalah bahwa posting ini mengacu pada topik dan topik mengacu pada kategori. Dari awal kami memutuskan untuk membuat model data yang bagus dan inilah hasilnya. struktur hirarki yang baik

Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html

Langkah 10. Tampilan Kategori

Kami akan membuat halaman ikhtisar untuk satu kategori. Kita baru saja membuat sebuah kategori, akan sangat berguna untuk dapat melihat semua topik di dalamnya. Pertama, buat halaman bernama kategori. php

Daftar singkat hal-hal yang kita butuhkan

Diperlukan untuk menampilkan kategori

  • nama kucing
  • deskripsi_gambar

Diperlukan untuk menampilkan semua topik

  • topic_id
  • topik_subjek
  • tanggal_topik
  • topic_cat

Mari buat dua kueri SQL yang mengambil data persis ini dari database

CREATE 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;
2

Kueri di atas memilih semua kategori dari database

CREATE 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;
_3

Kueri di atas dijalankan dalam loop sementara di mana kami menggemakan kategori. Dengan melakukannya dengan cara ini, kita akan melihat semua kategori dan topik terbaru untuk masing-masing kategori
Kode lengkap dari kategori. php akan menjadi sebagai berikut

CREATE 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;
_4

Dan inilah hasil akhir dari halaman kategori kami

Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html

Langkah 11. Tampilan Topik

Kueri SQL pada langkah ini adalah yang rumit. Bagian PHP adalah semua yang pernah Anda lihat sebelumnya. Mari kita lihat kueri. Yang pertama mengambil informasi dasar tentang topik ini

CREATE 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;
5

Informasi ini ditampilkan di head table yang akan kita gunakan untuk menampilkan semua data. Selanjutnya, kami mengambil semua posting di topik ini dari database. Permintaan berikut memberi kita apa yang kita butuhkan

CREATE 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;
6

Kali ini, kami menginginkan informasi dari tabel pengguna dan posting - jadi kami menggunakan LEFT JOIN lagi. Syaratnya adalah. Id pengguna harus sama dengan kolom post_by. Dengan cara ini kita bisa menampilkan username dari user yang membalas di setiap postingan

Tampilan topik terakhir terlihat seperti ini

Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html

Langkah 12. Menambahkan Balasan

Mari kita buat bagian terakhir dari forum ini, kemungkinan untuk menambahkan balasan. Kita akan mulai dengan membuat form

CREATE 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;
7
Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html

Kode balasan. Php lengkapnya seperti ini.

CREATE 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;
8

Komentar dalam kode cukup merinci apa yang terjadi. Kami memeriksa pengguna yang sebenarnya dan kemudian memasukkan posting ke dalam database

Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html
Cara menggunakan cara membuat forum html

Memecahkan

Setelah Anda menyelesaikan tutorial ini, Anda akan memiliki pemahaman yang lebih baik tentang apa yang diperlukan untuk membangun sebuah forum. Saya harap penjelasan saya cukup jelas. Terima kasih lagi untuk membaca

Langkah demi langkah untuk membuat formulir login HTML?

Cara Membuat Formulir Login yang Menarik dengan HTML .
Deklarasikan Dokumen HTML Anda. Sekarang, buka file html formulir login Anda. .
2. Buat Header Halaman Formulir Login. .
3. Berikan Judul Halaman Form Login. .
3. Tempel File CSS. .
4. Buat Badan Formulir Masuk. .
Buat Tata Letak Formulir Login. .
6. Beri Judul pada Form Login. .
7. Buat Kotak Formulir Login

Langkah-langkah Membuat Website dengan HTML?

Cara Membuat Halaman Web Sederhana dengan HTML .
Buka editor teks. .
Setel jenis dokumen ke HTML. .
Tambahkan tab judul ke halaman web Anda. .
Ketuk di bawah tanda "Kepala" tertutup. .
Selanjutnya buat judul halaman. .
Tambahkan judul tambahan jika Anda mau. .
Buatlah sebuah paragraf. .
Mengubah warna teks

Bagaimana cara kerja HTML jelaskan secara singkat?

HTML (HyperText Markup Language) adalah bahasa yang menggunakan tanda (tag) tertentu untuk mengekspresikan kode-kode yang harus ditafsirkan oleh browser agar halaman dapat ditampilkan dalam benar.

Sebutkan urutan apa saja dalam membuat form di HTML?

Tag dasar yang akan kita gunakan untuk membuat formulir pada HTML terdapat tag form , input, textarea, select dan option.