Asp Ders Notları - bilinmeyenler

  • Konbuyu başlatan jockeя
  • Başlangıç tarihi
  • Cevaplar : 29
  • Görüntüleme : 655

jockeя

Kullanıcı
Acemi üye 365-Gündür-Beraberiz! Çaylak Üye 5 Yıldır Beraberiz Bronz Üye 10 Yıldır Beraberiz Doğrulanmamış Hesap Silver Üye 15 Yıldır Beraberiz Gold Üye
1
Katılım
12 Tem 2008
Mesajlar
1,503
Tepkime puanı
0
Ticaret - 0%
0   0   0


ÇEREZLER


Siteye giriyordunuz. Adam size "sayfayı kişiselleştir" diye bir link koymuş. Tıklayıp içinizi döküyorsunuz. Siteyi bir sonraki ziyaretinizde site size adınıza hitaben "merhaba koçum, seni tanıyorum, bana kendini anlatma, çok iyi bilirim ben seni ... ismin şu, sevdiğin kalem markası Rotring, başın ağrıyınca önceden Novalgin alırdın şimdi modaya uyup Aspirin Forte.. monitörün philips marka ve sen simit şeklindeki power düğmesine gıcık oluyorsun ... haa bir de bu siteyi 2. ziyaretin ... nerden bildim ama... hahaha" türünden şaklabanlıklar yapıyor. Peki bunu nasıl beceriyor? Hepiniz çerezlerle olduğunu biliyorsunuz.


ASP ile istemci bilgisayarlara çerez yollamak çok basit bir iştir. Gerçekten çok basit. ASP nin yerleşik delikanlılarından RESPONSE nin bu iş için özel bir metodu var: COOKIES . İstemciye çerez yollamak için bu metodla birlikte anahtar değerler (bir veya iki) gönderiyoruz. (bir ayrıntı: ASP de iki anahtar sadece cookies kolleksiyonunda kullanılıyor). Şimdi örnek kodu inceleyelim:


Response.cookies("kabuk")= "Evet, kabuk"
Response.cookies("kabuklarim")("adi") = "Mucit"
Response.cookies("kabuklarim")("sevdigi_icecek") = "Kızılcahamam Maden Suyu ve Sodası"
Response.cookies("kabuklarim")("medeni_durumu") = "Bekar!"
Response.Cookies("kabuklarim").Expires = Now() + 90

Peki çerezi yolladık tarayıcıya. Yani kabukları. Peki bu kabukları görmek istediğimiz zaman ne yapmamız gerekiyor. İşte o zaman ASP nin diğer delikanlı nesnesi REQUEST talip oluyor göreve. Çünkü bir şeyleri talep etmek onu görevi. Biz de ona bir emir vereceğiz. "Çerezler arasından şu anahtardaki değeri bana bir getiriver bakayım" denildiği anda size o değeri getirecektir. Bu metodu kullanmak, response ile çerez yollamaya çok benzer. Ancak bir fark vardır. Response de ilgili anahtara atama yapılır, burada ise request zaten bize bir değer getirir, biz de bu değeri işimize geldiği gibi kullanırız. Aşağıda REQUEST ile çerezden bilgi almayı görüyorsunuz.
Adim = Request.cookies("kabuklarim")("adi")
ne_icerim = Request.cookies("kabuklarim")("sevdigi_icecek")
medeni_halim = Request.cookies("kabuklarim")("medeni_durumu")
Response.Write Adim & " / " & ne_icerim & " / " & medeni_halim
' sayfadaki çıktı: Mucit / Kızılcahamam Maden Suyu ve Sodası / Bekar!

İşte bu örneklerde çerezle bilgi yollama ve de çerezden bilgi alma tekniğinin ne kadar kolay olduğunu görüyorsunuz.
<html>
<head>
<title> KİŞİSEL ZİYARET SAYACI </title>
****** http-equiv="Content-Type" *********"text/html; charset=windows-1254">
****** name="Generator" *********"EditPlus">
****** name="Author" *********"Mucit">
</head>

<body bgcolor="#FFFFFF">
<%
ziyaret = Request.cookies("sitem")("ziyaret")
If ziyaret = "" Or Not Isnumeric(ziyaret) Then
Response.cookies("sitem")("ziyaret") = "0"
Response.Cookies("kabuklarim").Expires = Now() + 365
Response.Write "Siteye ilk defa geldiniz. Saolun. Bir daha gelin haaa.."
Else
ziyaret = ziyaret + 1
Response.cookies("sitem")("ziyaret") = ziyaret
Response.Cookies("kabuklarim").Expires = Now() + 365
Response.Write "Siteye " & ziyaret & ". gelişiniz, aferin hep gelin haa.. "
End If

%>
</body>
</html>
 


jockeя

Kullanıcı
Acemi üye 365-Gündür-Beraberiz! Çaylak Üye 5 Yıldır Beraberiz Bronz Üye 10 Yıldır Beraberiz Doğrulanmamış Hesap Silver Üye 15 Yıldır Beraberiz Gold Üye
1
Katılım
12 Tem 2008
Mesajlar
1,503
Tepkime puanı
0
Ticaret - 0%
0   0   0


APPLİCATION

Belirtilen uygulamadaki tanımlı bütün kullanıcıların bilgiyi paylaşmaları için Application nesnesini kullanabiliriz. Bir ASP-uzantılı uygulama, sanal dizin ve onların altdizinlerindeki tüm .asp dosyaları gibi tanımlanır.

Application nesnesi birden fazla kullanıcı tarafından paylaşılabildiği için, kullanıcıların bir özelliği aynı anda değiştirme girişimlerini önlemek için Lock ve Unlock yöntemleri kullanılır. Bir örnek yaparak çalışmasını inceleyelim. Bu örneğimizle kullanışlı sayfa sayaçları yapabilirsiniz. Örneği inceleyince daha iyi anlayacağınıza eminim...

