isminiz : Şifreniz : Güvenlik Kodu :956751 Hatirla :

  Kalbimingulu Kalplerin ve Sevginin Bulustugu Site Kalbimin Gülü Forumuna HoÅŸgeldiniz || Asp Scriptleri
   ASPde ??inize Çok Yarayacak Fonksiyonlar

23.10.2010 15:52 Okunma Sayisi 1558 Defa
Kervanlar
[Genel sorumlu]



Mesaj sayisi : 379
Giris sayisi : 2844
Konu puani : 0  Toplam P : 107
Konuya Puan ver
uye bilgileri

ASP'de ??inize Çok Yarayacak Fonksiyonlar

Asp'de VbScript fonksiyonlar?n? ve baz? özellikleri kullanarak i?lemlerinizi daha kolay, daha az vakitde, daha güçlü ve daha esnek yapabilirsiniz.

??lenecek fonksiyonlar ve aç?klama:

1 Replace : Verilerimiz içerisindeki kelimeleri istedi?imiz ?ekilde de?i?tirme yapmak için kullan?l?r.
Ayr?nt?l? aç?klama ve örnekler yaz?n?n devam?nda.

2 Function : Fonksiyon i?lemi toplu i?lem dosyalar? olarak dü?ünülebilir, sayfa içerisinde s?k s?k yapt???m?z i?lemleri function olarak sayfam?za koyduktan sonra verilerimize bu function ile düzenleyebiliriz, veya yapmak istedi?imiz hesaplamalar? biçimlendirmek istedi?imiz yaz?lar? bir Function bölüm açarak biçimlendirir ve sayfa içerisinde istedi?imiz yerde function'u ça??rarak kullanabiliriz.
Ayr?nt?l? aç?klamalar ve örnekler yaz?n?n devam?nda.

3 Left,Right,Len,Ucase,LCase,Tri m,Mid,Instr : Genelde kelimeler üzerinde i?lem yapmak için kullan?l?r. Ayr?nt?l? aç?klamalar ve örnekler yaz?n?n devam?nda.

4 For..Next : Herhangi bir i?lemi bu data da olabilir, bizim istedi?imiz kadar tekrarlamam?z? sa?lar
Ayr?nt?l? aç?klamalar ve örnekler yaz?n?n devam?nda.

5 UBound, Split : UBound dizideki içerisindeki eleman say?s?n? verir, Split ise verdi?imiz ayraç ile bir dizedeki de?erleri bölerek stringlere atamam?z? sa?lar. Genelde uzun verilerle de?i?ik i?lemler yapmak için veya Stringleri düzenli ifadelere ve de?erler döndürmek için kullan?l?r.
Ayr?nt?l? aç?klamalar ve örnekler yaz?n?n devam?nda.

??e ba?layal?m.

1 Replace : Bir çok script yazar? kötü niyetli ki?ilerin sayfas?na zararl? kodlar yazarak bozulmas?ndan ?ikayetçidir, Ayr?ca kelimelerde çe?itli düzenlemeler yapmak bir ölümdür VbScript 'de kelimeleri de?i?tirmek için fonksiyon bulunmaktad?r, Bu fonksiyonu kullanarak zararl? kodlardan ve kelime i?lemlerinden kolay ?ekilde s?yr?labiliriz.

Kullan?m?:
Replace ("De?i?tirilecek kelime","Hangi harfler de?i?tirilecek","Ne diye de?i?tirilecek")

Örnek:
<%
duzenlenmis_deger = Replace("Merhaba .net ailesi."," .net"," .NET")
duzenlenmis_deger = Replace(duzenlenmis_deger," .NET","<font color=red> .NET</font>")
%>

Örnek'tende anlayaca??n?z gibi Merhaba .net ailesi kelimesinin içerisindeki .net kelimesini .NET olarak de?i?tirdik.daha sonra de?i?tirdi?im de?eri tekrar ikinci bir Replace ile font rengini k?rm?z? yapt?k. dikkat etmeniz gereken sadece s?ralama Hangi de?erin içerisindeki hangi kelimeyi hangi kelimeyle de?i?tirece?imiz yaz?yoruz. Bir örnek daha yapal?m bu örnektede zararl? baz? kodlar? temizleyelim.

