Bir çok yazılıma yeni başlayan arkadaşlarımız alışveriş sepeti uygulaması için bir çözüm aramaktadır bu konu hakkında size örnek olarak
http://www.fenbilimleri.org/default.aspxsayfasının yapımını anlatacağım fakat bizim için gereken yazılım Visual Studio 2008
Kendisinde olan arkadaşlar visual studio 2005 ya da 2008 de olabilir yeni bir asp.net sitesi açınız ve adım adım izleyiniz
öncelikle formomuz üzerine bir textbox ve iki button ekleyelim
butona basınca (on_click) olayında textboxtan gelen değeri dizi elemanımıza ekliyeceğiz dizi içerisindeki elemanları bir session değerine atıyacağız ki dizimiz sayfalarda dolaştıkça silinmesin ve sayfaya yazdırırken isim ya da fiyat olarak azalan - çoğalan olarak sıralıyacağız
bu formu daha sonra kendinize göre düzenleyerek güzel bir alışveriş sepeti uygulamasına çevirebilirsiniz
gelelim textbox'umuza ad vermeye (forma eklenen her araca mümkün olduğunca isim verelim)
ben textbox'a adi ismini verdim
button1 e ekle
ve button2 ye temizle ismini verdikten sonra gelelim kodlarımıza...
kodlamada şu şekilde bir yötem kullanıcağım
text değerleri eklendikçe diziye eklenecek ve session değerine aktarılabilecek ancak en fazla 20 tane değer girilebilecek (istenilirse arttırılabilir)
ve sonunda kod satırımız
)
öncelikle ekle butununun on click olayı üzerindeki kodlarımızı oluşturulam ve satır satır yorumlayalım
sabiti değerleri const ile tanımlayalım dizi içerisinde 2 alan kullanıcağım 1.si id ve 2.si ad alanı
Dim adi1 As Byte = 0
Dim no1 As Byte = 1
dizimizi oluşturalım dizimiz 2 boyutlu bir dizidir ve içerisinde 20*2 kadar eleman barındırabilir
Dim dizim(20, 1) As String
eğer daha önceden dizimizin içerisine eleman eklenmiş ise bu kısım dizi içerisindeki elemanları sessiona uygulayacaktır fakat bu kısmın kodunu daha sonra tekrar görüceğüz
If IsArray(Session("dizi")) Then
dizim = Session("dizi")
End If
şimdi dizimizde boş yer bularak elemanımızı(öğrencimizi) ekleyebiliriz bunun için bir döngü kullanmalıyız sayı belirli olduğu için
for - next döngüsü işimize görecektir
Dim i As Byte = 0
For i = 1 To 20
dizimizdeki ilk elemanı daha önce no1 olarak tanımlamıştık ve eğer no1 boş ise bu değerde bulunan elemana gerekli verileri gireriz
bunu if ile sorguluyacağız
eğer dizimizin i elemanının no1 alanı boş ise
If dizim(i, no1) = "" Then
elemanımızı ekliyelim
burada ben id numarasını Rnd ile aldım tabiki veri tabanlı uygulamalarda bu kısmı değiştirmeniz gerekir
dizim(i, no1) = CStr(CInt(Rnd() * 9998 + 1))
dizim(i, adi1) = Trim(CStr(adi.Text))
elemanımızı ekledikten sonra listede kaç kişi / öğe bulunduğunu yazdıralım
Response.Write("Listede " & i & " kadar öğrenci bulunmakta")
döngünün tekrar etmemesi gerekmekte ki tüm içerik ilk eklediğimiz eleman ile dolmasın diye for döngüsünden çıkıyoruz
Exit For
eğerki dizimizde boş yer yok ise
Else
ve eğer döngüde tamamlanan i değerimiz 19 ise
If i = 19 Then
dizimiz dolmuş demektir burda kullanıcıya mesaj göndermeliyiz
Response.Write("Daha Fazla Öğrenci Ekliyemezsiniz")
End If
End If
Next
ve bir session değeri oluşturarak bu dizimizin sayfalar arasında dolaşırken kaybolmamasını sağladık
Session("dizi") = dizim
şimdi gelelim yazdırma fonksiyonumuza (sırasız olarak)
bunun için ben yazdır() adında bir fonksiyoon oluşturacağım ve buttonun click okayında bu fonksiyonu çağıracağım
Sub yazdir()
'sabit değerleri tekrar tanımlamalıyız
Dim adi1 As Byte = 0
Dim no1 As Byte = 1
'session içerisindeki dizimizi tekrar almamız gerekmekte
Dim dizim(20, 1) As String
'eğer session bir dizi ise dizimize aktaralım
If IsArray(Session("dizi")) Then
've dizimizi bu session içerisindeki değerler ile dolduralım
dizim = Session("dizi")
End If
'döngümüzü kuralım
Dim i As Integer = 0
'bir tablo içerisini yazdıralım
Response.Write("
")
Response.Write("Öğrenci Numarası | Öğrenci Adı |
")
For i = 1 To 20
If i Mod 2 = 0 Then
Response.Write("") Else Response.Write(" |
") End If
Response.Write(dizim(i, no1)) Response.Write(" | ") Response.Write(dizim(i, adi1)) Response.Write(" |
")
Next
Response.Write("
")
end sub
ve yazdırma fonksiyonumuz hazır sıralı olarak yazdırma fonksiyonu ise şu şekilde olucaktır ben bu fonksiyona sirala() diyeceğim ve eğer dizimde eleman var ise bu sıralama işlemini yapacak
button ekle içerisinde click olayına
yazdir()
yazarak yazdırma fonksiyonunu kullanabiliriz
sıralı yazdırmak için öncelikle dizimizde eleman olup olmadığını kontrol edelim
yani dizim içerisinde son eleman boş değil ise sıralayalım bunu daha değişikte düşünebilirsiniz ilk elemandan itibaren sıralayabilirsiniz mesela ilk eleman için
dizim(0,1) olucaktır... dizim(x,0) değeri text dizim(x,1) değeri sayırdır
If CInt(dizim(20, 1)) <> 0 Then
sirala()
End If
gelelim sıralama fonksiyonuna
sub sirala()
'sabit değerlerimizi tanımlayalım
'belirli değerleri const ile tanımlayalım
Dim adi1 As Byte = 0
dizikont()
Dim no1 As Byte = 1
'dizimizi alalım ve en küçük değerini bulalım
Dim dizim(20, 1) As String
'eğer session bir dizi ise dizimize aktaralım
If IsArray(Session("dizi")) Then
've dizimizi bu session içerisindeki değerler ile dolduralım
dizim = Session("dizi")
End If
'döngü elemanları
Dim i As Byte = 0
Dim k As Byte = 0
'yer değişecek elemanlarımız
Dim degisno As String
Dim degisad As String
Dim degisnok As String
Dim degisadk As String
'dizimizdeki elemanları yer değiştirecek algoritmamız
For i = 0 To CInt(dizim.Length - 1)
For k = i + 1 To 20
If CInt(dizim(i, no1)) > CInt(dizim(k, no1)) Then
degisno = dizim(i, no1)
degisad = dizim(i, adi1)
degisnok = dizim(k, no1)
degisadk = dizim(k, adi1)
'i ve k yer değişecek
dizim(i, no1) = degisnok
dizim(i, adi1) = degisadk
dizim(k, no1) = degisno
dizim(k, adi1) = degisad
End If
Next
Next
'sıralamayı tamamladık şimdi yazdırma işlemine geçelim
Dim j As Byte = 0
Response.Write("
")
Response.Write("
Sıra | Öğrenci no | Öğrenci Adı |
")
For j = 1 To 20
If j Mod 2 = 0 Then
Response.Write("") Else Response.Write(" |
") End If If j Mod 2 = 0 Then Response.Write("") Response.Write(j) If j Mod 2 = 0 Then Response.Write("") Response.Write(" | ") If j Mod 2 = 0 Then Response.Write("") Response.Write(dizim(j, no1)) If j Mod 2 = 0 Then Response.Write("") Response.Write(" | ") If j Mod 2 = 0 Then Response.Write("") Response.Write(dizim(j, adi1)) If j Mod 2 = 0 Then Response.Write("") Response.Write(" |
")
Next
Response.Write("
")
end sub
gelelim en son temizleme işlemimize temizle butonunun click olayına
Session("dizi") = ""
Response.Redirect("default.aspx")
bunu yazdığımız zaman tüm dizi içindeki bilgilerimiz kaybolucaktır
biraz mantık yürütebilirseniz eklediğimiz elemanları teker tekerde silebilirsiniz orasını size bırakıyorum
ve herşey bu kadar basit yakında asp, php ve Flash uygulamaları içinde yazılımı çevirip burda konu olarak eklerim bu tamamen büyük alışveriş sitelerinde gördüğünüz alışveriş sepetinin bire bir uygulamasıdır