Aşağıdaki örneğimizi ne olur manuel yazalım ve Sayac.asp adıyla kaydedelim. İsterseniz kopyala-Yapıştır yapabilirsiniz ama elle yazmanız sizin açınızdan çok faydalı olacaktır.

Düşünsenize belki hata yapacaksınız ve bu hatayı aramak zorunda kalacaksınız ve böylece bir kaç kere tekrar etmiş olacaksınız...

<%
Response.Expires = 0
'Expires sayesinde sayfanın içeriğinin bilgilerinin cache bellekte saklanmasını engelleriz.
%>

<%
If (Application("Sayac") = "") Then
'Bu ziyaretçi için Application başlatılmadıysa başlatılsın.
Application("Sayac") = 0
End If

Application.Lock
'Application'ı Kilitliyoruz. Ve kullanıcı giriş yaptıktan sonra 1 değer
'arttırıyoruz.

Application("Sayac") = Application("Sayac") + 1
Application.UnLock
'Ve tekrar serbest bırakıyoruz. Diğer kullanıcılarla bu Application
'kullanılabilsin diye...
%>
Bu Sayfaya <%= Application("Sayac") %> Kere Giriş Yapıldı.
<P><A HREF="sayac.asp">Yenilemek İçin Tıklayın.</A>

Bu kodu yazıp çalıştırdığımız zaman, sayfayı her yenilediğimizde sayaç bir değeri kadar arttırılacaktır. Eğer Sayaç+1 yerine 5 yazarsanız sayacınız 5'er 5'er artacaktır... İsterseniz başka bir örnekle bu nesnemize ait bilgilerimizi pekiştirelim...

Diyelim ki bir chat scripti yazıyorsunuz ya da bir Active Users Scripti yazıyorsunuz, o zaman da bu nesnemizden faydalanmamız gerekecektir. Şimdi hemen diğer bir örneğe geçelim. İlk Olarak bir Chat'e Giriş sayfası yapalım. Tabii bu sanal bir chat. Yani sadece sayıyı kontrol etmeyi yazacağız... NotePad'i açalım ve aşağıdaki kodları chat.asp diye kaydedelim...

<%@ Language=VBScript Codepage="1254"%>

Chat Odamıza Gitmek İçin <A HREF="chatekatil.asp">Tıklayın</A>
<%
Response.Write "Şu anda Chat Odamızda "&application("chat")&" kullanıcı bulunmaktadır..."
%>

Aşağıda göreceğiniz scripti de ChateKatil.asp diye kaydedelim. Ve bir önceki sayfada yazdığımız scriptten bu sayfaya link verdiğimizi hatırlayarak, o sayfada <a href'ine hangi link ismini verdiyseniz o ismi de verebilirsiniz...



<%@ Language=VBScript Codepage="1254"%>
Chat Odamızdan ayrılmak İçin <A HREF="ayril.asp">Tıklayın</A><%
Application.Lock
'Hatırladığınız gibi, önce Application'ımızı kilitliyoruz ve sayacı bir
'arttırdıktan sonra kilidini kaldırıyoruz...
Application("chat")=Application("chat")+1
'Sayacı bir arttırıyoruz.
Application.Unlock
'Ve tekrar Application'ımızı serbest bırakıyoruz ki, diğer kullanıcılar
'giriş yaptığı zaman kilitli kalmasın....
Response.Write "Şu anda Chat Odamızda "&application("chat")&" Kişi Bulunmaktadır..."
'Daha sonra Application'ımızın tuttuğu sayısal değeri, Response
'metoduyla sayfaya basıyoruz. Ve böylece kaç kişinin
'Application'ımızı açtığını görebiliyoruz. Bir ilerki sayfada ise
'Ziyaretçimizin Application'ımızı terkettiği zaman diğer kullanıcıların
'sayacı doğru görüntüleyebilmesi için 1 değer azaltmayı göreceğiz...
%>

Aşağıda göreceğiniz scripti de Ayril.asp diye kaydedelim.

<%@ Language=VBScript Codepage="1254"%>
Chat Odamıza Tekrar Bağlanmak İçin <A HREF="Chat.asp">Tıklayın</A>
<%
Application.Lock
'Hatırladığınız gibi, önce Application'ımızı kilitliyoruz ve sayacı bir
'arttırdıktan sonra kilidini kaldırıyoruz...
Application("chat")=Application("chat") -1
'Sayacı bir azaltıyoruz.

If Application ("chat")<0 then
Application("chat")=0
'Eğer Application'ımızın değeri 0'dan küçükse Application'ımızı 'durduruyoruz.
End If
Application.Unlock
'Değilse kilidi kaldırıyoruz.
Response.Write "Şu anda Chat Odamızda "&application("chat")&" Kişi Kalmıştır..."
'Ve kalan sayıyı sayfaya Response ediyoruz...
%>
 


jockeя

Kullanıcı
Acemi üye 365-Gündür-Beraberiz! Çaylak Üye 5 Yıldır Beraberiz Bronz Üye 10 Yıldır Beraberiz Doğrulanmamış Hesap Silver Üye 15 Yıldır Beraberiz Gold Üye
1
Katılım
12 Tem 2008
Mesajlar
1,503
Tepkime puanı
0
Ticaret - 0%
0   0   0


SESSİON


HTML ve Javascript ile biraz oynadıysanız, bilirsiniz ki bir sayfadan ötekine değişken değeri aktarmak, imkansıza yakın derecede zordur. Değişkenlerin ömrü, fonksiyonla sınırlıdır. Bir ASP sayfasında herhangi bir değişkeni fonksiyon dışında tanımlamakla ve değer atamakla onu bütün fonksiyonlar için geçerli hale getirebiliriz. Fakat kimi zaman isteriz ki, bir fonksiyonun değeri bütün sayfalarda aynı olsun; ziyaretçinin sayfa değiştirmesi ile değişkenin değeri değişmesin. Bunu ASP'de yapmak çok kolaydır. ASP'de bu zorluğu yenebilmek için değişkenlerimizi Session nesnesi için oluşturabiliriz; ve bu değer ziyaretçinin oturumu boyunca devam eder; bütün ASP sayfalarındaki bütün Fonksiyonlar tarafından bilinebilir. Örneğin:

