Kapat

basitte olsa bir forum'un nasıl yazıldıgını herkeze göstermek istiyorum umarım faydalı olacaktır.

dersimize hemen baslıyalım ve forum.mdb isminde bir veritabanı oluşturalım.

veritabanımızda 3 tablo oluşturuyoruz.

Tablolar,Konular,Mesajlar şeklinde olacak.

Konular tablosunun içinde no, konular, açıklama alanlarını tanımlıyoruz..
Mesajlar tablosunda ise no, baslık, mesaj, konu, mno,kategori alanlarını tanımlıyoruz..
Burada konu mesajın hangi konu altına yazıldığını, mno ise yazılan mesajın hangi mesajın altına yazıldığı, bilgilerini içerecek..Boylelikle bir başlık altına yazılan mesajların hepsini çağırmak için mno ları aynı olanları çağıracağız.

Veritabanımızı oluşturduk..Şimdi sıra asp sayfalarımızı oluşturmaya geldi.
Konu_goster.asp ( Forumumuzdaki konuları göstermek için )
Baslik_goster.asp ( Atılan mesajların başlıklarını görüntülemek için )
Mesaj_goster.asp ( Atılan mesajları göstermek için )
Cevap_gonder.asp ( Cevap gönderme formu için )
Cevapgonder.asp ( cevap gönder formundan gelen bilgileri kaydetmek için )
Mesaj_gonder.asp ( Mesaj gönderme formu için )
Mesajgonder.asp ( mesaj gönder formundan gelen bilgileri kaydetmek için )
isimleriyle 7 tane asp dosyası oluşturacağız.Aslında daha az .asp dosyası olabilirdi.Ama anlaşılması daha kolay olsun diye bu sekilde parçalara ayırdık.Gelelim bu asp dosyalarının içeriklerine..Kolaylık olsun diye sadece <body> ile </body> arasına yazacağınız kodları yazacağım..

1-Konu_goster.asp nin içeriği