<%
kelime = "Merhaba naber nas?l gidiyor.? <script>alert('Ben zararl? bir kodum')</script>"
duzenlenmis_kelime = Replace(kelime,"<","")
duzenlenmis_kelime = Replace(duzenlenmis_kelime,">" ,"")
duzenlenmis_kelime = Replace(duzenlenmis_kelime,"'" ,"")
duzenlenmis_kelime = Replace(duzenlenmis_kelime,"li ke","")
duzenlenmis_kelime = Replace(duzenlenmis_kelime,"se lect","")
Response.Write duzenlenmis_kelime
%>

San?r?m replace ile ilgili bu kadar örnek yeterli.


2 Function : Ço?umuz script yazarken bir i?leme birden fazla gerek duyar?z, ayn? ?eyleri tekrar tekrar yazmakta sizi oldukça rahats?z ediyorsa sayfan?z içerisinde bir function yazarak bu fonksiyondan yararlanabiliriz. Mesela bir de?er hesaplama , Kelimeleri biçimlendirme gibi olaylar, siz yaz?lar?n?z? normal olarak yazars?n?z daha sonra biçimlendirilecek veya hesaplanacak de?eri fonksiyona gönderirseniz fonksiyon'da sizin gönderdi?iniz de?eri al?r ve sizin prosedürlerinize göre biçimlendirir ve ç?kt?y? size verir. Bu hem asp sayfan?z? karma??kl?ktan kurtar?r hem de sizin daha rahat ve h?zl? kod yazman?z? sa?lar.

Kullan?m?:
Function fonksiyon_adi
........... i?lemler
End Function

Fonksiyonun kullan?m? yukar?daki biçimdedir, ama genelde fonksiyonlar da haz?r i?levler veya kendi hesaplad??? de?erler kullan?lmaz bunun yerine yukar?da belirtti?imiz gibi bizim atad???m?z fonksiyona gönderdi?imiz de?erler biçimlendirilir hesaplan?r, Onun için kullan?m? genelde a?a??daki ?ekildedir.

Function fonksiyon_adi(gelen_deger)
.......... i?lemler
fonksiyon_adi = gelen_deger veya islenmis_deger
End Function

Dikkat ederseniz yukar?daki fonksiyon ile iki fark? var, Birincisi bir parantez aç?p gelen_deger yazm???z yani fonksiyonda yap?lacak i?lemlere bir de?er atam???z, atam???z da bunu nas?l yapm???z. bunu asp kodlar?n?z? yazarken fonksiyon_adi("Fonksiyona gidecek de?er") ?eklinde yapabilirsiniz.

?kincisi ise fonksiyonu sonland?rmadan fonksiyon_adi diye bir de?i?ken aç?p buna de?er atam???z bunun sebebi'de fonksiyona gelen_deger 'e i?lem yapt?k al karde?im sonucu da bu demek.

Örnek:
?imdi biz ö?retmeniz ders notlar? olan bir sayfa yap?yoruz diyelim biz veriyi yazarken ahmet 50, mehmet 40 ald? diye yaz?yoruz buraya kadar her ?ey tamam ama ben istiyorum ki benim yazd???m 50'nin 40'?n yan?na bir parantez aç?p finalde almas? gereken notu da script'in hesaplay?p yazmas? , onlarca da ö?rencimiz var hemen bir fonksiyon yazal?m o zaman bu s?navda(1.s?nav) ald???n notun karne notuna %30 ikinci s?navda ald??? notunda karne notuna %70 etki edece?ini varsayarsak.

