set kayit = server.CreateObject ("adodb.recordset")

advertisement
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.
Download