<%
Dim baglanti
Set baglanti = Server.CreateObject("ADODB.Connection")
baglanti.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &Server.MapPath("/db/ornek.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
sql = " select * from konular"
rs.open sql, baglanti, 1, 3
''Buraya kadar veritabanı bağlantımızı yaptık..
''ve şimdi konularımızı sıralayacağız.
Do While Not rs.eof %>
<A href="baslik_goster.asp?konu=<%=rs("konular")%>"> <%=rs("konular")%> [/url] <%=rs("aciklama")%><BR>
<% rs.movenext
loop
rs.close
set rs = nothing
baglanti.close

set baglanti = nothing

%>

şeklinde bütün konuları sıralıyoruz.Dikkat ettiyseniz querystringle konu ismini baslik_goster.asp ye gönderiyoruz.Bu seçilen konu altındaki başlıkları görüntülemek içindi..

2-Baslik_goster.asp nin içeriği

<%
Dim konu
konu = request.querystring("konu")
''Querystringden hangi konunun seçildiğini öğrendik ve bunu sql satırında aynı konudan olan ''başlıkları seçmek için kullanacağız..
''Database bağlantısını yapıyoruz.
''Fakat bu sefer sql satırımız şöyle olacak..
Dim baglanti
Set baglanti = Server.CreateObject("ADODB.Connection")
baglanti.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &Server.MapPath("/db/ornek.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
Sql = "select * from mesajlar where konu = '"&konu&"' and kategori='mesaj' "
rs.open sql, baglanti, 1, 3
%>
<a href="mesaj_gonder.asp?konu=<%=konu%>">YENI MESAJ GONDER[/url]<BR><BR>
<% Do While Not rs.eof %>
<A href="mesaj_goster.asp?konu=<%=rs("konu")%>&mno=<%=rs("no")%>&baslik=<%=rs("baslik")%>"> <%=rs("baslik")%> [/url] <BR>
<BR>
<% rs.movenext

loop

rs.close
set rs = nothing
baglanti.close

set baglanti = nothing
'' son olarak veritabani baglantimizi kapatiyoruz..
%>

Bu seferde querystingde mno yerine başlik yerine geçen mesajin no sunu gönderiyoruz..Çünkü bize ayni başlik altindaki mesajlari göstermesini istiyoruz..

3-Konu_goster.asp nin içeriği

<%
Dim baglanti
Set baglanti = Server.CreateObject("ADODB.Connection")
baglanti.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &Server.MapPath("/db/ornek.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
sql = " select * from konular"
rs.open sql, baglanti, 1, 3
''Buraya kadar veritabanı bağlantımızı yaptık..
''ve şimdi konularımızı sıralayacağız.
Do While Not rs.eof %>
<A href="baslik_goster.asp?konu=<%=rs("konular")%>"> <%=rs("konular")%> [/url] <%=rs("aciklama")%><BR>
<% rs.movenext
loop
rs.close
set rs = nothing
baglanti.close

set baglanti = nothing

%>

şeklinde bütün konuları sıralıyoruz.Dikkat ettiyseniz querystringle konu ismini baslik_goster.asp ye gönderiyoruz.Bu seçilen konu altındaki başlıkları görüntülemek içindi.

4-Mesaj_gonder.asp nin içeriği

<% Dim konu
konu = request.querystring("konu")
'' mesajı hangi konu altına göndereceğimizi öğrendik
%>
<FORM METHOD=POST ACTION="mesajgonder.asp?konu=<%=konu%>">
baslik : <INPUT TYPE="text" NAME="baslik"><BR><BR>
mesaj : <TEXTAREA NAME="mesaj" ROWS="5" COLS="30"></TEXTAREA><BR><BR>
<INPUT TYPE="submit" value="mesaj gonder">
</FORM>

5-Mesajgonder.asp nin içeriği (formdan gelen bilgileri işleyeceğiz)

<%
Dim basilk, mesaj, konu
baslik = request.form("baslik")
mesaj = request.form("mesaj")
konu = request.querystring("konu")
'' form ve querystringden başlık, mesaj ve konu bilgilerini aldık
Dim baglanti
Set baglanti = Server.CreateObject("ADODB.Connection")
baglanti.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &Server.MapPath("/db/ornek.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from mesajlar"
rs.open sql, baglanti, 1, 3
'' Veritabanı bağlantımızı yaptık
rs.AddNew
rs("baslik") = request.form("baslik")
rs("mesaj") = request.form("mesaj")
rs("konu") = request.querystring("konu")
rs("kategori") = "mesaj"
rs.update
rs.close
set rs = nothing
'' kategori bölümümüzde kaydımızın mesaj mı yoksa cevap mı olduğunu tanımlıyoruz..
'' bilgilerimizi kaydettik ve recordset nesnesini kapattık.
'' Fakar connection nesnesini daha kapatmadık çünkü yukarıda bilgilerimizi kaydederken mno alanımızı doldurmadık. mno alanı eğer gönderilen mesajsa mesajın kendi no`sunu içermek zorunda.Gönderdiğimiz eğer bir cevap olsaydı cevabı hangi mesajın altına yazıyorsak onun no`su mno alanımıza yazılacaktı..
'' mesajımızın no`sunu mno yada işlemek için recordset nesnesini tekrar açıyoruz ve update metoduyla aşağıdaki gibi bilgimizi güncelliyoruz.
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from mesajlar where baslik = '"& baslik &"' and mesaj = '"&mesaj&"' and konu = '"&konu&"'"
rs.open sql, baglanti, 1, 3
rs("mno") = rs("no")
rs.update
rs.close
set rs = nothing
baglanti.close
set baglanti = nothing
''veritabanı bağlantımızı kapatıyoruz..
%>

6-Mesaj_goster.asp nin içeriği

<%
Dim mno, baslik, konu
Konu = request.querystring("konu")
Baslik = request.querystring("baslik")
Mno = request.querystring("mno")

'' database baglanti yapiliyor..
'' sql satirina dikkat

Dim baglanti
Set baglanti = Server.CreateObject("ADODB.Connection")
baglanti.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &Server.MapPath("/db/ornek.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from mesajlar where konu = '"&konu&"' and baslik = '"&baslik&"' and mno = "&mno&""
rs.open sql, baglanti, 1, 3
'' mesajlarımızı seçtik , şimdi gosterelim...
%>
<a href="cevap_gonder.asp?baslik=<%=rs("baslik")%>&mno=<%=rs("mno")%>&konu=<%=rs("konu")%>">
Cevap Gonder[/url]<BR><BR>
<% Do While Not rs.eof %>

<TR>
<TD><%=rs("mesaj")%><BR></td>

</TR>
<%
rs.movenext
loop
%>

Cevabımızı göndermek için querystringde hazırlık yaptık..

7-Cevap_gonder.asp nin içeriği

<%
Dim mno, baslik, konu
Konu = request.querystring("konu")
Baslik = request.querystring("baslik")
Mno = request.querystring("mno")
'' database baglanti yapiliyor..
'' sql satirina dikkat

Dim baglanti
Set baglanti = Server.CreateObject("ADODB.Connection")
baglanti.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &Server.MapPath("/db/ornek.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from mesajlar where konu = '"&konu&"' and baslik = '"&baslik&"' and mno = "&mno&""
rs.open sql, baglanti, 1, 3
%>
<FORM METHOD=POST ACTION="cevapgonder.asp?baslik=<%=baslik%>&konu=<%=konu%>&mno=<%=mno%>">
<B>Cevap Gonderilecek Baslik :</B> <%=baslik%><BR><BR>
<TEXTAREA NAME="cevap" ROWS="5" COLS="30"></TEXTAREA><BR>
<INPUT TYPE="submit" value="cevap gonder">
</FORM>

cevabı yazacağımız bir text area tanımladıktan sonra formun action bölümüne
action="cevapgonder.asp?baslik=<%=baslik%>&konu=<%=baslik%>&mno=<%=mno%>" yazdık..

8-Cevapgonder.asp nin içeriği

<%

Dim baglanti
Set baglanti = Server.CreateObject("ADODB.Connection")
baglanti.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &Server.MapPath("/db/ornek.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from mesajlar"
rs.open sql, baglanti, 1, 3
rs.AddNew
rs("baslik") = request.querystring("baslik")
rs("mesaj") = request.form("cevap")
rs("konu") = request.querystring("konu")
rs("mno") = request.querystring("mno")
rs("kategori") = "cevap"
'' Gönderdiğimiz bilgi cevap olduğu için kategori bölümüne cevap yazdık..
rs.update
rs.close
set rs = nothing
baglanti.close
set baglanti = nothing

Evet genel hatlarıyla bir forum böyle hazırlanıyor.
Umarım fazla karışık gelmemiştir.Su an etrafta dolaşan forumların( snitz vs.)
çoğunun mantığı bu foruma benziyor.İsterseniz mesaj ve cevapları farklı
tablolarda saklayabilirsiniz.
güzelde html kodları yazarsanız emin olun artık göğsünüzü
gere gere kendi forumunuzu kullanabilirsiniz..

bunu geliştirmek sizin elinizde geliştirenler icin vakit buldukca yardım ederim

İyi Çalışmalar Kolay Gelsin Herkese..

Bir önceki yazımız olan asp ile toplist yapımı başlıklı makalemizde asp hit, asp hit sitesi ve asp toplist yapımı hakkında bilgiler verilmektedir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

code


Kapat