Kata Pengantar: Saat ini, terdapat forum di mana-mana di Internet, tetapi saya ingin tahu apakah Anda pernah menghadapi situasi seperti ini: mencari konten yang Anda inginkan dalam informasi diskusi yang berantakan adalah hal yang sangat memakan waktu dan tenaga akankah saya tidak ingin pergi ke forum mana pun lagi. Jadi bisakah kita menambahkan fungsi audit pada konten forum website kita? Artinya, semua artikel yang diposting oleh netizen ke forum tidak akan langsung ditampilkan, harus direview oleh webmaster atau moderator. Jika tidak, hapuslah untuk menghindari pemborosan ruang dan membuatnya tampak seperti area sorotan. Dengan cara ini, forum Anda dapat memberikan konten yang lebih jelas dan bermanfaat dibandingkan forum biasa. Menempatkannya di situs web Anda akan menarik lebih banyak netizen untuk berkunjung. Ide ini pasti bisa diwujudkan, dan cara membuatnya akan saya perkenalkan secara singkat di bawah ini.
Catatan: Artikel ini cocok untuk pembaca yang memiliki pemahaman tertentu tentang database ACCESS, HTML, dan ASP.
1. Analisis struktur forum
Melalui analisis persyaratan fungsional di atas, kita dapat membagi produksi forum menjadi empat bagian:
(1) Modul pendaftaran dan manajemen netizen: Karena webmaster atau moderator diperkenalkan, ia harus dapat mengontrolnya di forum Otentikasi. Fungsi modul ini adalah untuk mengelola netizen yang terdaftar dan memberikan pertanyaan yang relevan. Misalnya, menanyakan semua artikel yang diterbitkan oleh penulis tertentu, menanyakan sepuluh netizen yang telah menerbitkan artikel terbanyak, dll. Jika forum Anda tidak terlalu besar, modul ini dapat dihilangkan agar hanya memiliki fungsi otentikasi moderator, dan menghapus bagian tentang registrasi dan kueri.
(2) Modul tampilan artikel: menampilkan seluruh artikel yang telah direview oleh moderator dan dianggap layak untuk direkomendasikan.
(3) Modul penerbitan artikel: Memberikan tempat bagi netizen terdaftar untuk mempublikasikan pendapatnya, dan menunggu review oleh moderator setelah dipublikasikan.
(4) Modul review artikel: Moderator memproses semua artikel yang telah dipublikasikan di website tetapi belum direview, dan memutuskan apakah akan mempublikasikan atau menghapusnya.
Setelah memahami persyaratan fungsional spesifik, Anda dapat memulai desain forum sesuai modul. Tentu saja, modul-modul ini hanya membagi struktur forum secara fungsional, dan sebenarnya tidak dapat dirancang sepenuhnya secara independen. Untuk aplikasi yang lebih kecil, tidak diperlukan desain modular yang lengkap. Mungkin lebih mudah untuk menulis kode program secara langsung dengan perencanaan yang baik.
Umumnya ada dua cara untuk mengimplementasikan forum: menggunakan file atau database. Secara relatif, penggunaan database lebih sederhana dan efisien, dapat memberikan kontrol yang lebih baik terhadap forum, dan juga dapat memberikan verifikasi dan perlindungan terhadap data. Di sini saya menggunakan database ACCESS. Untuk aplikasi umum berukuran kecil dan menengah, ACCESS seharusnya dapat melakukan pekerjaan itu.
Dari analisa di atas kita dapat mengetahui bahwa seharusnya ada empat tabel. Di bawah ini saya berikan struktur masing-masing tabel.
(1) Tabel penulis (digunakan untuk menyimpan informasi penulis):
ID: Jenis teks, wajib diisi. Itu adalah nama kode seorang netizen.
Kata sandi: Jenis teks, wajib diisi.
Nama panggilan: Jenis teks, wajib diisi.
EMAIL: Jenis teks, wajib diisi.
Posisi: Tipe numerik, wajib diisi. -1 mewakili netizen biasa, 0 mewakili webmaster. Angka yang lebih besar dari 0 mewakili moderator.
Jumlah artikel: tipe numerik, wajib diisi. Jumlah total artikel yang diterbitkan oleh netizen.
Nama: jenis teks, opsional.
Jenis Kelamin: jenis teks, opsional.
Telepon: Jenis teks, opsional.
(2) Tabel isi (digunakan untuk menyimpan konten artikel tertentu dan informasi terkait):
ID: Secara otomatis memberi nomor dan mengindeksnya untuk mempercepat pencarian.
ID Kanban: tipe numerik, dari daftar Kanban, yang menunjukkan papan Kanban tempat artikel tersebut berada.
ID Topik: Jenis numerik, dari tabel topik, yang menunjukkan topik artikel tersebut.
ID Penulis: jenis teks, dari tabel penulis, yang menunjukkan penulis artikel.
Tanggal: Jenis tanggal/waktu, nilai awal preset adalah fungsi SEKARANG(), yang secara otomatis mengambil waktu sistem saat ini sebagai nilainya.
Judul: Jenis teks. Judul artikel.
Publikasikan: ketik Ya/Tidak, "Benar" berarti artikel telah direview dan dapat dipublikasikan; "Tidak" berarti artikel belum direview.
Rekomendasi: Tipe numerik, tingkat rekomendasi artikel.
Konten: Jenis komentar, konten spesifik artikel.
Jumlah klik : Jenis nomor, jumlah klik pada artikel.
(3) Daftar Kanban (digunakan untuk menyimpan informasi tentang kanban):
ID: Nomor otomatis.
Nama: Jenis teks, nama papan.
Moderator: Jenis teks, ID moderator dewan.
Jumlah Topik: Jenis numerik, jumlah topik yang disertakan di papan.
(4) Tabel topik (digunakan untuk menyimpan informasi tentang topik):
ID: Secara otomatis memberi nomor dan menetapkan indeks untuknya.
Judul: Jenis teks, menunjukkan nama topik.
Papan Kanban: Jenis nomor, dari daftar papan Kanban, yang menunjukkan papan Kanban tempat topik tersebut berada.
Jumlah artikel: Jenis nomor, jumlah artikel yang terdapat dalam topik.
Semua tabel telah dirancang, namun perancangan databasenya belum selesai, sehingga kita masih perlu menjalin hubungan antar tabel, agar database dapat melakukan beberapa pemeriksaan korelasi untuk menghindari kesalahan data. Manfaat lain dari membangun hubungan antar tabel adalah kueri GABUNG yang kompleks dapat dengan mudah dibuat melaluinya.
Biasanya ketika kita mengoperasikan database di ASP, kita menggunakan query yang dihasilkan selama eksekusi, yang kemudian diteruskan ke database untuk interpretasi dan eksekusi. Dan di sini kita akan menggunakan kueri tersimpan. Prosedur tersimpan memiliki lebih banyak keuntungan dibandingkan kueri waktu eksekusi.
Itu disimpan dalam database dan tidak bergantung pada kode program ASP, membuatnya lebih mudah untuk dibuat dan dimodifikasi, dan efisiensi kueri lebih tinggi dan lebih cepat. Ini dapat di-debug dan kemudian digunakan di halaman ASP, yang dapat menghindari banyak masalah. Dan kode program ASP yang menggunakan query tersimpan lebih mudah dibaca dan dimodifikasi. Mungkin semua orang kesal dengan penggunaan query SQL di ASP, terutama yang koma, titik koma, dll, yang bisa menimbulkan error jika tidak hati-hati. Setelah menggunakan kueri tersimpan, Anda tidak perlu khawatir tentang masalah ini. Tentu saja, ada beberapa hal yang perlu Anda perhatikan saat menggunakan program yang sudah disimpan sebelumnya. Saya akan menjelaskan cara menggunakannya secara detail nanti. Sangat mudah untuk membuat program tersimpan di ACCESS, jadi saya tidak akan membicarakannya lebih lanjut di sini. Disini saya hanya memberikan kode program pernyataan SQL untuk setiap query.
Saya telah menyimpan semua kueri untuk digunakan dalam database sebagai program yang disimpan sebelumnya. Yang utama adalah sebagai berikut:
(1) Kueri artikel berdasarkan ID:
PILIH tabel topik. Judul SEBAGAI nama topik, daftar Kanban. Daftar isi.*
DARI tabel topik INNER JOIN (tabel konten INNER JOIN daftar kanban PADA tabel konten.kanban ID = daftar kanban.ID) PADA tabel topik.ID = tabel konten.ID topik
WHERE (((content table.ID)=[articleid]));
(2) Permintaan kata sandi moderator:
PILIH daftar Kanban.Pemilik papan, tabel penulis.Kata Sandi
DARI tabel penulis INNER GABUNG daftar kanban PADA tabel penulis.ID = pemilik kanban list.board
WHERE (((kanban list.ID)=[id];
(3) Kueri penulis:
SELECT tabel penulis.*
DARI tabel penulis
WHERE (((author table.ID)=[id]));
(4) Daftar artikel yang diterbitkan:
SELECT [Content table].[ID], [Content table].[Judul], [Content table].[Author ID]. ] AS penulis, [daftar isi].[tanggal], [daftar isi].[rekomendasi], [daftar isi].[jumlah klik] AS jumlah klik.
DARI daftar isi
WHERE ((([Daftar Isi].[ID Topik])=[Indeks Topik]) And (([Daftar Isi].[Diterbitkan])=Benar)
)
; id, tabel topik.ID SEBAGAI id topik, tabel topik.judul SEBAGAI topik, tabel konten.judul AS judul, tabel konten.ID penulis SEBAGAI penulis, tabel konten.tanggal AS tanggal
DARI tabel topik INNER GABUNG tabel konten PADA tabel topik.ID = tabel konten.ID topik
WHERE (((Content table. Publish)=False) AND ((Content table. Kanban ID)=[boardid]));
(5) Daftar topik:
SELECT Topic table.*, Daftar Kanban
DARI daftar kanban DALAM GABUNG tabel topik PADA daftar kanban.ID = topik tabel.kanban
WHERE (((topic table.kanban)=[boardIndex]));
Ada juga beberapa pertanyaan, karena kebanyakan mirip, saya tidak akan mencantumkannya satu per satu.
Dalam pernyataan kueri di atas, Anda dapat melihat beberapa hal yang dikelilingi oleh "[" dan "]", yang merupakan parameter kueri. Nilai parameter perlu diberikan selama eksekusi, dan kemudian nilai parameter dimasukkan ke dalam pernyataan kueri sebelum dapat dieksekusi. Hal lain yang perlu diperhatikan adalah ketika membuat kueri INNER JOIN tersebut, Anda perlu menambahkan hubungan antar tabel ke tampilan desain, jika tidak, pernyataan kueri INNER JOIN tidak dapat dibuat secara otomatis.
Pada titik ini, desain database selesai, dan pekerjaan selanjutnya adalah ASP.
2. Konstruksi
1. Untuk membuat formulir utama
, Anda harus terlebih dahulu menyediakan formulir yang memungkinkan netizen memasukkan informasi pendaftaran.Ini adalah konten HTML, dan kesampingkan.Mari kita lihat lebih dekat skrip ASP yang mengimplementasikan pendaftaran.
(1) Ubah tanda kutip tunggal pada keterangan menjadi dua tanda kutip tunggal, serta tambahkan tanda kutip tunggal sebelum dan sesudahnya
Fungsi SqlStr(data)
SqlStr = "'" & Ganti( data,"'", "''" ) & "'"
Fungsi Akhir
: Ini adalah fungsi khusus yang digunakan untuk mengubah tanda kutip tunggal (') pada input pengguna menjadi dua tanda kutip tunggal (''). Di ASP, sebuah string diapit oleh tanda kutip ganda, jadi tanda "'" di atas mewakili string yang hanya memiliki satu tanda kutip tunggal. Alasan mengapa Anda perlu mengganti satu tanda kutip dengan dua tanda kutip tunggal adalah karena dalam pernyataan SQL, tanda kutip tunggal digunakan untuk mewakili variabel. Untuk menghindari kebingungan, tanda kutip tunggal dalam string harus diwakili oleh dua tanda kutip tunggal. Semua masukan pengguna harus tertanam dalam pernyataan SQL sebagai variabel, jadi fungsi ini sangat penting.
(2) Persiapan penyimpanan
id=Permintaan("id")
kata sandi=Permintaan("kata sandi")
nama panggilan=Permintaan("nama panggilan")
email=Permintaan("email")
jenis kelamin=permintaan("jenis kelamin")
Catatan: Konten dari formulir masukan pengguna tidak perlu disimpan ke dalam variabel, tetapi membuatnya lebih mudah untuk dibaca dan ditulis.
jika Permintaan("nama")=""maka nama=" " lain nama=permintaan("nama")
if Request("phone")=""then phone=" " else phone=request("phone")
Karena isi ini tidak wajib diisi, untuk mencegah pengguna tidak memasukkan apa pun dan menyebabkan kesalahan operasi database , itu harus Ganti bidang yang tidak terisi dengan spasi.
(3) Membangun koneksi
Setel samb = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft AccessDriver (*.mdb)};dbq=" & Server.MapPath("bbssystem.mdb")
Catatan: Bagian ini untuk membuat koneksi database Di bagian ini Satu-satunya hal yang perlu diperhatikan adalah penerapan fungsi Server.MapPath. Secara umum, setiap kali direktori tertentu terlibat, jangan gunakan nama direktori secara langsung, namun gunakan fungsi Server.MapPath sebagai gantinya. Memanfaatkan fungsi seperti Server.MapPath dan Request.ServerVariables() dengan baik dapat membuat aplikasi WEB Anda lebih portabel.
Set cmd = Server.CreateObject("ADODB.Command")
(4) Tanyakan apakah pembuatnya sudah ada
Setel cmd.ActiveConnection = samb
cmd.CommandText = "Penulis Kueri"
ReDim param(0) 'Deklarasikan array parameter
param(0) = CStr(id) ' Cint tidak dapat diabaikan
Set rs = cmd.Execute(,param)
Catatan: Bagian ini digunakan untuk menjalankan program yang disimpan. Ada banyak cara untuk mengeksekusi query di ADO, tapi untuk prosedur tersimpan Anda hanya bisa menggunakan objek Command. Pertama, buat objek Command bernama cmd, lalu atur objek koneksi koneksi ke properti ActiveConnection dari objek cmd, atur nama kueri yang akan dieksekusi "Query Author" ke properti CommandText, lalu tetapkan nilai ke properti parameter kueri. Kami mendeklarasikan parameter array param(0), karena hanya ada satu parameter dalam query "Query Author", sehingga array hanya memiliki satu komponen. Secara umum, jika ada beberapa parameter dalam suatu query, array parameter dengan jumlah komponen yang sesuai harus dideklarasikan. Dan urutan kemunculan parameter sesuai dengan urutan komponen dalam array. Dalam proses penggunaan kueri parameter, perhatian khusus harus diberikan pada fakta bahwa jenis parameter harus benar-benar cocok, jika tidak maka akan terjadi kesalahan, sehingga fungsi konversi tipe CStr() di atas sangat diperlukan.
jika tidak (rs.eof atau rs.bof) maka
respon.tulis "Error, nomor ID yang Anda masukkan sudah terisi, silakan coba yang lain!"
kalau tidak
sql = "Masukkan Ke dalam tabel penulis (id, nama panggilan, email, kata sandi, nama, sekolah, jurusan, jenis kelamin, nomor telepon) Nilai("
sql = sql & SqlStr(id) & ","
sql = sql & SqlStr(nama panggilan) & ","
sql = sql & SqlStr(email) & ","
sql = sql & SqlStr(kata sandi) & ","
sql = sql & SqlStr(nama) & ",&", "
sql = sql & SqlStr(jenis kelamin) & ","
sql = sql & SqlStr(telepon) & ")"
conn.Execute sql
menggunakan pernyataan SQL Insert untuk memasukkan data ke dalam database. Sebenarnya, query ini juga bisa dibuat menjadi program yang sudah disimpan sebelumnya dan ditempatkan di database. Saya agak malas :-) Namun, sebagai perbandingan, Anda juga bisa melihat manfaat dari program yang sudah disimpan sebelumnya merepotkan untuk menulis kueri selama eksekusi.
2. Bangun modul tampilan artikel.
Seperti disebutkan sebelumnya, artikel tertentu termasuk dalam papan buletin dan isi utama. Oleh karena itu, saat menampilkan artikel, Anda harus menelusuri dua halaman daftar papan buletin dan daftar subjek sebelum Anda bisa mendapatkan daftar artikel dengan topik tertentu.
(1) Halaman tampilan daftar papan:
<html>
<kepala>
<judul>Daftar Kanban</judul>
<meta http-equiv="Jenis-Konten"content="text/html; charset=GB2312">
</head>
(2) Buka koneksi dan tampilkan daftar kanban
< %Set samb. = Server.CreateObject("ADODB.Connection")
samb.Buka "driver={Microsoft AccessDriver (*.mdb)};dbq=" & Server.MapPath("bbssystem.mdb")
sql = "pilih * dari daftar Kanban"
setel rs=sambungan.eksekusi(sql)
%>
Catatan: Kueri SQL sederhana mengembalikan semua informasi tentang papan kanban ke kumpulan catatan RS. Tugas selanjutnya adalah menampilkan konten yang direkam dan membuat tautan untuk menampilkan topik papan pada nama papan yang sesuai.
<tubuh bgcolor="#FFFFFF">
< h2 align="center">Daftar Kanban</h2>
<lebar tabel="60%" border="0"cellspacing="0" cellpadding="0"align="center">
<tr bgcolor="#FFFFCC">
< td height="35" width="25%">Nama papan pindai</td>
<td height="35" width="21%">Moderator</td>
<td height="35" width="23%">Jumlah topik</td>
<td height="35" width="31%">Login moderator</td>
</tr>
Catatan: Bagian ini untuk menampilkan judul setiap kolom dalam tabel. Di sini saya tidak menggunakan fungsi terpadu untuk menampilkan isi catatan RS, karena ini memungkinkan kontrol lebih besar terhadap tampilan dan gaya tabel. . Penggunaan Meskipun agak rumit untuk bangun, namun lebih fleksibel.
< %
Mengerjakan
papanid=rs("id")
nama papan=rs("nama")
boardmanager=rs("Pemilik Dewan")
respon.write "<tr><td><a href=qBoard.asp?boardid="& boardid& "&boardname=" & boardname& ">" & boardname &"< /a>< /td>"
Catatan: Baris ini adalah Yang penting, ketika Anda mengklik nama masing-masing papan, Anda dapat terhubung ke halaman yang menampilkan tema papan tersebut. Kode programnya terlihat agak rumit. Saya akan menguraikannya dan menjelaskannya kepada Anda, dan Anda akan mengerti. Setelah mengklik, browser meminta halaman qBoard.asp dengan parameter boardid, yang mewakili nomor ID papan yang akan ditampilkan. Tanda tanya (?) digunakan untuk memisahkan halaman permintaan dan parameter. Boardid adalah variabel yang ditetapkan sebelumnya, yang berisi nomor ID dari papan yang bersangkutan. Koneksi ini juga berisi parameter boardname lain, yang digunakan untuk meneruskan nama board ke halaman qBoard.asp. Gunakan "&" untuk memisahkan beberapa parameter. Parameter ini tidak diperlukan. Parameter ini diteruskan untuk menghindari penggunaan boardid lagi untuk menanyakan nama papan di qBorad.asp. Secara umum, operasi database harus digunakan sesedikit mungkin, yang dapat meningkatkan kinerja halaman ASP. Karena pernyataan Response.Write menggunakan string sebagai parameter, karakter koneksi "&" digunakan antara string dan variabel di atas. Hasil akhir penjelasan halaman ASP seharusnya seperti ini
<td>< a href=qBoard.asp?boardid=1&boardname=Papan Sistem>Papan Sistem</a><td>.
respon.tulis "< td>< a href=qAuthor.asp?author="&boardmanager & ">" &boardmanager & "< /a></td>"
respon.tulis "< td>" &rs("jumlah topik") & "< /td>"
respon.write "< td>< a href=managerlogin.asp?boardid="&boardid & ">Pemrosesan papan< /a></td>< /tr>"
Catatan: Dalam tabel ini, selain koneksi Menampilkan konten tema kanban, ada juga bagian kueri mosaik dan bagian pemrosesan layanan papan. Kueri moderator dapat diimplementasikan melalui qAuthor.asp. Ini hanya mengambil informasi penulis dari database dan menampilkannya. Dikatakan. Pemrosesan papan ditangani oleh halaman managerlogin.asp. Ini termasuk dalam modul review artikel, yang akan saya jelaskan secara detail nanti.
rs.movenext
loop sampai rs.eof
%>
Catatan: Melalui perulangan do..., semua pesan dalam kumpulan data ditampilkan.
</meja>
<div align="center"><br>
Klik pada nama papan untuk mendapatkan daftar topik, klik pada nama pemilik papan untuk melihat pesan pemilik papan
</div>
</badan>
</html>
< %
atur rs=tidak ada
samb.tutup
setel samb=tidak ada
%>
(3) Buat halaman qBaord.asp:
< %
boardid=request("boardid") 'Dapatkan nomor ID papan yang diteruskan dari halaman sebelumnya
Setel samb = Server.CreateObject("ADODB.Connection")
samb.Buka "driver={Microsoft AccessDriver (*.mdb)};dbq=" & Server.MapPath("bbssystem.mdb")
Setel cmd = Server.CreateObject("ADODB.Command")
Setel cmd.ActiveConnection = samb
cmd.CommandText = "Daftar Topik"
ReDim param(0) //Catatan: mendeklarasikan array parameter
param(0) = CLng(boardid)//Catatan: CLng tidak dapat diabaikan
Setel rs = cmd.Eksekusi( ,param)
%>
<html>
<kepala>
<judul>Daftar topik</judul>
<meta http-equiv="Jenis-Konten"content="text/html; charset=GB2312">
</kepala>
<tubuh bgcolor="#FFFFFF">
< h1 align="center"><%=rs("nama kanban")%>Daftar tema papan</h1>
<lebar tabel="80%" border="0"cellspacing="0" cellpadding="0"align="center">
<tr bgcolor="#FFFFCC">
<td width="89%" height="21">Tema</td>
<td width="11%" height="21">Jumlah artikel</td>
</tr>
< %
Mengerjakan
topikid=rs("id")
nama topik=rs("judul")
jumlah=rs("jumlah artikel")
respon.tulis "< tr>< td><a href=qtopic.asp?topicid=" & topicid& "&boardname=" & boardname& ">" & nama topik &"< /a>< /td>"
respon.tulis "< td>" &jumlah & "< /td>< /tr>"
rs.movenext
loop sampai rs.eof
%>
</meja>
</badan>
</html>
Catatan: qBoard.asp mencantumkan semua topik di forum tertentu. Setelah mengklik nama topik, Anda akan masuk ke daftar artikel topik yang sesuai. Daftar ini diimplementasikan oleh skrip ASP qTopic.asp. Kode program Qtopic.asp pada intinya hampir sama dengan qBoard.asp, namun terdapat perbedaan pada detailnya masing-masing, dan saya tidak akan membahas lebih detailnya disini.
(4) Setelah mengklik judul artikel di daftar artikel, Anda akan masuk ke halaman penelusuran konten artikel article.asp:
< %
articleid=permintaan("articleid")
Setel samb = Server.CreateObject("ADODB.Connection")
samb.Buka "driver={Microsoft AccessDriver(*.mdb)};dbq=" & Server.MapPath("bbssystem.mdb")
Setel cmd = Server.CreateObject("ADODB.Command")
Setel cmd.ActiveConnection = samb
cmd.CommandText = "Kueri artikel berdasarkan id"
ReDim param(0) 'Deklarasi
param(0) = CLng(articleid) ' Cint tidak dapat diabaikan
Setel rs = cmd.Eksekusi( ,param)
penulis=rs("pengotorisasi")
judul=rs("judul")
data=rs("Tanggal")
rate=rs("gelar yang direkomendasikan")
boardid=rs("kanbanid")
topikid=rs("topikid")
nama papan=rs("nama papan")
nama topik=rs("nama topik")
konten=rs("isi")
konten=ganti(konten,vbCrlf,"</p><p>")
content="< p>" & content& "< /p>"
Catatan: Ini adalah sesuatu yang perlu diperhatikan. Bidang konten berisi teks jenis memo, yang dapat berisi karakter baris baru. Dalam tampilan HTML, karakter baris baru (yaitu konstanta vbCrlf) harus diganti dengan simbol paragraf HTML. Dengan cara ini, hubungan antar paragraf tidak akan mengganggu format masukan aslinya. Jika Anda ingin mendesain lebih baik, Anda dapat menggunakan CSS untuk mereset tag <P> dan mengatur atribut test-indentnya untuk mendapatkan spasi di awal setiap paragraf.
(5) Tambahkan satu ke jumlah klik
sql="Perbarui tabel konten Tetapkan jumlah klik=jumlah klik+1Di Mana ID=" & articleid
conn.execute sql
Catatan: Ada pernyataan SQL di sini. Saat halaman ditampilkan, bidang jumlah klik di tabel terkait akan bertambah satu, sehingga jumlah tampilan artikel dapat dihitung dan diberi peringkat secara berurutan. Saat menjalankan pernyataan article, saya menemukan bahwa: Awalnya dalam pernyataan SQL, nama variabel yang disematkan harus dibedakan dengan tanda kutip tunggal, tetapi saya tidak menambahkan tanda kutip tunggal ke variabel articleid di sini, dan itu benar-benar lolos, dan saya Menulis seperti ini selalu menyebabkan kesalahan di masa lalu. Saya ingin tahu apakah ini karena ADO versi baru.
atur cmd=tidak ada
%>
<html>
<kepala>
<judul>Dokumen Tanpa Judul</judul>
<meta http-equiv="Jenis-Konten"content="text/html; charset=GB2312">
</kepala>
<tubuh bgcolor="#E9E9E4">
<lebar tabel="89%" border="0"cellspacing="0" cellpadding="0"align="center">
<tr bgcolor="#CCCCCC">
<td>Penulis:<font color="#FF3366"><a href="qauthor.asp?author=< %=author%>">< %=author%> < /a>< /font>Tanggal terbit: < warna font="#FF3333"><%=data%>< /font>
Papan Kanban:< font color="#FF3333"><a href="qboard.asp?boardid=< %=boardid%>">< %=boardname%>< /a>< /font>Rekomendasi pemilik dewan:< warna font="#FF3333">#rate#</font>< /td>
</tr>
<tr bgcolor="#CCCCCC">
<td>Judul:<warna font="#FF3333"><%=judul%>
Topik: < a href="qtopic.asp?topicid=<%=topicid%>"> < %=topicname%>< /a> < /font>< /td>
</tr>
<tr valign="atas">
<td>
<jam>
< font color="#FF3366">Isi artikel: < /font>< br>
<br>
< warna font=biru>< %response.writecontent%>< /font>
<br>
<br>
</td>
</tr>
<tr valign="atas">
<td tinggi="18">
<lebar tabel="50%" border="0"cellspacing="0" cellpadding="0"align="right" bgcolor="#CCCCCC">
<tr>
< td lebar="0%"> < /td>
<td width="65%">Tentang topik ini<a href="submit.asp?topicid=< %=topicid%>&boardid=<%=boardid%>">Tinggalkan komentar< /a></td>
Koneksi ini memungkinkan netizen untuk mengutarakan pendapatnya sendiri tentang topik komentar ini. Inilah yang akan dibicarakan pada modul selanjutnya, jadi saya tidak akan menyebutkannya di sini.
</tr>
</meja>
</td>
</tr>
</meja>
</badan>
</html>
< %
atur rs=tidak ada
samb.tutup
setel samb=tidak ada
%>
Sampai di sini, bagian tampilan artikel juga sudah selesai. Mari kita lihat bagaimana bagian penerbitan artikel diterapkan.
3. Buatlah bagian penerbitan artikel.
Modul penerbitan artikel hanya memiliki dua halaman, satu adalah submit.asp yang disebutkan sebelumnya, yang digunakan untuk menyediakan formulir input, dan yang lainnya adalah subresult.asp, yang digunakan untuk memproses formulir masukan. Halaman sebelumnya sangat sederhana. Pada dasarnya adalah formulir HTML. Tidak banyak yang perlu dibicarakan. Mari kita lihat konten subresult.asp:
<html>
<kepala>
<judul>Terbitkan artikel</judul>
<meta http-equiv="Jenis-Konten"content="text/html; charset=GB2312">
</kepala>
<tubuh bgcolor="#FFFFFF">
< %
penulis=permintaan("penulis")
kata sandi=permintaan("kata sandi")
topicid=permintaan("topicid")
boardid=permintaan("boardid")
konten=permintaan("isi")
title=request("title")
Catatan: Bagian ini mengambil isi tabel yang dikirimkan di submit.asp dan memasukkannya ke dalam variabel yang sesuai.
<html>
<kepala>
<judul>Terbitkan artikel</judul>
<meta http-equiv="Jenis-Konten"content="text/html; charset=GB2312">
</kepala>
<tubuh bgcolor="#FFFFFF">
< %
penulis=permintaan("penulis")
kata sandi=permintaan("kata sandi")
topicid=permintaan("topicid")
boardid=permintaan("boardid")
konten=permintaan("isi")
title=request("title")
(1) Menanyakan apakah penulisnya ada
cmd.CommandText = "pilih * dari tabel penulis di mana id='" & penulis &"'"
Setel rs = cmd.Execute()
(2) Periksa izin
cmd.CommandText = "pilih * dari tabel penulis di mana id='" & penulis &"'"
Set rs = cmd.Execute()
Catatan: Bagian ini memeriksa izin penulis dan menangani kesalahan jika akun tidak ada atau kata sandi salah. Di sini Anda dapat melihat penggunaan respon.end, yang digunakan untuk mengakhiri skrip ASP saat ini. Dikombinasikan dengan pernyataan if, kesalahan yang diharapkan dalam program dapat ditangani. Dalam aplikasi WEB yang baik, penanganan kesalahan sangat penting.
(3) Ubah tanda kutip tunggal pada keterangan menjadi dua tanda kutip tunggal, serta tambahkan tanda kutip tunggal sebelum dan sesudahnya
Fungsi SqlStr(data)
SqlStr = "'" & Ganti( data,"'", "''" ) & "'"
Fungsi Akhir
'Menulis ke database
sql = "Masukkan ke dalam tabel konten (id papan, id topik, id penulis, judul, konten)Nilai( "
sql = sql & SqlStr(topikid) & ","
sql = sql & SqlStr(papan) & ","
sql = sql & SqlStr(penulis) & ","
sql = sql & SqlStr(judul) & ","
sql = sql & SqlStr(konten) & ")"
samb.Jalankan sql
%>
<h2>Artikel telah dikirim ke database dan dapat dilihat setelah moderator meninjaunya <h2>
</badan>
</html>
Pada tahap ini, artikel telah disimpan di database. Namun tidak dapat langsung ditampilkan dan memerlukan persetujuan moderator. Selanjutnya, mari kita lihat bagian manajemen forum.
4. Bagian pengurus forum
merupakan inti dari forum kami, namun tidak ada yang istimewa dalam pelaksanaannya. Itu masih hal lama yang sama: pemrosesan formulir, kueri basis data, dan penggunaan ASP untuk menggabungkannya secara organik. Saat memasuki mode peninjauan artikel (pemrosesan dewan yang disebutkan sebelumnya), hal terpenting adalah memverifikasi identitas moderator. Mari kita lihat halaman login moderator:
< %
boardid=permintaan("boardid")
(Catatan: Boardid dilewatkan melalui koneksi ke halaman ini dan merupakan ID board yang akan diproses. Hanya melalui ini kita dapat mengetahui board mana yang sedang diproses.)
Setel samb = erver.CreateObject("ADODB.Connection")
samb.Buka "driver={Microsoft AccessDriver (*.mdb)};dbq=" & Server.MapPath("bbssystem.mdb")
Setel cmd = Server.CreateObject("ADODB.Command")
Setel cmd.ActiveConnection = samb
cmd.CommandText = "Permintaan kata sandi moderator"
Parameter Redupkan Ulang(0)
param(0) = CLng(boardid) //Catatan: CLng tidak dapat diabaikan
Setel rs = cmd.Eksekusi( ,param)
boardmanager=rs("Pemilik Dewan")
atur cmd=tidak ada
%>
<html>
<kepala>
<judul>Dokumen Tanpa Judul</judul>
<meta http-equiv="Jenis-Konten"content="text/html; charset=GB2312">
</kepala>
<tubuh bgcolor="#FFFFFF">
< p>Hanya pemilik dewan < %=boardmanager%> yang dapat memasuki tempat ini </p>
<p>Silakan masukkan kata sandi verifikasi, dan untuk menjaga otentikasi, silakan aktifkan Cookie browser Anda. </p>
<metode formulir="post" action="managerloginrest.asp">
<input type="kata sandi" nama="kata sandi">
< tipe masukan="tersembunyi" nama="boardid"value=< %=boardid%>>
<input type="kirim" nama="Kirim"nilai="OK">
</bentuk>
Catatan: Halaman ini hanya untuk login. Setelah Mozhu memasukkan password, tidak dapat melakukan verifikasi, melainkan pekerjaan verifikasi akan dilakukan di halaman berikutnya. Sebenarnya pekerjaan input dan verifikasi password dapat diselesaikan dalam satu halaman, namun penataan struktural kode program agak merepotkan.
</badan>
</html>
< %
atur rs=tidak ada
samb.tutup
setel samb=tidak ada
%>
Sekarang ID moderator dan kata sandi yang dimasukkan telah diperoleh, berikut ini adalah pekerjaan verifikasi managerloginrest.asp. Ia menerima isi formulir dalam file di atas dan melakukan pemrosesan terkait:
< %
respon.buffer=true
Catatan: Atur buffer untuk mengizinkan penggunaan. Secara umum, item ini harus ditambahkan ke header setiap halaman ASP, yang dapat meningkatkan kinerja halaman ASP. Setelah membuka buffer, ada beberapa penggunaan khusus yang sesuai di ASP, yang akan disebutkan nanti.
boardid=permintaan("boardid")
kata sandi=permintaan("kata sandi")
Setel samb = Server.CreateObject("ADODB.Connection")
samb.Buka "driver={Microsoft AccessDriver (*.mdb)};dbq=" & Server.MapPath("bbssystem.mdb")
Setel cmd = Server.CreateObject("ADODB.Command")
Setel cmd.ActiveConnection = samb
cmd.CommandText = "Permintaan kata sandi moderator"
ReDim param(0) 'Deklarasi
param(0) = CLng(boardid)//Catatan: CLng tidak dapat diabaikan
Setel rs = cmd.Eksekusi( ,param)
boardmanager=rs("Pemilik Dewan")
jika kata sandi<>rs("kata sandi") maka %>
<html>
<kepala>
<judul>Otentikasi</judul>
<meta http-equiv="Jenis-Konten"content="text/html; charset=GB2312">
</kepala>
<tubuh bgcolor="#FFFFFF">
Kata sandi salah</body>
</html>
< %
kalau tidak
session("beenthere")=boarded
Catatan: Menggunakan Sesi untuk menjaga identitas moderator mengharuskan cookie browser klien diaktifkan. Karena Sesi diimplementasikan melalui cookie. Di sini, tetapkan ID papan ke variabel Sesi di sana, yang menunjukkan bahwa moderator telah melewati otentikasi identitas. Di setiap halaman pemrosesan versi berikutnya, periksa apakah sudah ada yang cocok dengan ID versi yang sesuai.
url="boardmanager.asp?boardid="& boardid
url Response.redirect
: Ketika saya pertama kali mempelajari ASP, saya selalu bingung dengan metode respon.redirect, dan saya tidak puas dengan itu. Sebelum menggunakannya, Anda harus meneruskan respon.buffer=true agar halaman ASP menggunakan buffer. Saat ini, sebelum ASP diinterpretasikan ke dalam kode program HTML, ASP ditempatkan di buffer dan tidak dikirim langsung ke browser klien. Hal lain yang harus diketahui adalah: sebelum menggunakan respon.redirect, tidak ada kode program HTML sebenarnya yang dapat dikirim ke browser klien, jika tidak maka akan terjadi kesalahan. Tentu saja, ada solusinya. Jika kode program HTML telah ditafsirkan sebelum respon.redirect, Anda dapat menggunakan metode respon.clear untuk menghapus buffer, dan kemudian menggunakannya untuk mengatur ulang.
berakhir jika
%>
Catatan: Berikut ini adalah target reset setelah otentikasi di atas dilewati: boardmanager.asp. Ini akan mencantumkan semua artikel yang telah diproses.
< %
boardid=permintaan("boardid")
if session("beenthere")<>boardidthen respon.redirect "forums.asp"
Catatan: Di sinilah identitas moderator diverifikasi, karena telah ditandai di browser Bamboo melalui cookie, dan sekarang kita dapat meneruskan seesion Mari kita identifikasi moderatornya. Jika tag tidak cocok, maka akan kembali ke halaman login asli melalui respon.redirect. Jika cookie browser moderator tidak diaktifkan, nilai seesion ("berada di sana") akan kosong, dan halaman ini juga tidak dapat diakses.
Setel samb = Server.CreateObject("ADODB.Connection")
samb.Buka "driver={Microsoft AccessDriver (*.mdb)};dbq=" & Server.MapPath("bbssystem.mdb")
Setel cmd = Server.CreateObject("ADODB.Command")
Setel cmd.ActiveConnection = samb
sql="pilih nama dari daftar papan Whereid=" & boardid
setel rs=sambungan.eksekusi(sql)
nama papan=rs("nama")
cmd.commandtext="Daftar artikel tidak diterbitkan"
Parameter Redupkan Ulang(0)
param(0) = CLng(boardid)//Catatan: Clng tidak dapat diabaikan
Setel rs = cmd.Eksekusi( ,param)
atur cmd=tidak ada
%>
<html>
<kepala>
<judul>Pemrosesan publikasi</judul>
< Meta http-equiV = "tipe konten" content = "text/html; charset = gb2312">
</kepala>
< Tubuh bgcolor = "#ffffff" >
< h1 align = "center" ><%= boardname%> manajemen publik < /h1 >
< jam >
< %
Jika rs.eof atau rs.bof maka respons.write "< h2 > Tidak ada artikel untuk memproses </h2 >"
respons.end
%>
CATATAN: Jika tidak ada artikel baru yang diposting oleh netizens, ini akan memberikan prompt yang sesuai dan menggunakan respons.end untuk mengakhiri tampilan halaman ini.
< Lebar tabel = "90%" border = "0" cellspacing = "0" cellpadding = "0" align = "center" >
< tr bgcolor = "#ffffcc" >
< Lebar TD = "40%" Tinggi = "20" > Tema </TD >
< Lebar TD = "40%" Tinggi = "20" > Judul Artikel </TD >
< Lebar TD = "8%" Tinggi = "20" > Penulis </TD >
< Lebar TD = "12%" Tinggi = "20" > Tanggal </td >
</tr>
< %
Mengerjakan
TopicId = RS ("TopicId")
ArtictID = RS ("ArtictID")
Data = RS ("Tanggal")
DataStr = cstr (tahun (data)) & "-" & cstr (bulan (data)) & "-" & cstr (hari (data))
penulis = rs ("penulis")
Articlename = RS ("Judul")
TopicName = RS ("Topik")
response.write "< tr >< td >< a href = qtopic.asp? topicid =" & topicid & ">" & topicname & "< /a >< /td >"
response.write "< td >< a href = manageArticle.asp? ArtictId =" & ArtictId & "& boardid =" & boardid & ">" & articlename & "< /a >< /td >"
response.write "< td >< a href = qauthor.asp? penulis =" & penulis & ">" & penulis & "< /a >< /td >"
response.write "< td >" & datastr & "< /td >< /tr >"
rs.movenext
Lingkarkan sampai rs.eof
%>
</meja>
</html >
< %
atur rs=tidak ada
Conn.Close
atur conn = tidak ada
%>
</Body >
Saat Anda mengklik tautan artikel yang sesuai, Anda akan memasukkan Artikel Pemrosesan PROCHERING PROLAGARTICLE.asp:
< %
ArticleId = request ("ArtictId")
boardid = request ("boardid")
Jika sesi ("beenthere") <> boardidthen response.redirect "forums.asp"
Set Conn = Server.CreateObject ("AdodB.Connection")
conn.open "driver = {microsoft accessDriver (*.mdb)}; dbq =" & server.mappath ("bbssystem.mdb")
Setel cmd = server.createObject ("adodb.command")
Atur cmd.activeConnection = conn
cmd.CommandText = "Artikel kueri dengan ID"
Param redim (0)
param (0) = clng (artikelid) // Catatan: clng tidak dapat diabaikan
Set RS = CMD.Execute (, param)
penulis = rs ("authorid")
title = rs ("judul")
Data = RS ("Tanggal")
rate = rs ("Derek yang Direkomendasikan")
boardid = rs ("kanbanid")
TopicId = RS ("TopicID")
boardName = rs ("nama papan")
TopicName = RS ("Nama Topik")
konten = rs ("konten")
konten = ganti (konten, vbcrlf, "</p >< p >")
konten = "< p >" & konten & "< /p >"
atur cmd = tidak ada
%>
< html >
<kepala>
< Judul > Dokumen Untitled </Judul >
< Meta http-equiV = "tipe konten" content = "text/html; charset = gb2312">
</kepala>
< Tubuh bgcolor = "#e9e9e4" >
< Lebar tabel = "89%" border = "0" cellspacing = "0" cellpadding = "0" align = "center" >
< tr bgcolor = "#cccccc" >
< TD > Penulis: < Warna font = "#ff3366" >< a href = "qauthor.asp? Penulis = < %= penulis %>" >< %= penulis %> < /a /font > Tanggal yang diterbitkan: < Font Color = "#FF3333" ><%= Data%>< /Font >
Papan Kanban: < Warna font = "#ff3333" ">< a href =" qboard.asp? Boardid = < %= boardid %> ">< %= boardname %>< /a /font > Rekomendasi pemilik dewan: < font color = "#ff3333">#rate#< /font >< /td >
</tr>
< tr bgcolor = "#cccccc" >
< TD > Judul: < Font Color = "#FF3333" ><%= Judul%>
Topik: < a href = "qtopic.asp? Topicid = <%= TopicId%>" > <%= TopicName%>< /a > < /font >< /td >
</tr>
< tr valign = "atas" >
< td >
< jam >
< font color = "#ff3366" > konten artikel: < /font >< br >
<br>
< warna font = biru >< %respons.writecontent %>< /font >
<br>
< jam >
</td>
</tr>
< tr valign = "atas" >
< Metode form = "POST" ACTION = "MANAGERESULT.ASP" >
< Tinggi TD = "18" >
< Lebar tabel = "100%" border = "1" cellspacing = "1" cellpadding = "1" >
<tr>
< Lebar TD = "29%">
< Div Align = "kanan" >
< Jenis input = "tersembunyi" nama = "boardid" value = "< %= boardid %>" >
< Jenis Input = "Tersembunyi" Nama = "TopicId" Value = "< %= TopicId %>" >
< Jenis Input = "Tersembunyi" Nama = "ArtictId" Value = "< %= ArtictId %>" >
Pemrosesan Artikel: < /Div >
</td>
< Lebar TD = "12%" BorderColor = "#006666"> Hapus:
< Jenis Input = "Radio" Nama = "Kelola" Nilai = 1 >
</td>
< Lebar TD = "30%" BorderColor = "#006666"> Diposting oleh:
< Jenis input = "radio" name = "kelola" nilai = 2 >
Level Rekomendasi < Pilih Nama = "Pilih" >
< Nilai opsi = "1" > 1 </opsi >
< Nilai opsi = "2" > 2 </opsi >
< Nilai opsi = "3" Dipilih > 3 </Opsi >
< Nilai opsi = "4" > 4 </opsi >
< Nilai opsi = "5" > 5 </opsi >
</Pilih >
</td>
< Lebar TD = "20%" BorderColor = "#006666"> Proses nanti:
< Jenis Input = "Radio" Nama = "Kelola" Nilai = 3 >
</td>
< Lebar TD = "9%" >
< Jenis Input = "Kirim" Nama = "Kirim" Nilai = "OK" >
</td>
</tr>
</meja>
</td>
</bentuk>
</tr>
</meja>
</badan>
</html >
< %
atur rs=tidak ada
Conn.Close
atur conn = tidak ada
%>
Catatan: Halaman ini pada dasarnya sama dengan artikel. APS dalam modul tampilan artikel.
Selanjutnya, kita perlu memodifikasi bagian database yang sesuai sesuai dengan proses pemrosesan moderator.
<%respons.buffer = true%>
< html >
<kepala>
< Judul > Pemrosesan Artikel </Judul >
< Meta http-equiV = "tipe konten" content = "text/html; charset = gb2312">
</kepala>
< Tubuh bgcolor = "#e9e9e4" >
< %
ArticleId = request ("ArtictId")
boardid = request ("boardid")
TopicId = request ("TopicId")
kelola = permintaan ("kelola")
'Terima konten formulir
response.write kelola 'show buzhu id
Jika sesi ("beenthere") <> boardidthen response.redirect "forums.asp"
Set Conn = Server.CreateObject ("AdodB.Connection")
conn.open "driver = {microsoft accessDriver (*.mdb)}; dbq =" & server.mappath ("bbssystem.mdb")
Menurut operasi moderator pada halaman sebelumnya, pemrosesan yang sesuai akan dilakukan di bawah ini.
Jika clng (permintaan ("kelola")) = 1 lalu
sql = "hapus dari tabel konten di mana id =" & artikel
Conn.Execute SQL
Response.write "< H1 > Artikel telah dihapus </H1 >"
response.write "< a href = > kembali </a>"
elseif clng (permintaan ("kelola")) = 2then
sql = "Perbarui tabel konten set publish = true whereid =" & artikelid
Conn.Execute SQL
sql = "Perbarui Topik Topik Set Jumlah Artikel = Jumlah Artikel+1 Di Mana Id =" & Topikid
Conn.Execute SQL
Response.write "< H1 > Artikel telah diterbitkan </H1 >"
response.write "< a href = > kembali </a>"
kalau tidak
respons.clear
response.redirect "boardManager.asp? boardid =" & boarded
berakhir jika
%>
</badan>
</html >
< %
Conn.Close
atur conn = tidak ada
%>
Setelah langkah -langkah di atas, semua bagian pada dasarnya selesai. Jika Anda ingin dapat menggunakannya, Anda harus melakukan lebih banyak upaya dalam desain tata letak, verifikasi data klien, dll. Tapi itu semua adalah konten HTML dan tidak ada hubungannya dengan ASP, jadi saya tidak akan membahas detailnya di sini.