Bi okul sitesine online olanlar için chat scripti kurmak istedim ancak kaynak kod bulamadım kendim yaptım bişeyler. Belki başka arayan olur diye paylaşmak istedim.
Sadece mantığı anlatacağım ve Vb.net kodları paylaşcam.
İlk önce veritabanı tablomu oluşturdum.
Sohbet tablosunun alanları:
id otomatik sayı
gonderen metin
mesaj text
saat metin
şeklinde belirledim.
Safyama ise bir adet update panel ekledim ve bunun içerisine birtane Datalist ve birtane Timer yerleştirdim. Bunların dışında ise bir adet textbox ve bir buton yerleştirdim. Butona tıklandığında yazdığımız yazı veritabanımıza gircek. Sayfanın en altına yada en üstüne bir adette label ekliyoruz. Bu labele sessiondan yada cookie den aldığımız üye ismimizi atıyoruzki her defasında veritabnında üye adını arayıp işlemcimizi yormayalım.
İlk olarak Timer'ımızın çalışma aralığını 500 olarak belirleyelim (yarım saniye) bunu 1000 olarakta kullanabilirsiniz. Daha sonra timerla veri tabanına bağlanarak sohbet tablosuna eklenmiş son 20 veriyi ekranımıza taşıması için sorgumuzu yazıyoruz.
Ardından form load olayında session yada cooike den uye id numarasını alarak uyelerim tablomda ki konumunu sorguluyor ve elde ettiğim uye adı değerini eklediğim labelime aktarıyorum.
Buttonın clik olayında ise insert into deyimini kullanarak veritabanına yazılan mesaj kaydediyoruz. Kaydedilen mesajın hemen ekrana çıkması içinde komutu ExecuteNonQuery ile çalıştırdıktan hemen sonra timer ımızdaki sorgunun aynısı kullanarak datalistimize verileri çekiyoruz.
Umarım anlatabilmişimdir. Örnek kodlar aşağıda mevcuttur.
Bunu kendiniz geliştirebilirsiniz. Smile özellikleri katabilirsiniz.
Protected Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles sohbetyenile.Tick
Dim c As New OleDbConnection
c.ConnectionString = "Provider=microsoft.jet.oledb.4.0; Data Source=" & Server.MapPath("App_Data/veritabani.mdb")
c.Open()
Dim ds As New DataSet
Dim adap As New OleDbDataAdapter("select top 20 * from sohbet order by id desc", c)
adap.Fill(ds, "dol")
DataList3.DataSource = ds.Tables(0)
DataList3.DataBind()
c.Close()
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim c As New OleDbConnection
c.ConnectionString = "Provider=microsoft.jet.oledb.4.0; Data Source=" & Server.MapPath("App_Data/vdeposu.mdb")
c.Open()
Dim komut As New OleDbCommand("insert into sohbet(gonderen,mesaj,saat) values('" & uyeninadi.Text & "','" & TextBox3.Text & "','" & Now.TimeOfDay & "')", c)
komut.ExecuteNonQuery()
Dim ds As New DataSet
Dim adap As New OleDbDataAdapter("select top 20 * from sohbet order by id desc", c)
adap.Fill(ds, "dol")
DataList3.DataSource = ds.Tables(0)
DataList3.DataBind()
c.Close()
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim couye As HttpCookie = Request.Cookies("coid")
Dim giris As String
If couye IsNot Nothing Then
giris = couye("oid")
ElseIf Session("ksbid") Then
giris = Session("ksbid")
Else
Response.Redirect("uyegiris.aspx")
End If
Dim c As New OleDbConnection
c.ConnectionString = "Provider=microsoft.jet.oledb.4.0; Data Source=" & Server.MapPath("App_Data/vdeposu.mdb")
c.Open()
Dim ds As New DataSet
Dim adap As New OleDbDataAdapter("select * from uyelerim where id=" & giris, c)
adap.Fill(ds, "ola")
Dim kayit As DataRow = ds.Tables(0).Rows(0)
uyeninadi.Text = kayit("uyeadialani").ToString
c.Close()
End Sub