'?lk önce sayi_hesabla'da parantez içerisine yazd???m?z de?eri al?yoruz.
Function sayi_hesapla(deger)
'Gelen de?eri ilk s?nav notu olarak bir de?i?kene atad?k
ilk_sinav_notu = deger
'?lk s?navda alm?? oldu?u notun karneye ne kadar etki edece?ini bulduk
ilk_sinav_etki = ((deger * 30) /100)
'Ve ikinci s?navda almas? gereken notuda hesaplay?p ikinci_sinav_gereken_not de?i?kenine atad?k
ikinci_sinav_gereken_not = FormatNumber(((50 - ilk_sinav_etki) * 100 / 70),0)
'?imdi s?ra son a?amaya geldi ilk önce fonksiyon_adi 'na bir de?er açt?k ve fonksiyon sonucunda:
'?lk önce bizim ilk ald???m?z de?eri daha sonra & koyup hesaplad???m?z de?eri yazd?r?yoruz.
sayi_hesapla = deger &"("& ikinci_sinav_gereken_not &")"
'Ve fonksyonumuzu bitiriyoruz.
End function

Üsteki ?ekilde bir fonksiyon yazd?ktan sonra tek yapmam?z gereken normal ?ekilde ö?rencilerin notlar?n? yazarken asp sayfam?zda sayi_hesapla("45") ?eklinde ö?rencinin notunu fonksiyona yollamak. Örnek vermek gerekirse;

Ömer, <%=sayi_hesapla("20")%>
?ahin,<%=sayi_hesapla("40")%>
Ne?et, <%=sayi_hesapla("50")%> siye yazd???m?zda ekrana ç?kt? olarak.:

Ömer, 20(63)
?ahin,40(54)
Ne?et, 50(50) bunu dökecektir.

3 Left, Right, Len, Ucase, LCase, Trim, Mid, Instr : Bunlar? k?saca aç?klamak gerekirse:
Left: Kelimenin solundan istedi?iniz kadar bir karakter al?r.

Kullan?m? : Left("??lem yap?lacak Kelime",Kelimeden al?nacak karakter say?s?)

Örnek:
kelime = "merhaba ben bir makaleyim."
soldan_al = Left(kelime,7)
Response.Write soldan_al

Yukar?daki ?ekilde bir kullan?m bize ç?kt? olarak merhaba kelimesini verir.

Right: Kelimenin sa??ndan istedi?iniz kadar karakteri al?r.

Kullan?m?: Right("??leme yap?lacak kelime",Kelimeden al?nacak karakter say?s?)

Örnek:
'Yukar?daki kelime üzerinden gidersek
sagdan_al = Right(kelime,10)
Response.Write sagdan_al

Yukar?daki ?ekilde bir kullan?m bize ç?kt? olarak makaleyim. kelimesini verecektir.

Ucase: Yaz?lan de?eri büyük harfe çevirir.

Kullan?m?: Ucase("Büyük harfe çevrilecek yaz?")

Örnek:
buyuk_yap = Ucase ("naSIL YAzArsAnIZ YazIn bU CÃœmlE bÃœyÃœk oLaCAK")
Response.Write buyuk_yap

Yukar?daki ?ekilde bir kullan?m bize NASIL YAZARSANIZ YAZIN BU CÜMLE BÜYÜK OLACAK bu ?ekilde bir ç?kt? verecektir.

Lcase: Yaz?lan de?eri küçük harf yapar.

Kullan?m? Ucase ile ayn?.

Trim: De?erin sa??ndaki ve solundaki bo?luklar? siler.

Kullan?m?: Trim(Request.Form("gelen de?er"))

Mid: Kelimenin,cümlenin veya de?erin içerisinden ?u karakterden ba?layarak ?u kadar karakter al dememizi sa?lar.

