Ziyaretçi defteri dendiği zaman aklımıza hemen ürkütücü repeater ve database işlemleri gelmesin. Zira ziyaretçi defterinin yapımının ne kadar kolay olduğunu bu makeledeki basit bir örnekle rahatlıkla çözebileceksiniz.
Öncelikle bu makalede visualbasic.net dilini ve Microsoft Access veritabanını kullandığımı belirtmemde fayda var. Şimdi veritabanımızı hazırlayalım ve daha sonra tasarım bölümümüze geçelim.

Resimden de anlaşıldığı gibi veritabanımızın ismi zDefteri. İçerisinde tblDefter isminde bir tablo yer alıyor. Bu tablonun içinde ID (Otomatik sayı), Isim (Metin), Mail (Metin), Mesaj (Not) ve Zaman (Tarih/Saat) alanları bulunuyor. Isim alanında kullanıcı adını, mail alanında kullanıcının mail adresini, mesaj alanında kullanıcının yazısını ve zaman alanında mesajın atıldığı tarihi tutacağız.
Şimdi ise visual studio yardımıyla bir asp.net projesi açalım ve default.aspx sayfasının design bölümünde aşağıdaki görünümü oluşturalım:

Görüldüğü gibi Button, Textbox, Label, RequiredFieldValidator ve Repeater kullandım. Bu tasarımı hazırlamanızda bir zorluk çekeceğinizi sanmıyorum ancak repeater’in bağlı bulunduğu fieldset ile beraber tasarım sayfasındaki kodunu aşağıya eklemekte fayda görüyorum.
<fieldset class="text" id="flsYorum" title="Yorumlar" style="FONT-SIZE: 8pt; Z-INDEX: 101; LEFT: 488px; WIDTH: 376px; COLOR: black; FONT-FAMILY: Arial; POSITION: absolute; TOP: 24px; HEIGHT: 8px; TEXT-ALIGN: left; TEXT-DECORATION: none"
runat="server"><LEGEND>Yorumlar</LEGEND><asp:repeater id="repeatermsj" runat="server">
<ItemTemplate>
İsim : <a href='mailto:<%# Container.DataItem ("Mail") %>'><font color="#000000">
<%# Container.DataItem ("Isim") %>
</font></a>| Zaman :
<%#Container.DataItem("Zaman")%>
<br />
<%#Container.DataItem("Mesaj")%>
<br />
<hr align="center" style="width: 370px; background-color: #ff0066" />
</ItemTemplate>
</asp:repeater></fieldset>
Şimdi kod bölümüne geçiyoruz. Amacımız veritabanına daha önce girilmiş yorum varsa onları getirmek ve gönder buttonuna basıldığında yeni yorum yazdırmak. Kodların tüm açıklamaları satır aralarında yer alıcaktır.
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
'sayfamızın yüklenme aşamasındaki işlemlerını gerçekleştiriyoruz
'öncelikle microsoft access veritabanımıza bağlanıyoruz
Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & Server.MapPath("zDefteri.mdb"))
'bağlantımızı açıyoruz
con.Open()
'kayıt sayısı isimli değişkenimizi tblDefter tablosundaki ID alanına atıyoruz
Dim KayitSayisi As String = "Select Count(ID) From tblDefter"
Dim com As New OleDbCommand(KayitSayisi, con)
'kayıtlarımızı okutuyoruz
Dim Kayit As Integer = com.ExecuteScalar
'1den fazla kayıt varsa labelda toplam kaç mesaj olduğunu yazdırıyoruz, yoksa kayıt yok mesajını labela yazdırıyoruz
If Kayit > 0 Then
lblKayit.Text = Kayit & " adet kayıt var"
Else
lblKayit.Text = "Henüz mesaj girilmemiş."
End If
''ID tablosuna baglanip mesajları cekiyoruz ve yazdırıyoruz
Dim strdb As String = "Select * From tblDefter Order by ID Desc"
Dim com2 As New OleDbCommand(strdb, con)
Dim dbreader As OleDbDataReader
dbreader = com2.ExecuteReader
repeatermsj.DataSource = dbreader
repeatermsj.DataBind()
con.Close()
End Sub
Private Sub cmdGonder_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGonder.Click
'Bu bölümde gönder buttonuna basıldıgında mesaj yollarken gerçekleşen işlemleri ayarlıyacagız
'bir connection oluşturup veritabanımıza baglanıyoruz
Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & Server.MapPath("zDefteri.mdb"))
'baglantımızı acıyoruz
con.Open()
'veritabanımızdaki ilgili tablomuzun ilgili alanlarıyla, tasarımımızdaki textboxların ilgili olanlarını denkleştiriyoruz
Dim strdb As String = "Insert Into tblDefter(Isim,Mail,Mesaj,Zaman) Values ('" & txtisim.Text & "','" & txtmail.Text & "','" & txtyorum.Text & "','" & Now() & "')"
Dim com As New OleDbCommand(strdb, con)
'mesajı yollarkenki yazdırma işlemini gerçekleştiriyoruz
com.ExecuteNonQuery()
'bağlantımızı kapatıyoruz
con.Close()
'işlemimiz tamamlandıktan sonra default.aspx sayfamıza geri döndürüyoruz
Response.Redirect("Default.aspx")
End Sub
End Class
Tüm bu işlemlerden sonra programımızın işleyişini kontrol edebilirsiniz. Ben bir yorum yazıp gönderiyorum ve sonuç aşağıdaki gibi çıkıyor. Kodlarınızda hatalı bir düzenleme yapmadıysanız, yukarıdaki kodların düzgün çalışacağını belirtebilirim.
İşlemi gerçekleştirirken isim yada mail girmediğinizde RequiredFieldValidator’lerin çalıştığını göreceksiniz.
Umarım faydalı bir makale olmuştur. Kodlarda sorun olmadığını görmek için tekrar tekrar test ettim. Eğer tüm bunlara rağmen bir problem çıkıyorsa benimle mail adresimden iletişime her daim geçebilirsiniz.
Farklı makalelerde tekrar görüşmek üzere, iyi çalışmalar.