Birçok e-ticaret sitesinde görmüşsünüzdür: Ürünü sepetinize atarsınız, isteğinize göre başka ürünlerde alır, sonra ödemeye gidersiniz. Peki, siz bu işlemleri yaparken sunucuda ne gibi yazılımsal olaylar dönüyor?Bu konuyu ASP açısından sizler için ele aldım.E-ticaret sitelerindeki sepet için birçok uygulama geliştirilebilir. Örneğin, üyelerin aldığı ürünler veritabanında, xml dökümanda, hatta bir metin(text) dökümanın da bile saklanabilir.Fazla detaya inmeden, kolları sıvayıp, yazılımımızı geliştirelim.Araçlar :
* 1 adet Ayarlar.asp* 1 adet Urunler.asp* 1 adet Sepet.asp* 1 adet Ödeme.asp* 1 adet Class(Sınıf)Aşağıdaki Class ‘ ı Ayarlar.asp sayfamıza yazıp, daha sonra bu sayfamızı , Urunler.asp , Sepet.asp, Ödeme.asp sayfalarına include(içine dahil etme) yapıyoruz.Class AlmostromAspBasketPublic ObjDictionary’Class ilk yüklendiğinde yapılması gerekenlerPrivate Sub Class_Initialize()If IsObject(Session(“UrunIDleri”)) ThenSet ObjDictionary = Session(“UrunIDleri”)ElseSet ObjDictionary = Server.CreateObject(“Scripting.Dictionary”)End IfEnd SubPublic Sub VeriEkle(Byval intUrunID , Byval intValue)If ObjDictionary.Exists(intUrunID)=False ThenObjDictionary.Add intUrunID , intValueEnd IfEnd SubPublic Sub VeriDuzenle(Byval intItemID , Byval intNewValue)If ObjDictionary.Exists(intItemID)=true ThenObjDictionary.item(intItemID) = intNewValueend ifEnd SubPublic Sub VeriSil(Byval intItemID,Byval boolAll)If boolAll=False ThenObjDictionary.Remove(intItemID)Elseif boolAll=True ThenObjDictionary.RemoveAll()End IfEnd SubPublic Function KayitSayisi()KayitSayisi = ObjDictionary.CountEnd Function’Class sonlandığı anda yapılması gerekenlerPrivate Sub Class_Terminate()If IsObject(ObjDictionary) ThenSet ObjDictionary = NothingEnd IfEnd SubEnd Class
Seneryo: Üyelerimizden biri sepetine 1 adet ürün atıyor, daha sonra bu ürünü satın almak için ödemeye gidiyor.Süreç:
Urunler.asp sayfamızaki ürünlerimizden biri HP PDA olsun.Üyemiz bu ürünü Sepeteme Ekle linkine tıklayarak sepetine atıyor.Linkimiz: Sepet.asp?UrunID=78Sepetim.asp sayfası :
Dim UrunIDDim SepetimUrunID = Request.QueryString(“UrunID”)Set Sepetim = new AlmostromAspBasketif UrunID <>“” thenSepetim.VeriEkle(UrunID,1)end if
Sepet.asp sayfasında , üyemizin ürün bilgisini koleksiyon şeklinde tutmak için sınıfımızın bir kopyasını yaratarak içerdeki VeriEkle metoduna, UrunID numarasını ve 1 parametresini gönderdik.Burada, 1 parametresi UrunID nin içindeki değeri(Value)dir.Şuanki değerler: UrunID = 1 yani 78=1Üyemiz, bu üründen 2 adet almış olsaydı: UrunID =2 yani 78=2 değerini almış olacaktı.Üyemizin Sepetinde kaç adet ürün olduğunu göstermek için:
Dim AdetAdet = Sepetim.KayitSayisi()if Adet = 0 ThenResponse.Write(“Sepetiniz boştur.”)ElseResponse.Write(“Sepetinizde “& adet &” ürün bulunmaktadır.”)End if
Üyemizin Sepetinden 1 adet ürün silmek için:
Sepetim.VeriSil(UrunID,False)
Üyemizin Sepetindeki tüm ürünleri silmek için:
Sepetim.VeriSil(UrunID,True)
Üyemizin Sepetindeki ürünün âdetini 1 arttırmak için:
Sepetim.ObjDictionary(UrunID) = Sepetim.ObjDictionary(UrunID) + 1
Üyemizin Sepetindeki ürünün âdetini 1 eksiltmek için:
Dim DegeriDegeri = Sepetim.ObjDictionary(UrunID)if Degeri => 1 ThenSepetim.ObjDictionary(UrunID) = Degeri – 1end if
Sepet.asp sayfamızdaki adet arttırma , ürünü silme gibi işlemler bittikten sonra, sayfamızın en altına bu kodu koyuyoruz.Set Session(“UrunIDleri”) = Sepetim.ObjDictionarySepetim = Nothing
Şimdi üyemiz ödemeyi yapacak, Odeme.asp sayfasına gidiyor.Odeme.asp Sayfası:
Dim AnahtarlarAnahtarlar = Sepetim.ObjDictionary.KeysFor i = 1 To Sepetim.KayitSayisi()Response.Write(Anahtarlar(i-1))‘Burada SQL sorgusuna UrunID yi ekleyebilir ve ya SQL sorgu oluşturup bir sonraki aşamada bu sorguyu çalıştırabilirsiniz.Next
Yukarıda, Anahtarlar(i-1) yazmamızın nedeni: Üyenin eklediği tüm ürünlerinin, dizi içinden sırası ile 0’ dan başlayarak alınmasıdır.Yani Anahtarlar içindeki, indexi 0 numaralı olan elemanın ismini yani UrunID yi elde ediyoruz.Örneğin : Anahtarlar(0) dersek bize 78 değerini dönecektir.78 ‘ de nerden çıktı deyenlerin sesini duyar gibiyim 🙂 Lütfen yazımı baştan dikkatli okuyunuz.Tüm işlemlerden sonra, üyemize, hangi ürünü aldığını gösterip her ürünün birim fiyatları ile adetlerini çarparak varsa KDV vs ekleyerek sonucu gösteriyoruz.Bir sonraki yazımda görüşmek üzere.