Kullan?m?: Mid("??lemin uygulanaca?? kelime cümle veya say?",Karakterden ba?layarak,Hane karakter al")

Örnek: Mid("??lemin uygulanaca?? kelime cümle veya say?",8,12)

Yukar?daki ?ekilde bir kullan?m bize 8.karakterden saymaya ba?layarak 12 karakter ekrana dökecek yani uygulanaca?? kelimesini verecektir.

InStr : Kelimenin,Cümlenin veya Say?n?n içerisinde bir karakter veya karakter dizisi aratmam?z? ve aratm?? oldu?umuz karakterin varolup olmad???n? var ise kaç?nc? haneden itibaren ba?lad???n? verir.

Kullan?m?: InStr(Kaç?nc? karakterden itibaren aramaya ba?lanacak,Nerde aranacak,Ne aranacak)

Örnek: InStr(1,"??lem yapaca??m?z kelime 'in kabu?unu k?r?p özüne inmeyen...","illegalworld")

Yukar?daki gibi bir kullan?m kelimenin birinci karakterinden ba?layarak içerisinde illegalworld kelimesi varm? diye bakacak var ise kaç?nc? hane oldu?unu ekrana dökecek, Yukar?daki gibi bir kullan?m ekrana : 26 dökecektir.

?imdi yukar?daki i?lemleri ö?rendi isek kar???k bir örnek yaparak bilgilerimizi peki?tirelim.

Uzun bir cümlem var bu cümlenin içerisinde aras?na yazar?n ismini belirterek tekrar ba?ka bir yerde belirtmeden aras?ndaki yaz?y? sayfan?n sonunda yazd?rmak istiyorum. Cümlemiz:

islem_yapilacak_kelime = "Bana bu web sayfas?ndan ula?abilirsiniz. "

?imdi ilk yapmam?z gereken aranacak kelimeleri belirtmek ve kaç?nc? hanede ise onu bulmak.

'ilk önce 2 tane de?i?ken atayarak aranacak karakterleri belirtiyoruz.
aranacak_karakter = "[telif]"
aranacak_karakter2 = "[/telif]"

'Daha sonra bu karakterler cümle içerisinde varm? diye bak?yoruz var ise kaç?nc? karakterde oldu?unu buluyoruz.
pozisyon = Instr(1, islem_yapilacak_kelime, aranacak_karakter)
pozisyon2 = Instr(1, islem_yapilacak_kelime, aranacak_karakter2)

'Bizim cümlenin içerisinden arad???m?z karakterler aras?ndaki kelimeyi alaca??m?z için kaç karakter alaca??m?z? buluyoruz.kaç karakter al?nacak'ta - 7 yazmam?z?n sebebi [telif] yaz?s?n?da ekrana basmamas?
kac_karakter_alinacak = (pozisyon2 - pozisyon) - 7

'Mid fonksiyonu ile cümleden ?u pozisyondan ba?layarak ?u kadar karakter al diyoruz.
telif_hakki = Mid(islem_yapilacak_kelime,poz isyon+7,kac_karakter _alinacak)

Response.Write telif_hakki yazd???m?zda ekrana Ömer Osmano?lu 'nu dökecektir.

 


4 For..Next : For ve Next bir döngüdür For ve Next aras?na yaz?lan yorumlar? bizim döngüyü ba?lat?rken yazaca??m?z de?er kadar tekrarlar. Bu özelli?i birden çok kay?t yapma, Birden çok mail gönderme, her kay?tta fakl? bir ?ey yapma gibi i?lemlerde kullanabiliriz.

Kullan?m? :
For i=1 to 8
........i?lemler
Next

Basit olarak kullan?m yukar?daki gibidir. Yukar?daki gibi bir kullan?mda Döngünün 1'den ba?layarak kendisini 7 kere daha tekrar etmesi demektir yani For de?i?keni olarak kulland???m?z i 8 olana kadar döngü kendini tekrarlayacakt?r. Buradaki i de?i?kendir kendiniz buraya istedi?iniz ?eyi yazabilirsiniz, bunu bir örnekle peki?tirelim.

For i=1 to 8
Response.Write i &"<br>"
Next

Gibi bir ifade yazarsa döngü 1 'den itibaren ba?layarak her yazd?ktan sonrada bir alt sat?ra geçerek ekrana i de?erini bast?racakt?r.

For'da step(Ad?m) özelli?ide vard?r yani yukar?daki döngüyü For i=1 to 8 Step 2 gibi bir ifade yazarsan?z size 1,2,3,4,5,6,7,8 ç?kt?s?n? de?il 1,3,5,7 ç?kt?s?n? verecektir. Döngüde Step parametresi verilmez ise döngü bir-bir artarak gider ama step parametresi ile döngünün nas?l artaca??n? belirleyebiliriz.

?imdi gelelim For döngüsünü i?e yarar bir ?eyde kullanmaya mesela seçilen kay?tlara göre bir i?lem yapmak istiyorsunuz bunun için seçim yapacak bir form olu?turmak laz?m.

<form method="post">
<input type="checkbox" name="secim" value="Ömer">Ömer<br>
<input type="checkbox" name="secim" value="?ahin">?ahin<br>
<input type="checkbox" name="secim" value="Ne?et">Ne?et<br>
<input type="checkbox" name="secim" value="Murat">Murat<br>
<input type="checkbox" name="secim" value="Emel">Emel<br>
<input type="submit" value="Hangi üyeyi silmek istersiniz.">
</form>

Diye bir form olu?turduk daha sonra sayfan?z?n alt?na a?a??daki kodu yerle?tirin
<%
For i=1 to Request.Form("secim").count
deger = Request.Form("secim") (i)
Response.Write "Tekmeledi?iniz üyeler.:"& deger &"<br>"
Next
%>

Zaten kod'dan da anlayaca??n?z gibi ilk önce For döngüsünü formda i?aretlenen checkbox(Seçim kutusu) kadar döndürüyoruz. daha sonra deger diye bir string aç?p bu string'e de Formdan gelen de?erleri yazd?r?yoruz.deger'e atad???m?z de?erleri ekrana yazd?r?yoruz ekrana yazd?rmak yerine burada delete from veya update gibi Sql cümleleri ile veritaban?n?zdan seçilmi? kay?tlar?(Birden çokda olabilir) silebilir update edebilirsiniz.

 


5 UBound, Split :

Ubound: Dize içerisindeki elemanlar? sayar.

Kullan?m?: UBound(Dize_adi)

Split: Bir string'i belirli ayaraçlar ile dizelere atamam?z? sa?lar

Kullan?m? : Split("Dize de?eri1,Dize de?eri2,Dize de?eri3",Ayraç)

Örnek: Split("ömer,osmano?lu,kastamon u,1980",",")

Yukar?daki örnekte virgül (,) ile ay?rarak t?rnak içerisinde yazd???m?z de?eri parçalamam?z? sa?lar.
Mesela UBound kullanarak split'teki cümledeki eleman say?s?n?da bulmam?z mümkündür. Örne?i geni?letirsek;

'Ad?n?z? soyad?n?z do?um yerinizi ve tarihinizi , (virgül) ile ay?rarak yaz?n?z.
cumledeki_degerler = Split("ömer,osmano?lu,istanbul ,1979",",")
Response.Write "Ad?:"& cumledeki_degerler(0) &"<br>"
Response.Write "Soyad?:"& cumledeki_degerler(1) &"<br>"
Response.Write "Do?um Yeri:"& cumledeki_degerler(2) &"<br>"
Response.Write "Do?um Tarihi:"& cumledeki_degerler(3) &"<br>"

Response.Write "Yaz?lan alan say?s?:"& UBound(cumledeki_degerler)


Yukar?daki ?ekilde bir örnek bize Ad?:ömer, Soyad?: osmano?lu, Do?um Yeri: istanbul, Do?um tarihi:1979 diye bir ç?kt? verir.

Yaz?lan alan say?s?da Ubound ile bize 3 de?erini verecektir bundaki 3 rakam? 0 'dan ba?lad??? içindir yani 0,1,2,3 toplam 4 string'dir.

 

?imdi yukar?daki uygulamalar? hepsi ile bir örnek yapal?m örne?im Kötü Kelime Flitresi yapal?m.

?lk önce kötü kelimeleri yazal?m ben bu konuda tecrübeli olmad???m için arkada?lardan yard?m ald?m.Kelimelerin telif hakk? ne?et'e aittir.

kotu_kelimeler = "aptal,salak,manyak"
cumle = "Merhaba ben kötü kelime flitresinin çal???p çal??mad???n? ö?renmek için yaz?yorum, salakça bir gün geçirdim t?ka basa bir otobüsten indikten sonra. güne?inde etkisi ile aç?kca aptalla?t?m. ?stanbul trafi?indede çok manyakça araba kullan?yorlar hala ya?ad???ma inanam?yorum."

?imdi ne yapaca??z kotu_kelimeler akl?m?za geldikçe virgül ile ay?rarak yaz?yoruz yani say?s? de?i?iyor o yüzden ilk önce bunlar? de?i?kenlere atay?p ne kadar kötü kelime flitresi yapt???m?z? sayal?m.

'Kötü kelimeleri kotu_kelimeleri_ayir de?i?kenine atad?k.
kotu_kelimeleri_ayir= Split(kotu_kelimeler,",")

'Kaç tane kötü kelimemiz var o kadar replace yapaca??z çünkü
bu_kadar_kotu_kelime_var = UBound(kotu_kelimeleri_ayir)


Buraya kadar her?ey tamam ?imdi Replace(cumle,kotu_kelime_ayir (0),"ay?p kelime") diye cumlemizdeki kötü kelimeleri ay?p kelime diye de?i?tirebiliriz veya y?ld?z falan koyabiliriz ama dedi?im gibi kötü kelime say?s? sürekli de?i?ti?i için kotu_kelime_ayir(0),(1),(2) diyerek her kelimeyi replace edemem. Ayr?ca ben bunu sadece cumle de?i?keni için de?il ileride belkide yorum, mesaj de?i?kenleri içinde kullan?r?m onun için bunu bir Fonksiyon haline getirmem en iyisi.

'Fonksiyonumuzu ba?lat?yoruz ve de?erimizi al?yoruz
Function temizle(deger)

'For ile kotu_kelime sayisi kadar dongu kuruyoruz
'Her kötü kelime eklendi?inde for bir daha dönüp next'e kadar olan i?lemleri tekrar yorumlayacakt?r.
For i=0 to bu_kadar_kotu_kelime_var

'Her kötü kelimeyi cümle içerisinde ay?p kelime diye de?i?tirip deger'i güncelliyoruz.
deger = Replace (deger,kotu_kelimeleri_ayir(i) ,"(ay?p kelime)")

'Döngümüzü sonland?r?yoruz.
Next

'Ve For ile tüm kötü kelimeleri replace ettikten sonra temizlenmi? de?eri fonksiyonumuza at?yoruz.
temizle = deger
End Function

'Art?k asp içerisinde sadece kötü kelime flitresi yapmak istedi?imiz de?i?kenleri temizle parantezine ald???m?z zaman kötü kelimelerden ar?nm?? olaca??z.

Fonksiyonun kullan?m?na örnek vermek gerekirse
Response.Write temizle(cumle)
Response.Write temizle(Request.Form("Formdan_ gelen_deger"))
Response.Write temizle(RecordSetAdi("Datadan_ gelen_de?er")) vb......




Facebook Google Ding delicios yahoo
                               Sende Oy ver : 0-Kisi:Puani : 0

     

<
Bunlarda Belki ilginizi Cekebilir Tikla.
Acan
Forum istatistikleri
ASPde ??inize Çok Yarayacak Fonksiyonlar..
Kervanlar
Forumdaki 18 Kategoride 58 Forum var, Bu forumlara acilan 487 Konuya 553 Cevap yazildi..
üye :  Misafir : 412 Toplam : 412 Rekor :
Aktif uyeler  Aktif uye yok..
Genel Sorumlu - Yonetici - Forum Yoneticisi - Editor - VIP uye
iyiki Dogdunuz Nice yillara.. omerkara , 

Site: 2,38 Yuklendi.