Session ("Tupras") = 44500
Session Türkçe oturum demektir. ASP'nin özelliği artık bildiğinizi varsayıyorum. ASP Sunucusu Server'a bağlanan, yani bir talepte (Request'de( bulunan her bir ziyaretçiye ayrı bir oturum ayrı bir session açar. Tabii Cookie denetimi yoksa... Ve her Session'a bir ID verir...

Session'ın en büyük özelliği dinamik olmasıdır. Yani ziyaretçinin sitede bulunduğu her saniye Session nesnesi tarafından takibe alınır... Bu sayede eğer gerçekten profesyonel planlamalar yaparken Session nesnesinin metotlarından bir çok şekilde faydalanacağız...

Session nesnemizin en büyük özelliği tanımladığımız değişkenleri diğer geçiş sayfalarında da kullanabilmemiz için tutmasıdır... Hemen bir örnek yaparak Session nesnemize giriş yapalım... Önce Bir Form Hazırlayalım ve bu formu Session.asp diye kaydedelim.

<FORM NAME="formadi" ACTION="SessionDevam.asp" METHOD="POST" >
Lütfen Adınızı Giriniz:
<INPUT ******"text" NAME="Isim">
<BR>
Soyadınız:
<INPUT ******"text" NAME="Soyad">
<BR>
<INPUT ******"submit" NAME="cmdGonder" VALUE="Gönder">
</FORM>


Aşağıdaki Kodları da SessionDevam.asp adıyla kaydedelim.

<%@ Language=VBScript Codepage="1254"%>

<%
Session.Timeout=15
'Oturum süresi, eğer sayfaya hiç bir müdahalede bulunulmazsa 15 'dakikadır.
Session ("Isim")=Request.Form("Isim")
Session ("Soyad")=Request.Form("Soyad")
'Bir önceki sayfadan
'taşıdığımız değeri Request metoduyla Oturumda tutuyoruz.

Dim Icerik
Dim IcerikSonu
%>

<%
IcerikSonu=Session.Contents.Count
For Icerik=1 To IcerikSonu 'Session nesnemizde tuttuğumuz değerleri
'Session.Contents yardımıyla saydırıyoruz.

Response.Write (Session.Contents(Icerik) &"<br>")
'Sonucu sayfaya Response ederek yazdırıyoruz. Ve bir <br> yani
'Break Line koyarak (Alt satıra Geçmemizi sağlar.) Next yordamıyla
'sıradaki Kayıtları ekrana yazdırmasını sağlıyoruz...
Next
%>


Bir ASP sayfasını oturum açmadan yapılandırmak için alttaki kodu ekleyebilirsiniz.. Değerini True yaparak başka bir sayfada oturumu başlatabilirsiniz...

<%@ EnableSessionState=False %>


Session Timeout:

Kullanıcı bir uygulamadaki bir sayfayı belirli bir süre istemez ya da yenilemezse, oturum otomatik olarak sona erer. Bu süre için varsayılan değer 20 dakikadır. Bir uygulama için varsayılan değeri, Internet Information Service çalışma ekindeki Uygulama Seçenekleri özellik sayfasında değiştirebilirsiniz.

<% Session.Timeout = 16 %>





Session Abandon:

Abandon yöntemi, bir Session nesnesinde saklı olan tüm nesneleri yok eder ve kaynaklarını bırakır.

Abandon yöntemini çağırmak istemiyorsanız, sunucu bu nesneleri oturumun süresi bittiğinde yok eder.

Kullanımı:

Session.Abandon

Abandon yöntemi çağrıldığında, geçerli Session nesnesi silinme için havuza alınır, ancak geçerli sayfadaki komut dosyası komutlarının tümü işlenmeden tam olarak silinmez.

Böylece, sonraki Web sayfaları dışında, yalnızca Abandon yönteminin çağrıldığı sayfadaki Session nesnesinde saklı olan değişkenlere erişebilirsiniz.

Örneğin, aşağıdaki komut dosyasında üçüncü satır Oğuz değerini yazar. Bu, sunucu komut dosyasının işlenmesini bitirene kadar Session nesnesinin yok edilmemesinden dolayıdır.

<%
Session.Abandon
Session("Isim") = "Oğuz"
Reponse.Write(Session("Isim"))
%>


Sonraki Web sayfalarında Isim değişkenine erişirseniz, değerinin boş olduğunu göreceksiniz.
Bunun nedeni, Isim değişkeninin, yukarıdaki işlemi bitirdiğinde önceki Session.Abandon nesnesiyle yok edilmesidir.

Server, bir oturumu kapattıktan sonra başka bir Web sayfasını açtığınızda, yeni bir Session nesnesi oluşturur. Değişkenleri ve nesneleri, bu yeni Session nesnesinde saklayabilirsiniz.
Aşağıdaki örnek, sunucu geçerli sayfayı çalıştırmayı bitirdiğinde oturumun son durumunu verir.

<% Session.Abandon %>
 


jockeя

Kullanıcı
Acemi üye 365-Gündür-Beraberiz! Çaylak Üye 5 Yıldır Beraberiz Bronz Üye 10 Yıldır Beraberiz Doğrulanmamış Hesap Silver Üye 15 Yıldır Beraberiz Gold Üye
1
Katılım
12 Tem 2008
Mesajlar
1,503
Tepkime puanı
0
Ticaret - 0%
0   0   0


FORM ELEMANLARINDA DEĞER ALMA












ActiveX Veri Erişim (ADO) Nesneleri


ASP'nin diğer CGI tekniklerine göre kolay olmasının (peki, kabul, "kolay görünmesi" diyelim!) belki de sadece veri erişimini adeta çocuk oyuncağı haline getirmesidir. ADO, gerçekte bir ASP nesnesi olmaktan çok Server Component'i (sunucu bileşeni) sayılır. Bu bileşene biz ASP içinden bir ActiveX nesnesi ile ulaşırız.
Veritabanı, günümüzde giderek Web Programlarının temelini oluşturuyor. Sayfaların unsurları veritabanı dosyasından alınıyor; ziyaretçilerin verdikleri bilgiler veritabanına yazılıyor. Bu gelişimin başlıca sebebi, veritabanının site güncelleştirme işlerini kolaylaştırmasıdır. Söz gelimi bir sayfadaki seçenekleriniz, bir veritabanından alınıyorsa, bu seçenekleri alan VBScript kodu hiç değişmeden kalacak ve siz sadece veritabanı dosyanızda ilgili verinin alındığı alana yeni değerler girerek, sayfanızı sürekli güncel tutmuş olacaksınız. Bir diğer sebep ise veritabanı dosyalarının idaresinin kolay olmasıdır. Sözgelimi ziyaretçilerinizden aldığınız bilgileri daha sonra muhasebe kayıtlarınıza veya adres defterinize, müşteri kütüğüne ya da başka suretle kayda geçirmek istiyorsunuz. Ziyaretçilerimizin form yoluyla bize ilettiği bilgileri düzyazı dosyasına işlemenin yollarını Dosya sistemi Nesnesi'ni (FileSystem) görürken, ele aldık. Bunu yapabiliriz kolayca. Ama daha sonra düz yazı dosyasının idaresi, veritabanının idaresi kadar kolay olamaz. ASP sayfalarınız Access, Excel, Paradox, FilePro, SQL Server ve Oracle veritabanlarına ve spreadsheet dosyalarına erişebilir; bu dosyalardan veri okur ve bu dosyalara veri yazabilir. Özetle, ASP programlarımızla, SQL-uyumlu veya Windows ve diğer sistemler için yazılmış ODBC (Open Database Connectivity/Açık Veritabanı Bağlantısı) ile uyumlu her türlü dosyaya, ADO nesnesi aracılığıyla ulaşabiliriz.

ODBC ve OLE-DB

Bu kitapçığın baştarafında, ASP dosyalarınızı geliştirmeye başlamadan önce bilgisayarınızda ODBC (Open Database Connectivity/Açık Veritabanı Bağlantısı) sürücülerinin kurulu olması gerektiğini belirtmiştik. ODBC, ADO'nun kullandığı tek sistem değildir; ve Microsoft firması, ODBC'nin yerine hızla OLE-DB adını verdiği yeni bir teknolojinin alması için yoğun çaba içinde. OLE-DB, ODBC'nin Web'de sağladığı başarının üzerine bina edilen yeni bir teknoloji. ODBC, ilişkilendirilmiş (relational) veritabanlarına erişmek üzere tasarlandığı halde OLE-DB her türlü veritabanına erişebilir. OLE-DB, ASP programlarımıza yeni nesneler kazandırabilir; kullanılmaya hazır elektronik ticaret bileşenlerini kullanmaya imkan verir. Bu konuda geniş bilgiyi, Microsoft'tan edirebilirsiniz. ASP sayfalarımızda kullanacağımız ADO nesneleri ilerde de ODBC sürücülerine erişme imkanını koruyacağı için, şimdilik sadece ODBC tekniği ile çalışmakta ve bu tekniği öğrenmekte sakınca yok. OLE-DB, ODBC'nin yerini almayacak; fakat içinde ODBC'yi de bulunduracak. Bu da şu anda oluşturacağımız ASP uygulamalarının ilerde OLE-DB tekniği ile çalışan sunucularda işleyeceği anlamına geliyor.

Şimdi ADO ile aşağıda yapacağımız küçük örnekler için bilgisayarınızda kurulu bir veritabanı programı varsa onu kullanarak bir veritabanı dosyasında uyeler adıyla şu tabloyu oluşturabilirsiniz:




Alan Adı:
Veri türü
uyeNo
AutoNumber (Birincil Anahtar/Primary Key)


uyeAdi
metin


uyeSoyadi
metin


email
metin


mesaj
memo



Daha sonra da renkler adıyla şu tabloyu yapın:


Alan Adı:
Veri türü
renkID
AutoNumber (Birincil Anahtar/Primary Key)


renk
metin


Bu tablolardan birincisine bir kaç isim ve diğer bilgileri; ikincisine ise dört-beş renk adı girin. Bilgisayarınızda veritabanı oluşturma programı yoksa bu kitapçığın kodları arasında bulunan uyeler.mdb adlı MS-Access dosyasını kullanabilirsiniz. Bu dosyayı, kişisel Web Server'ınızın kök dizinine kopyalayın. Sonra, Denetim Masası'nı açın ve adı ODBC, ODBC 32 Bit, ya da ODBC Data Source olan simgeyi çalıştırın; ikinci sekme olan System DSN'i tıklayın.
 


jockeя

Kullanıcı
Acemi üye 365-Gündür-Beraberiz! Çaylak Üye 5 Yıldır Beraberiz Bronz Üye 10 Yıldır Beraberiz Doğrulanmamış Hesap Silver Üye 15 Yıldır Beraberiz Gold Üye
1
Katılım
12 Tem 2008
Mesajlar
1,503
Tepkime puanı
0
Ticaret - 0%
0   0   0


Açılacak kutuda Add/Ekle düğmesini tıklayarak, yeni veri kaynağı oluşturmak için ilk adım olan veriyi okumakta kullanacağımız sürücüyü seçebileceğimiz kutunun açılmasını sağlayın. Burada, yukarıda oluşturduğunuz veri dosyasına uygun sürücüyü seçin. Örnek uyeler.mdb'yi kullanıyorsanız, birinci seçenek olan Microsoft Access Driver'ı seçmeniz gerekir. Son düğmesini tıklayın ve Access dosyasının kurulumunu yapmaya başlayalım. Buradaki Data Source Name (DSN, Veri Kaynak Adı), biraz sonra ADO nesnesiyle ilgili metodları ve deyimleri yazarken kullanacağımız veri adıdır; buraya "uyeler" yazın; çünkü örneklerde bu veriye "uyeler" adıyla gönderme yapacağız. İsterseniz, Description/Açıklama bölümüne veritabanının niteliğini belirten bir kaç kelime yazabilirsiniz. Sonra, Select/Seç düğmesini tıklayarak ve açılıcak diyalog kutusu yardımıyla veritabanı dosyasını kopyaladığınız yerde bulun; OK/Tamam'ı tıklayarak, veritabanı seçme işlemini tamamlayın.
DSN oluşturma kutularını sırasıyla OK/Tamam düğmelerini tıklayarak kapatın; "uyeler" verisi, şu andan itibaren bütün Web uygulamalarımızın hizmetine girmiş demektir. Internet sitenize koyacağınız ve veritabanına erişmesi gereken sayfalarınız için bu işlemi gerçek Internet ortamında da yapmak zorundasınız. Veritabanı dosyanızı Internet sitenizde kök dizinine veya bir diğer dizine kopyaladıktan sonra sistem yöneticisine ya elektronik mektupla, ya da evsahibi firmanın yönetim ve teknik destek yardımı sağlayan sayfasında veritabanınızın dosya adını, yolunu, ve DSN olarak kullanmak istedeğiniz ismi bildirerek, bizim burada yaptığımız işi Server yöneticisinin yapmasını sağlamamız gerekir. ADO'nun bize sağladığı imkanlardan yararlanabilmek için onun nesnelerini kullanılırız. Bu bölümde ADO'nun nesneleri ve metodlarını ele alacağız.



Connection (Veritabanına bağlantı)

ADO'dan yararlanabilmek için kullanacağımız ilk nesne Connection'dır. Bu nesne ile veritabanı ile bağlantı sağlarız, yol açarız:
<%Dim VeriyoluSet Veriyolu = Server.CreateObject("ADODB.Connection")Veriyolu.Open "Veri_adi"%>


Recordset (Kayıt dizisi)


<%Dim Veriyolu, KayitdizisiSet Veriyolu = Server.CreateObject("ADODB.Connection")Veriyolu.Open "Veri_adi"Set Kayitdizisi = Veriyolu.Execute("SELECT * FROM Veri_adi")%>


Recordset.Open

Veritabanına dayanan Web uygulamalarımızda sorun buradaki gibi sadece veriyi okumakla bitmeyebilir; veriyi güncelleştirmek veya silmek isteyebiliriz. Bunun için doğruca ADO'nun .Recordset metodundan yararlanmamız gerekir. .Recordset metodu ne yapar? Tıpkı ekranınızdaki bir yazının içinde duran imleç (cursor) gibi hayalî bir imleci ***ürür verilerinizin en başına koyar. Bu hayali imleci veritabanı üzerinde dolaştırmak ve gittiği yerdeki değeri okutmak bizim işimizdir.
Bir veriye bağlantıyı kurduktan sonra kayit dizimizi .Recordset metodu ile sağlayacaksak, yukarıdaki örnek kodumuzu şöyle yazmak gerekir:
<!- - #include file="adovbs.inc" - - ><%Dim Veriyolu, Kayitdizisi, SorguSet Veriyolu = Server.CreateObject("ADODB.Connection")Veriyolu.Open "Veri_adi"Set Kayitdizisi = Server.CreateObject("ADODB.Recordset")Sorgu = "SELECT * FROM Veri_adi"Kayitdizisi.Open Sorgu, Veriyolu, aOpenStatic%>Bu kod ile, .Recordset metodu son .Open komutu ile bizim için veri bağlantısını sağlar; verdiğimiz SQL Sorgusu icra edilir ve kayıt diziniz Kayitdizisi'ne kaydedilmeye hazır hale gelir. Şimdi imlecinizi ilerleterek, veriyi fiilen okutmanız gerekir; ki bunu yapmak için yukarıda kolayca .Execute metodu ile oluşturduğumuz kayıt dizisinde kullandığımız basit .MoveNext'ten daha çok imkana sahibiz: MoveFirst: Kayıt dizisinin (Recordset'in) birinci satına gider.
MoveLast: Kayıt dizisinin (Recordset'in) son satına gider.
MoveNext: Kayıt dizisinin (Recordset'in) bir sonraki satına gider.
MovePrevious: Kayıt dizisinin (Recordset'in) bir önceki satına gider.
Move: Kayıt dizisinin (Recordset'in) içinde vereceğiniz sayıya göre ilerler. Bunun için iki sayı vermeniz gerekir: başlangıç noktası ve ilerlenecek kayıt sayısı.


Şimdi gelelim RecordSet nesnemize. RecordSet.Open dediğimiz zaman bu nesnemiz ne yapar?

RecordSet, ekranımızda bir yazının içinde yanıp sönen bir imleç gibi çalışır. Yani bir nevi Hayalet Cursor. Recordset'in amacı bu imleci verilerinizin en başına koymaktır.

Artık bundan sonrası bize kalan bir iştir. Bu imleci, kayıtlar arasında çalıştırmak bizim işimizdir.
Bu imleci 4 şekilde ayarlayabiliriz...

 


jockeя

Kullanıcı
Acemi üye 365-Gündür-Beraberiz! Çaylak Üye 5 Yıldır Beraberiz Bronz Üye 10 Yıldır Beraberiz Doğrulanmamış Hesap Silver Üye 15 Yıldır Beraberiz Gold Üye
1
Katılım
12 Tem 2008
Mesajlar
1,503
Tepkime puanı
0
Ticaret - 0%
0   0   0


Forward Only: Bu imlecimizle, veritabanındaki kayıtlar arasında sadece ileri doğru ilerleyebiliriz. Geri yani yukarı gitme imkanımız yoktur. Ayrıca yeni kayıt ekleyemeyiz. Ve eğer biz açtıktan sonra, o anda başkaları tarafından değiştirilen veriler varsa, veritabanını yeniden kapatıp açana kadar göremeyiz. Eğer Adovbs.inc'le birlikte kullanıcaksak kod içindeki kullanımı adOpenForwardOnly'dir.

Static: Durağan anlamına gelir. ForwardOnly'e ek olarak, yukarı doğru ilerleyebilir ve yeni kayıtlar ekleyebiliriz... Adovbs.inc'le birlikte kullanıldığında kod kullanımı, adOpenStatic'tir... Eğer biz açtıktan sonra, o anda başkaları tarafından değiştirilen veriler varsa, veritabanını yeniden kapatıp açana kadar göremeyiz.

Dynamic: Adından da anlaşılabileceği gibi, bu cursor tipi, tam özelliklere sahip cursor tipidir. Yukarı ve aşağıya ilerleyebilir, yeni kayıt ekleyebilir ve değiştirebiliriz. Eğer biz açtıktan sonra, o anda başkaları tarafından değiştirilen veriler varsa, veritabanını yeniden kapatıp açmadan anında görebiliriz...Kod sayfasında, Adovbs.inc'le birlikte kullanıcaksak, kod içinde kullanımı adOpenDynamic'tir...


Keyset: Bu metodumuzla, başkaları tarafından değiştirilen kayıtları görebiliriz... Cursor'umuz yukarı ve aşağı ilerleyebilir. Adovbs.inc'le birlikte kod içinde kullanımı, adOpenKeyset'tir...
Kod içinde kullandığımız, adOpenStatic'in hemen yanındaki ise RecordSet nesnemizin kilit özelliğidir. Farklı çeşitlerde kilitler vardır. Bir kaç tanesini yazacağım.

AdLockReadOnly:
Kayıtlı verilerimizin değiştirilmesini, üzerine yazılmasını engellememizi sağlar. Yeni kayıt girişini engeller. Sadece Listelemeye izin verir...

AdLockOptimistic:
Bu metodumuz da kayıtlarımızın güncelleştirilmesini, yeni kayıtlar eklememizi, ve istersek silmemizi sağlar.

AdLockPessimistic: Bu metodumuz da eğer bir veritabanı üzerinde işlem yapıyorsak, işlemlerimiz bitene kadar, diğer işlem yapabilecek kişileri engellemk için RecordSet'e kilit koyar.





DSN'siz Veri Bağlantısı



Veriyolu.Open "Veri=" & Server.MapPath("..../veriler/uyeler.mdb") & "; Driver = {Microsoft Access Driver (*.mdb);"Burada, DNS'siz bağlantı için veritabanı dosyasının Server'daki göreli yerini, adını ve hangi sürücünün kullanılacağını belirtiyoruz. Aynı bağlantıyı, doğruca Jet sürücüsü için de yazabilirdik:
Veriyolu.Open "Veri=" & Server.MapPath("..../veriler/uyeler.mdb") & "; Provider=Microsoft.Jet.OLEDB4.0;"Tabiî buradaki sorun kullandığınız veritabanı dosya türüne uygun Microsoft Jet sürücüsü seçebilmektir. Bu konuda geniş bilgi Microsoft'un Internet sitesinde bulunabilir.

SQL

SQL lafları çeşitli temel komutlardan oluşur. Bunlar SELECT, FROM, WHERE, ORDER BY, GROUP BY, HAVING, UPDATE, DELETE, INSERT dir. Gördüğünüz gibi ne kadar da fakir bir dil. Biz bunlardan işimize yarayacak olanları inceleyeceğiz.
POPÜLER SQL LAFLARI
TABLODAN TÜM KAYITLARI TÜM ALANLARIYLA SEÇMEK
Yani tablonun tam***** seçmek için kullanacağımız SQL lafı şudur:
sözdizimi:

"SELECT * FROM <tablo_adi>"
TABLODAN KAYITLARI İSTEDİĞİMİZ ALANLARI SEÇMEK
söz dizimi:
"SELECT <alan_adi_1>, <alan_adi_2>, .. , <alan_adi_n> FROM <tablo_adi>"
TABLODAN BELİRLİ KAYITLARI SEÇMEK (SÜZGEÇLEME)
Örneğin tablomuzda kent diye bir alanımız var. Ve mevcut kayıtlar arasından kenti "ankara" olanları seçmek istiyoruz.
SQL lafımız:

"SELECT * FROM tablomuz WHERE kent = 'ankara' "
Birden fazla koşul da süzgeç de koyabiliriz. Tablomuzda yas diye bir alan olsun. Kenti ankara olan ve yaşı 30 dan büyük olanları seçmek için SQL lafı:
"SELECT * FROM tablomuz WHERE kent='ankara' AND yas < 37"
Gördüğünüz gibi WHERE ifadesi bize kayıtları süzgeçleme imkanı veriyor. Burada = , > , < , <> gibi mukayese operatörleri kullanılıyor.
TABLODAN KAYITLARI SIRALI HALDE SEÇMEK
Örneğin tablomuz da kenti 'ankara' olanları yaş sırasında seçmek istiyoruz. Bunun için ORDER BY alan_adi yazımını kullanırız. Şunun gibi :
"SELECT * FROM tablomuz WHERE kent = 'ankara' ORDER BY yas"
Eğer azalan sırada seçeceksek ORDER BY alan_adi DESC yazımını kullanacağız.
SQL hakkında bilgiler sonraki sayfada devam ediyor.
TABLODAN KAYIT SİLMEK
Örneğin tablomuzdan yaşı 18 den küçük olanları silmek için SQL lafı:
"DELETE FROM tablomuz WHERE yas < 18"
 


jockeя

Kullanıcı
Acemi üye 365-Gündür-Beraberiz! Çaylak Üye 5 Yıldır Beraberiz Bronz Üye 10 Yıldır Beraberiz Doğrulanmamış Hesap Silver Üye 15 Yıldır Beraberiz Gold Üye
1
Katılım
12 Tem 2008
Mesajlar
1,503
Tepkime puanı
0
Ticaret - 0%
0   0   0


TABLOYA KAYIT EKLEMEK
SQL="INSERT INTO tblVeri (Adi,Soyadi,Telefon,Dogum_Tarihi,Mail) values
('"&txtAdi&"','"&txtSoyadi&"','"&txtTelefon&"','"& txtDogum_Tarihi&"','"&txtMail&"')"


LIKE KULLANARAK KAYIT SEÇİMİ YAPMAK

LIKE kullanarak tam karşılaştırma yapamadığımız alanlarla kayıt seçme imkanı elde ederiz. WHERE ifadesinde alan adından sonra kullanılan karşılaştırma operatörü yerine LIKE yazılır. Bu ifadeyle veritabanımızda arama motoru gibi bir şey bile yapabileceğiz ileride. Şimdi örnek kullanımlar görelim.
Tablomuzdan adı "A" ile başlayan müşterileri seçeceğiz.
"SELECT * FROM tablomuz WHERE musteri_adi LIKE 'A%' "
Tablomuzdan yazı alanında "asp" içeren kayıtları seçeceğiz. (bir arama motoru misali)
"SELECT * FROM tablomuz WHERE yazi LIKE '%asp%' "
Evet bu temel komutlar ile yolumuza devam edeceğiz. Artık bu laflar ile veritabanımızdan istediğimiz rafinelikte kayıt seçebiliriz, silebiliriz, arayabiliriz.


VERİTABANI İŞLEMLERİ


Veritabanı muhabbetimiz tam gaz devam ediyor. Bu yazıda bir çok veritabanı operasyonunu birlikte göreceğiz. Kayıt ekleme, silme, güncelleme gibi. Kullanacağımız veritabanı dosyası burada(8,15 kb). Bu dosya C:\inetpub\wwwroot\db konumunda olsun. Sıra geldi script dosyalarımıza.
KAYITLAR.ASP
Öncelikle kayıtları listeleyeceğimiz bir arabirim inşa ettik. kayitlar.asp ye göz atalım. Bu ve diğer ASP dosyaları C:\inetpub\wwwroot\ konumunda olsun.
Kod1. kayitlar.asp

<%
Veri_yolu = Server.MapPath("db/kisiler.mdb")
Bcumle = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Veri_yolu
Set bag = Server.Createobject("ADODB.Connection")
bag.Open (Bcumle)
Set kset = bag.execute("SELECT * FROM kisiler")
%>
<% i=1 %>
<p><a href="kayit_yeni.asp">Yeni Kayıt</a></p>
<table border=1>
<tr>
<th>#</th>
<th>Ad</th>
<th colspan=2>Eylemler</th>
</tr>
<% Do While Not kset.eof %>
<tr><td><%= i %></td>
<td><%= kset("ad") %></td>
<td><a href="kayit_duzenle.asp?id=<%= kset("id") %>">düzenle</a></td>
<td><a href="kayit_sil.asp?id=<%= kset("id") %>">sil</a></td></tr>
<% kset.movenext %>
<% i = i + 1 %>
<% Loop %>
</table>
<%
kset.Close
Set kset = Nothing
bag.Close
Set bag = Nothing
%>

Bu script, basit bir şekilde /db alt dizinindeki kisiler.mdb ile bağlantı kuruyor. kisiler tablosundan aldığı tüm kayıtların "ad" alanındaki değerlerini yazdırıyor. Ve de her bir kayıt için düzenleme ve silme linkleri oluşturuyor. Linkler oluşturulurken sorgu stringi içinde eylemi gerçekleştirecek script dosyasına "id" anahtarıyla kaydın "id" alanındaki değeri gönderiliyor. Tabi bunlar kayıtseti sonunda duracak bir döngü içerisinde yapılıyor. Veriler tablo hücrelerine döngüyle döküldüğüne de dikkat ediniz.


 


jockeя

Kullanıcı
Acemi üye 365-Gündür-Beraberiz! Çaylak Üye 5 Yıldır Beraberiz Bronz Üye 10 Yıldır Beraberiz Doğrulanmamış Hesap Silver Üye 15 Yıldır Beraberiz Gold Üye
1
Katılım
12 Tem 2008
Mesajlar
1,503
Tepkime puanı
0
Ticaret - 0%
0   0   0


KAYIT_DUZENLE.ASP ve KAYIT_GUNCELLE.ASP
Kayıtların listelendiği kayitlar.asp de her kaydın yanında bir düzenle bağlantısı var. Bu bağlantı ile duzenle.asp dosyasına işaret ediliyor. Bir de sorgu cümlesi konuluyor yanına: "duzenle.asp?id=XX" Buradaki XX yerine geçerli kaydın id alanındaki değeri yazılıyor. Şimdi kayıt_duzenle.asp ye bakalım.
Kod2. kayit_duzenle.asp

<%
id = Request.Querystring("id")
If Not Isnumeric(id) Or Len(id)=0 Then
mesaj "Yanlış Sorgu Cümlesi"
End If
'-----------------------------------------------------------------------------------
Veri_yolu = Server.MapPath("db/kisiler.mdb")
Bcumle = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Veri_yolu
Set bag = Server.Createobject("ADODB.Connection")
bag.Open (Bcumle)
Set kset = bag.execute("SELECT * FROM kisiler where id =" & id)
If kset.eof Then
mesaj "Olmayan Kayıt İstendi"
End If
%>

<a href="kayitlar.asp">Kayıtlar</a>
<form method=post action="kayit_guncelle.asp">
<table border=1>
<tr>
<td>Ad</td>
<td><input ******"text" name="ad" value="<%= kset("ad") %>"></td>
</tr>
<tr>
<td>Teleon</td>
<td><input ******"text" name="telefon" value="<%= kset("telefon") %>"></td>
</tr>
<tr>
<td>Email</td>
<td><input ******"text" name="email" value="<%= kset("email") %>"></td>
</tr>
<tr>
<td>ICQ</td>
<td><input ******"text" name="icq" value="<%= kset("icq") %>"></td>
</tr>
<tr>
<td>Adres</td>
<td><input ******"text" name="adres" value="<%= kset("adres") %>"></td>
</tr>
<tr>
<td>Doğum Günü</td>
<td><input ******"text" name="dgunu" value="<%= kset("dogum_gunu") %>"></td>
</tr>
<tr>
<td></td>
<td><input ******"submit" value="güncelle"></td></tr>
</table>
<input ******"hidden" name="id" value="<%= kset("id") %>">
</form>

<%
kset.Close
Set kset = Nothing
bag.Close
Set bag = Nothing
%>
<%'--------------------------%>
<% Sub mesaj(msg) %>
<p><%= msg %></p>
<% response.end %>
<% End Sub %>
<%'--------------------------%>

Aslında bu scriptin de öncekinden pek farkı yok. sadece sorgu cümlesinden "id" anahtarındaki değeri alıyor. Ve bu id değerini kullanarak tablodan tek kayıt seçiyor. ("SELECT * FROM kisiler where id =" & id). Seçtiği kayda ait değerleri ise form input alanlarına döküyor. Formun action özelliğine ise kayit_guncelle.asp yazılmış. Güncelleme işini bu dosyaya havale ediyoruz.
Kod3. kayit_guncelle.asp

<%
ad = Request.Form("ad")
id = Request.Form("id")
telefon = Request.Form("telefon")
dgunu = Request.Form("dgunu")
icq = Request.Form("icq")
email = Request.Form("email")
adres= Request.Form("adres")
'-----------------------------------------------------------------------------------
Veri_yolu = Server.MapPath("db/kisiler.mdb")
Bcumle = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Veri_yolu
Set bag = Server.Createobject("ADODB.Connection")
bag.Open (Bcumle)
Set kset = Server.Createobject("ADODB.Recordset")
sql = "SELECT * FROM kisiler WHERE id = " & id
kset.open sql, bag, 1, 3
kset("ad") = ad
kset("telefon") = telefon
kset("email") = email
kset("adres") = adres
kset("icq") = icq
kset("dogum_gunu") = dgunu
kset.update
kset.Close
Set kset = Nothing
bag.Close
Set bag = Nothing
Response.Write "<p>Kayıt Yapıldı.. Başka bir arzunuz? "
Response.Write "<p><a href=""kayitlar.asp"">Kayıtlar</a>"
%>


KAYIT_YENI.ASP

kayitlar.asp de Yeni Kayıt linkinde işaret edilen kayit_yeni.asp... Yaptığı iş şu. Veritabanına bağlanıp ilgili tablodan oluşturduğu kayıt seti içine yeni bir kayıt ekliyor. Kayıtsetini güncelliyor, "id" alanındaki değeri bir değişkende saklıyor. nesneleri kapatıyor. Ve de kayit_duzenle.asp dosyasına "id" anahtarıyla yeni eklenen kaydın "id" alanındaki değeri gönderiyor. Yani bu sayfa sadece işlem yapıyor. Kullanıcıya gözükmeden işlemi tamamlayıp düzenleme sayfasına yöneliyor.
Kod4. kayit_yeni.asp

<%
response.buffer=true
Veri_yolu = Server.MapPath("db/kisiler.mdb")
Bcumle = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Veri_yolu
Set bag = Server.Createobject("ADODB.Connection")
bag.Open (Bcumle)
Set kset = Server.Createobject("ADODB.Recordset")
sql = "SELECT * FROM kisiler"
kset.open sql, bag, 1, 3
kset.addnew
kset.update
id = kset("id")
kset.Close
Set kset = Nothing
bag.Close
Set bag = Nothing
Response.Redirect "kayit_duzenle.asp?id=" & id
%>



 


jockeя

Kullanıcı
Acemi üye 365-Gündür-Beraberiz! Çaylak Üye 5 Yıldır Beraberiz Bronz Üye 10 Yıldır Beraberiz Doğrulanmamış Hesap Silver Üye 15 Yıldır Beraberiz Gold Üye
1
Katılım
12 Tem 2008
Mesajlar
1,503
Tepkime puanı
0
Ticaret - 0%
0   0   0


KAYIT_SIL.ASP
Sorgu cümlesindeki "id" anahtarından alınan id değeri kullanılarak şu SQL ifadesi oluşturuluyor.
DELETE FROM kisiler WHERE id = " & id . Ve bu ifade bağlantı tarafından yürütülüyor (execute). Sonuçta id si alınan kayıt tablodan silinmiş oluyor. Kullanıcı da geldiği sayafaya yönleniyor.
Kod5. kayit_sil.asp

<%
response.buffer = True
id = Request.Querystring("id")
'-----------------------------------------------------------------------------------
Veri_yolu = Server.MapPath("db/kisiler.mdb")
Bcumle = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Veri_yolu
Set bag = Server.Createobject("ADODB.Connection")
bag.Open (Bcumle)
sql = "DELETE FROM kisiler WHERE id = " & id
Set kset = bag.execute(sql)
Set kset = Nothing
bag.Close
Set bag = Nothing
Response.Redirect (Request.ServerVariables("HTTP_REFERER"))
%>
 


rammstein

Kullanıcı
Acemi üye 365-Gündür-Beraberiz! Çaylak Üye 5 Yıldır Beraberiz Bronz Üye 10 Yıldır Beraberiz Doğrulanmamış Hesap Silver Üye 15 Yıldır Beraberiz Gold Üye
2
Katılım
12 Mar 2010
Mesajlar
2,150
Tepkime puanı
0
Yaş
32
Ticaret - 0%
0   0   0


Teşekkürler :)
 


 

 
Home Register Log In
Üst