Veri Tabanına Bağlantı (Access) <% Dim baglan baglan = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Inetpub\wwwroot\deneme\data\DataBase.mdb" %> Deneme, site dosyalarının bulunduğu klasör. (Kök klasör) Data: veri tabaı dpsyasının bulunduğu klasör Database.mdb: veri tabanı dosyası Server.mappath : Doğrudan sitenin kök klasörünü verir.Dolayısıyla bağlantı aşağıdaki gibi yapılabilir. <% Dim baglan baglan = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ= ” & server.mappath ( “ data\DataBase.mdb " ) %> ASP Recordset Oluşturma Veri tabanı bağlantısı yapıldıktan sonra,asp sayfasında veritabanının hangi tablosundan hangi sütunların kullanılacağının belirtilmesigerekir. Bu işlem için recodset (kayıt kümesi) oluşturulur. <% set kayit= server.CreateObject ("adodb.recordset") kayitlar = “ select * from uyeler” kayit.open kayitlar , baglan , 1 , 3 %> veya <% set kayit= server.CreateObject ("adodb.recordset") kayit.open “ select * from uyeler” , baglan , 1 , 3 %> Burada tabloismi, db dosyasındaki tablonun ismidir. kayit isminde bir recordset oluşturulmaktadır. baglan, veritabanı ile kurulan bağlantnın ismidir. 1 ve 3 rakamları veri tabanına okuma ve yazma izni için kullanılır. " select * from uyeler “ sql cümleciği ile veritabanındaki i üyeler isimli tablodaki tüm alanlar çekilmektedir. Sonuç itibariyle bir asp sayfasının veri tabanına tam olarak erişmesi için önce veri tabanına bağlanması ardından bir recordsetin hazırlanmış olması gerekir. <% <% Dim baglan baglan = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Inetpub\wwwroot\deneme\data\DataBase.mdb" set kayit = server.CreateObject ("adodb.recordset") kayit.open " select * from uyeler “, baglan %> Yukarıdakikod asp sayfasının başına yazıldığında veritabanına bağlanılmış,uyeler tablosuna yazma ve okuma için hazır duruma gelinmiş olur. ASP Veri Tabanındaki Verileri Yazdırma Tek Kayıt Yazdırma (ilk kayıt) Veri tabanı bağlantısı yapıldıktan ve recordset oluşturulduktan sonra veritabanındakibilgiler yazdırılabilir. ASP Vbscriptte yazdırma komutu response.write komutudur. Kullanımı <% response.write("selam") %> veya <% ="selam" %> şeklindedir. Veritabanındaki bilgileri yazdırrıken ise, recordset ismi kullanılr. Örneğin hazırlanan recordesetin ismi "kayit" ise, bu recordsetin bağlı olduğu veri tablosundaki değerleri yazdırmak için; <% response.Write ( kayit("ID") ) response.Write(" ") response.Write ( kayit("User") ) response.Write(" ") response.Write ( kayit("Mail") ) response.Write("<br>") %> Burada örneğin response.Write ( kayit("ID") ) satırında kayit("ID") kelimesi, kayit isimli recordsetin bağlı olduğu veri tablosunun ID sütunundaki bilgiyi getirir. response.write ile ekrana yazılır. Benzer şekilde User ve Mail db tablosundaki dieğr sütunların ismidir.Aralara birerboşluk bırakıldığından, Ekranda 1 Volkan [email protected] şeklinde görünür. Bilgileri bir tabloya yazdırmak istersek; <td> etiketleri arasına response.write deyimlerini veya kısayolunu (=) yerleştirmek yeterli olacaktır. Tabi asp taglarını (<% %>) unutmamak gerekir. <table> <tr> <td> <% = kayit ("ID") %> </td> <td> <% = kayit ("User") %> </td> <td> <% = kayit ("Mail") %> </td> </tr> </table> Birden Fazla Kayıt Yazdırma (for next) Birden fazla kaydı yazdırmak için döngü kullanmak gerekir For döngüsü ile istenilen sayıda veri ekrana yazdıralabilir.Ancak yine öncelikle veritabanı bağlantısının yapılmış ve recordsetin oluşturulmuşolması gerekir. <% For i=1 to 3 response.Write ( kayit("ID") ) response.Write(" ") response.Write ( kayit("User") ) response.Write(" ") response.Write ( kayit("Mail") ) response.Write("<br>") kayit.movenext next %> kayit.movenext bir sonraki kayda yönlendirir. For döngüsü ile işlem 3 kez tekrar ettirilir. Ekranda ilk 3 kayıt görünür. br kullanıldığındna kayıtlar alt alta görüntülenir. 1 Volkan [email protected] 2 ggg [email protected] 3 ddd [email protected] şeklinde görünür. Tabloya yazdırmak için for döngüsü tr etiketini kapsayacak şekilde konumlandırılmalıdır. <table> <% for i = 1 to 3 %> <tr> <td> <% = kayit ("ID") %> </td> <td> <% = kayit ("User") %> </td> <td> <% = kayit ("Mail") %> </td> </tr> <% kayit.movenext next %> </table> Dikkat edilirse asp tagları arasına html etiketleri alınmaz.Sadece vbscript kodları asp tagları içierisine alınır. Tüm Kayıtları Yazdırma (do while loop) Veir tabanı tablosundaki tüm kayıtları yazdırmak için do while döngüsü kullanılır. Do while ile son kayıt olana kadar komutu verilir ve tüm kayıtlar listelenir. <% Do while not kayit.EOF response.Write ( kayit("ID") ) response.Write(" ") response.Write ( kayit("User") ) response.Write(" ") response.Write ( kayit("Mail") ) response.Write("<br>") kayit.movenext loop %> EOF dosyanın sonudur. (End of Fİle) DO while döngüsü ile tablonun sonu gelene kadar sırayla alt alta kayıtlar yazdırılmaktadır.Buarad kayıtlarilk kayıttan son kayıda doğru yazdırılır. Tersini yapmak için ise yanisondan başa sıralamak için; <% kayit.movelast Do while not kayit.BOF response.Write ( kayit("ID") ) response.Write(" ") response.Write ( kayit("User") ) response.Write(" ") response.Write ( kayit("Mail") ) response.Write("<br>") kayit.moveprevious loop %> Öncelikle kayit.movelast ile recordset son kayıda konumlandırılır. Daha sonra do while döngüsü ile BOF ( begin of file) olana kadar yani ilk kayda gelene kadar kayıtlar listelenir.Herdöngüde kayit.moveprevious ile birönceki kayda gidilir. Tabloda sıralamak için ise yine döngünün tr etiketini kapsayacak şekilde yazılması gerekir. <table> <%Do while not kayit.EOF %> <tr> <td> <% = kayit ("ID") %> </td> <td> <% = kayit ("User") %> </td> <td> <% = kayit ("Mail") %> </td> </tr> <% kayit.movenext loop %> </table> Tüm kayıtlar tabloya satırlar halinde (alt alta( yerleştirilecektir) . Belirli bir Kaydı Yazdırma DB tablosundan belirli bir kaydı yazdırmak için örneğin iddeeri 2 olan kaydı yazdırmak için öncelikle recordset'in yapılandırılması gerekir. <% set kayit= server.CreateObject ("adodb.recordset") kayit.open " select * from uyeler where ID=2“ , baglan,1,3 %> Burada where ID=2 denilerek uyelerisimli tablodan sadece id değeri 2 olan kayda ait tüm bilgileri (*) al demiş oluyoruz. Daha sonra ekrana yazdırıldında id değeri 2 olan kaydın bilgileri görünür. <% response.Write ( kayit("ID") ) response.Write(" ") response.Write ( kayit("User") ) response.Write(" ") response.Write ( kayit("Mail") ) response.Write("<br>") %> Mesaj ile (querystring) gelen değere göre yazdırma ASP ile bir sayfaya link verilirken yanında mesaj değeride yollanabilmektedir. Örnein aaa.asp?mesaj=ddd şeklinde bir link, aaa.asp sayfasına yönlendirirken aynı zamanda mesaj isimli değişken içeriside "ddd" bilgisinide o sayfaya gönderir. Bu bilgi aaa.asp içerisinde request.querystring("mesaj") ifadesi ile okunur. Dikkat edilirse mesaj "?" işaretinden sonra yazılmaktadır. Örneğin aaa.asp adli sayfaya verilen link aaa.asp?mesaj=6 olsun. Amacımız bu 6 sayısını kullanarak veritabanı tablosundaki id değeri 6 olan kaydı yazdırmak. Bunun için önce request.querystring("mesaj") ile gelen mesajı kontrol etmemiz gerekir. <% if request.querystring("mesaj") = "" then response.Redirect ("aaaa.asp?mesaj=1") end if %> Burada gelen mesaj yoksa,sayfaya response.Redirect ("aaaa.asp?mesaj=1") ile tekraryölendirme yaptık ve mesaj bilgisi gönderdik. Kodun devamında recordset hazırlanır. <% set kayit= server.CreateObject ("adodb.recordset") kayitlar = " select * from uyeler where ID=“&Request.QueryString ("mesaj") kayit.open kayitlar, baglan %> Burada dikkat edilirse where ID= ifadesinden sonra sayı değil gelen mesajı veren Request.QueryString ("mesaj") iffadesini yazdık.Bu durumda sayfaya gelen mesaj değişkeninin içindekisayı ne ise ID değeri o olan kaydın bilgileri alınacaktır. Request.QueryString ("mesaj") bir değişken olduğundan tırnak içerisine alınmamıştır. Kayıt seti hazırlandıktan sonra yazdırma işlemi yapıldığında ekranda sadece ID değeri 6 olan kaydın bilgileri görünür. NOT: Eğer yönlendirmede gelen mesaj yine veri tabanı bilgisinden gelecekse bu kez ikinci bir recordset hazılanır. sayfaya gelen link : aaa.asp?mesaj=<% =kayit("ID") %> şeklinde olsun. Burada mesaj deişkenine kayitisimli recordsetin bağlı olduğu tablodaki ID değeri yazılıyor. Bu durumda recordsetler; <% set kayit= server.CreateObject ("adodb.recordset") kayitlar = " select * from uyeler “ kayit.open kayitlar, baglan %> <% set kayit2= server.CreateObject ("adodb.recordset") kayitlar2 = " select * from uyeler where ID=“&Request.QueryString ("mesaj") kayit2.open kayitlar2, baglan %> yazdırılırken ise kayit2 isimli recordset kullanılır. <% response.Write ( kayit2("ID") ) response.Write(" ") response.Write ( kayit2("User") ) response.Write(" ") response.Write ( kayit2("Mail") ) response.Write("<br>") %> Bu durumda ekranda sadece querystring ile gelen mesajın içindeki ID numarasına sahip kayıt görüntülenir. Veri tabanındaki bir tabloya veri girişiyapabilmek için öncelikle yazma izinlerinin verilmiş olması gerekir. Bunun için recordset hazırlanırken 1 ve 3 rakamları kullanılır. Veri tabanına kayıt ekleme.. <% DbYolu = Server.MapPath ("DataBase.mdb") Set baglan = Server.CreateObject ("Adodb.Connection") baglan.Open "Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source="& DbYolu &" ; " %> Recordset.. <% set kayit= server.CreateObject ("adodb.recordset") kayitlar = " select * from uyeler “ kayit.open kayitlar, baglan,1,3 %> Buradaki 1 ve 3 sayıları veri tabanına kodile yazma hakkını vermektedir. VEri tabanına balantı ve recordsetten sonra artık veri tabanına kayıt eklenebilir.uyeler isimli tablonun sütunları ad,soyad ve sifre olsun. Bu durumda bu alanlara veri girişi için; <% kayit.addnew kayit("ad") ="tahir" kayit("soyad") ="ergun" kayit("sifre") = 1234 kayit.update %> Dikkat edilirse alanlar recordset ismiyle beraber belirtiliyor. kayit("ad") gibi. Burada kayit.addnew .yenibir kaydın yapıldığını belirtiyor. kayit.update ise kaydın bitirilerek tabloya yerleştirilmesini sağlıyor. ASP Üye Kaydı ASP kodlarıyla üye kaydı yapabilmek için öncelikle üyelik formunun oluşturulması gerekir. Form hazxırlandıktan sonra metin kutularının "id" lerinin verilmesi gerekir. Radyo butonların id'leri aynı (cinsiyet) yapılır, value (denetlenen değer) değerleride bay ve bayan yapılır. Sayfa uyelik.asp adıyla kaydedilir. Gizli alanın id'si durum yapılır ve değerine "uye" yazılır. Bu admin uye işlemleri için gerekli. Formun action kısmına, kendine dönmesi için uyelik.asp yazıabilir,ancak kendine döndükten sonra kayıt işlemini yapması için bir querystring ifadesi yollamamız gerekir . bu nedenle action kısmına uyelik.asp?mesaj=ekle yazalım. Kod bölümünde öncelikle veri tabanı bağlantısını yapıp recordseti hazırlayalım.Kodu nereye yazcaz? Yazın body'den önce herhangi bi yere... <% DbYolu = Server.MapPath ("DataBase.mdb") Set baglan = Server.CreateObject ("Adodb.Connection") baglan.Open "Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source="& DbYolu &" ; " set uye = server.CreateObject ("adodb.recordset") uye.open " select * from uyeler “, baglan %> Yukarıdaki kodlarla baglan isimli bir veri tabanı bağlantısı ve uye isimli bir recordset tanımlamış olduk. Daha sonra ekleme kodları için öncelikle querystring ifadesine bakmamız gerekiyor.Çünkü formun action kısmına bir querystring ifadesi yazdık.( uyelik.asp?mesaj=ekle ). Yani gönder butonuna basıldığında sayfa kendine yönelenecek ve mesaj değişkeni içerisinde ekle mesajını gönderecek. Bu nedenle önce if cümlesiyle querystring ifadesini kontrol edip kayıt kodlaını öyle yazmamız gerekir. NOT: Gönderilen querystring mesajı asp'de request.querystring komutuyla alıyoruz. <% if request.QueryString ("mesaj") = "ekle" then %> Ekleme kodlarına geçmeden önce formdaki zorunlu alanların boş bırakılıp bırakılmadığını kontrol etmemiz gerekir. Ayrıca boş bırakılan alanlar için bir değişken atarsak daha sonra uyarı yazılarımızda (ad alanı doldurulmadı gibi) işimize yarar. Formdaki bir alanın içeriğini request.form komutuyla alırız. Örneğin request.form("ad") komutu formda ad isimli metin alanına yazılan içeriği verir.Koda devam edelim; <% if request.QueryString ("mesaj") = "ekle" then if request.form("ad")= "" then ad_c = "false" end if if request.form("soyad")= "" then soyad_c = "false" end if if request.form("k_adi")= "" then k_adi_c = "false" end if if request.form("ssifre")= "" then sifre_c = "false" end if if not (ad_c="false" or soyad_c="false" or k_adi_c="false" or sifre_c="false") then uye.addnew uye("ad") = request.form("ad") uye("soyad") = request.form("soyad") uye("k_adi") = request.form("k_adi") uye("sifre") = request.form("ssifre") uye("cinsiyet") = request.form("cinsiyet") uye("duzey") = request.form("duzey") uye.update response.Redirect("uyeol.asp?mesaj=ok") end if end if %> Yukarıda öncelikle querystring mesaj değişkenin içeriğnin "ekle" olup olmadığı kontrol ediliyor. Eğer ekle ise işlem başlıyor. Öncelikle formdaki zorunlu alanlar tek tek kontrol ediliyor ve daha sonra uyarı yazılarında kullanılmak üzere ad_c, soyad_c, k_adi_c ve sifre_c değişkenleri oluşturuluyor.Alanlar boş ise bu değişkenlere "false" dğeri atanıyor. Tabi bu değişken isimleri keyfi... Alanlar kontrol edildikten sonra bu kez bir kontrol daha yapılıyor. Mantıken bu alanlardan biri bile boş ise kaydın yapılmaması gerekir. Bu endenle bir if cümlesi daha yazılıyor.(if not) Eğer bu alanlardan herhangibiri boş değilse kaydı başlatmak için... uye.addnew ile kayıt başlıyor ve form alanlarındaki bilgiler tek tek veri tabanı sütünlarına gönderiliyor.Tabi burda veri tabanı sütun adlarıda önemli...ben kolaylık olsun diye formdaki isimleri veritabanındaki sütun isimleriyle aynı yaptım.. Kayıt bittikten sonra response.Redirect("uyeol.asp?mesaj=ok") komutuyla sayfaya tekrar yöndlendirme yapılıyor.Ancak bu kez querystring mesajı olarak "ok" gönderiliyor.Bunuda kaydın başarılı olduğuna dair mesaj vermek için kullancağız.