AspSitem.com Ücretsiz ASP Siteniz Forum || ASP Kodlari Aspde çok isinize yarayacak fonksiyonlar |
|
Karakusak
Mesaj sayısı : 389[Üsteğmen] ![]() Giriş sayısı : 739 Konu puanı : 6 Toplam P : 11 Konuya Puan ver Üye bilgileri keloglan, mayki92, punkoliq, stajer, mehmetpekdemir, recepogretmenim, |
Islenecek fonksiyonlar ve açiklama: 1.) Replace : Verilerimiz içerisindeki kelimeleri istedigimiz sekilde degistirme yapmak için kullanilir. Ayrintili açiklama ve örnekler yazinin devaminda. 2.) Function : Fonksiyon islemi toplu islem dosyalari olarak düsünülebilir, sayfa içerisinde s** s** yaptigimiz islemleri function olarak sayfamiza koyduktan sonra verilerimize bu function ile düzenleyebiliriz, veya yapmak istedigimiz hesaplamalari biçimlendirmek istedigimiz yazilari bir Function bölüm açarak biçimlendirir ve sayfa içerisinde istedigimiz yerde function'u çagirarak kullanabiliriz. Ayrintili açiklamalar ve örnekler yazinin devaminda. 3.) Left,Right,Len,Ucase,LCase,Trim,Mid,Instr : Genelde kelimeler üzerinde islem yapmak için kullanilir. Ayrintili açiklamalar ve örnekler yazinin devaminda. 4.) For..Next : Herhangi bir islemi bu data da olabilir, bizim istedigimiz kadar tekrarlamamizi saglar Ayrintili açiklamalar ve örnekler yazinin devaminda. 5.) UBound, Split : UBound dizideki içerisindeki eleman sayisini verir, Split ise verdigimiz ayraç ile bir dizedeki degerleri bölerek stringlere atamamizi saglar. Genelde uzun verilerle degis** islemler yapmak için veya Stringleri düzenli ifadelere ve degerler döndürmek için kullanilir. Ayrintili açiklamalar ve örnekler yazinin devaminda. Ise baslayalim. 1.) Replace : Bir çok script yazari kötü niyetli kisilerin sayfasina zararli kodlar yazarak bozulmasindan s**ayetçidir, Ayrica kelimelerde çesitli düzenlemeler yapmak bir ölümdür VbScript 'de kelimeleri degistirmek için fonksiyon bulunmaktadir, Bu fonksiyonu kullanarak zararli kodlardan ve kelime islemlerinden kolay sekilde siyrilabiliriz. Kullanimi: Replace ("Degistirilecek kelime","Hangi harfler degistirilecek","Ne diye degistirilecek") Örnek: <% duzenlenmis_deger = Replace("Merhaba .net ailesi."," .net"," .NET") duzenlenmis_deger = Replace(duzenlenmis_deger," .NET","<font color=red> .NET</font>") %> Örnek'tende anlayacaginiz gibi Merhaba .net ailesi kelimesinin içerisindeki .net kelimesini .NET olarak degistirdik.daha sonra degistirdigim degeri tekrar ikinci bir Replace ile font rengini kirmizi yaptik. dikkat etmeniz gereken sadece siralama Hangi degerin içerisindeki hangi kelimeyi hangi kelimeyle degistirecegimiz yaziyoruz. Bir örnek daha yapalim bu örnektede zararli bazi kodlari temizleyelim. <% kelime = "Merhaba naber nasil gidiyor.? <script>alert('Ben zararli bir kodum')</script>" duzenlenmis_kelime = Replace(kelime,"<","") duzenlenmis_kelime = Replace(duzenlenmis_kelime,">","") duzenlenmis_kelime = Replace(duzenlenmis_kelime,"'","") duzenlenmis_kelime = Replace(duzenlenmis_kelime,"like","") duzenlenmis_kelime = Replace(duzenlenmis_kelime,"select","") Response.Write duzenlenmis_kelime %> Sanirim replace ile ilgili bu kadar örnek yeterli. 2.) Function : Çogumuz script yazarken bir isleme birden fazla gerek duyariz, ayni seyleri tekrar tekrar yazmakta sizi oldukça rahatsiz ediyorsa sayfaniz içerisinde bir function yazarak bu fonksiyondan yararlanabiliriz. Mesela bir deger hesaplama , Kelimeleri biçimlendirme gibi olaylar, siz yazilarinizi normal olarak yazarsiniz daha sonra biçimlendirilecek veya hesaplanacak degeri fonksiyona gönderirseniz fonksiyon'da sizin gönderdiginiz degeri alir ve sizin prosedürlerinize göre biçimlendirir ve çiktiyi size verir. Bu hem asp sayfanizi karmas**liktan kurtarir hem de sizin daha rahat ve hizli kod yazmanizi saglar. Kullanimi: Function fonksiyon_adi ........... islemler End Function Fonksiyonun kullanimi yukaridaki biçimdedir, ama genelde fonksiyonlar da hazir islevler veya kendi hesapladigi degerler kullanilmaz bunun yerine yukarida belirttigimiz gibi bizim atadigimiz fonksiyona gönderdigimiz degerler biçimlendirilir hesaplanir, Onun için kullanimi genelde asagidaki sekildedir. Function fonksiyon_adi(gelen_deger) .......... islemler fonksiyon_adi = gelen_deger veya islenmis_deger End Function Dikkat ederseniz yukaridaki fonksiyon ile iki farki var, Birincisi bir parantez açip gelen_deger yazmisiz yani fonksiyonda yapilacak islemlere bir deger atamisiz, atamisiz da bunu nasil yapmisiz. bunu asp kodlarinizi yazarken fonksiyon_adi("Fonksiyona gidecek deger") seklinde yapabilirsiniz. Ikincisi ise fonksiyonu sonlandirmadan fonksiyon_adi diye bir degisken açip buna deger atamisiz bunun sebebi'de fonksiyona gelen_deger 'e islem yaptik al kardesim sonucu da bu demek. Örnek: Simdi biz ögretmeniz ders notlari olan bir sayfa yapiyoruz diyelim biz veriyi yazarken ahmet 50, mehmet 40 aldi diye yaziyoruz buraya kadar her sey tamam ama ben istiyorum ki benim yazdigim 50'nin 40'in yanina bir parantez açip finalde almasi gereken notu da script'in hesaplayip yazmasi , onlarca da ögrencimiz var hemen bir fonksiyon yazalim o zaman bu sinavda(1.sinav) aldigin notun karne notuna %30 ikinci sinavda aldigi notunda karne notuna %70 etki edecegini varsayarsak. 'Ilk önce sayi_hesabla'da parantez içerisine yazdigimiz degeri aliyoruz. Function sayi_hesapla(deger) 'Gelen degeri ilk sinav notu olarak bir degiskene atadik ilk_sinav_notu = deger 'Ilk sinavda almis oldugu notun karneye ne kadar etki edecegini bulduk ilk_sinav_etki = ((deger * 30) /100) 'Ve ikinci sinavda almasi gereken notuda hesaplayip ikinci_sinav_gereken_not degiskenine atadik ikinci_sinav_gereken_not = FormatNumber(((50 - ilk_sinav_etki) * 100 / 70),0) 'Simdi sira son asamaya geldi ilk önce fonksiyon_adi 'na bir deger açtik ve fonksiyon sonucunda: 'Ilk önce bizim ilk aldigimiz degeri daha sonra & koyup hesapladigimiz degeri yazdiriyoruz. sayi_hesapla = deger &"("& ikinci_sinav_gereken_not &")" 'Ve fonksyonumuzu bitiriyoruz. End function Üsteki sekilde bir fonksiyon yazdiktan sonra tek yapmamiz gereken normal sekilde ögrencilerin notlarini yazarken asp sayfamizda sayi_hesapla("45") seklinde ögrencinin notunu fonksiyona yollamak. Örnek vermek gerekirse; Ömer, <%=sayi_hesapla("20")%> Sahin,<%=sayi_hesapla("40")%> Neset, <%=sayi_hesapla("50")%> siye yazdigimizda ekrana çikti olarak.: Ömer, 20(63) Sahin,40(54) Neset, 50(50) bunu dökecektir. 3.) Left, Right, Len, Ucase, LCase, Trim, Mid, Instr : Bunlari kisaca açiklamak gerekirse: Left: Kelimenin solundan istediginiz kadar bir karakter alir. Kullanimi : Left("Islem yapilacak Kelime",Kelimeden alinacak karakter sayisi) Örnek: kelime = "merhaba ben bir makaleyim." soldan_al = Left(kelime,7) Response.Write soldan_al Yukaridaki sekilde bir kullanim bize çikti olarak merhaba kelimesini verir. Right: Kelimenin sagindan istediginiz kadar karakteri alir. Kullanimi: Right("Isleme yapilacak kelime",Kelimeden alinacak karakter sayisi) Örnek: 'Yukaridaki kelime üzerinden gidersek sagdan_al = Right(kelime,10) Response.Write sagdan_al Yukaridaki sekilde bir kullanim bize çikti olarak makaleyim. kelimesini verecektir. Ucase: Yazilan degeri büyük harfe çevirir. Kullanimi: Ucase("Büyük harfe çevrilecek yazi") Örnek: buyuk_yap = Ucase ("naSIL YAzArsAnIZ YazIn bU CÜmlE bÜyÜk oLaCAK") Response.Write buyuk_yap Yukaridaki sekilde bir kullanim bize NASIL YAZARSANIZ YAZIN BU CÜMLE BÜYÜK OLACAK bu sekilde bir çikti verecektir. Lcase: Yazilan degeri küçük harf yapar. Kullanimi Ucase ile ayni. Trim: Degerin sagindaki ve solundaki bosluklari siler. Kullanimi: Trim(Request.Form("gelen deger")) Mid: Kelimenin,cümlenin veya degerin içerisinden su karakterden baslayarak su kadar karakter al dememizi saglar. Kullanimi: Mid("Islemin uygulanacagi kelime cümle veya sayi",Karakterden baslayarak,Hane karakter al") Örnek: Mid("Islemin uygulanacagi kelime cümle veya sayi",8,12) Yukaridaki sekilde bir kullanim bize 8.karakterden saymaya baslayarak 12 karakter ekrana dökecek yani uygulanacagi kelimesini verecektir. InStr : Kelimenin,Cümlenin veya Sayinin içerisinde bir karakter veya karakter dizisi aratmamizi ve aratmis oldugumuz karakterin varolup olmadigini var ise kaçinci haneden itibaren basladigini verir. Kullanimi: InStr(Kaçinci karakterden itibaren aramaya baslanacak,Nerde aranacak,Ne aranacak) Örnek: InStr(1,"Islem yapacagimiz kelime 'in kabugunu kirip özüne inmeyen...","illegalworld") Yukaridaki gibi bir kullanim kelimenin birinci karakterinden baslayarak içerisinde illegalworld kelimesi varmi diye bakacak var ise kaçinci hane oldugunu ekrana dökecek, Yukaridaki gibi bir kullanim ekrana : 26 dökecektir. Simdi yukaridaki islemleri ögrendi isek karis** bir örnek yaparak bilgilerimizi pekistirelim. Uzun bir cümlem var bu cümlenin içerisinde [telif] [/telif] arasina yazarin ismini belirterek tekrar baska bir yerde belirtmeden [telif] [/telif] arasindaki yaziyi sayfanin sonunda yazdirmak istiyorum. Cümlemiz: islem_yapilacak_kelime = "Bana bu web sayfasindan ulasabilirsiniz. " Simdi ilk yapmamiz gereken aranacak kelimeleri belirtmek ve kaçinci hanede ise onu bulmak. 'ilk önce 2 tane degisken atayarak aranacak karakterleri belirtiyoruz. aranacak_karakter = "[telif]" aranacak_karakter2 = "[/telif]" 'Daha sonra bu karakterler cümle içerisinde varmi diye bakiyoruz var ise kaçinci karakterde oldugunu buluyoruz. pozisyon = Instr(1, islem_yapilacak_kelime, aranacak_karakter) pozisyon2 = Instr(1, islem_yapilacak_kelime, aranacak_karakter2) 'Bizim cümlenin içerisinden aradigimiz karakterler arasindaki kelimeyi alacagimiz için kaç karakter alacagimizi buluyoruz.kaç karakter alinacak'ta - 7 yazmamizin sebebi [telif] yazisinida ekrana basmamasi kac_karakter_alinacak = (pozisyon2 - pozisyon) - 7 'Mid fonksiyonu ile cümleden su pozisyondan baslayarak su kadar karakter al diyoruz. telif_hakki = Mid(islem_yapilacak_kelime,pozisyon+7,kac_karakter _alinacak) Response.Write telif_hakki yazdigimizda ekrana Ömer Osmanoglu 'nu dökecektir. 4.) For..Next : For ve Next bir döngüdür For ve Next arasina yazilan yorumlari bizim döngüyü baslatirken yazacagimiz deger kadar tekrarlar. Bu özelligi birden çok kayit yapma, Birden çok mail gönderme, her kayitta fakli bir sey yapma gibi islemlerde kullanabiliriz. Kullanimi : For i=1 to 8 ........islemler Next Basit olarak kullanim yukaridaki gibidir. Yukaridaki gibi bir kullanimda Döngünün 1'den baslayarak kendisini 7 kere daha tekrar etmesi demektir yani For degiskeni olarak kullandigimiz i 8 olana kadar döngü kendini tekrarlayacaktir. Buradaki i degiskendir kendiniz buraya istediginiz seyi yazabilirsiniz, bunu bir örnekle pekistirelim. For i=1 to 8 Response.Write i &"<br>" Next Gibi bir ifade yazarsa döngü 1 'den itibaren baslayarak her yazdiktan sonrada bir alt satira geçerek ekrana i degerini bastiracaktir. For'da step(Adim) özelligide vardir yani yukaridaki döngüyü For i=1 to 8 Step 2 gibi bir ifade yazarsaniz size 1,2,3,4,5,6,7,8 çiktisini degil 1,3,5,7 çiktisini verecektir. Döngüde Step parametresi verilmez ise döngü bir-bir artarak gider ama step parametresi ile döngünün nasil artacagini belirleyebiliriz. Simdi gelelim For döngüsünü ise yarar bir seyde kullanmaya mesela seçilen kayitlara göre bir islem yapmak istiyorsunuz bunun için seçim yapacak bir form olusturmak lazim. <form method="post"> <input type="checkbox" name="secim" value="Ömer">Ömer<br> <input type="checkbox" name="secim" value="Sahin">Sahin<br> <input type="checkbox" name="secim" value="Neset">Neset<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 olusturduk daha sonra sayfanizin altina asagidaki kodu yerlestirin <% For i=1 to Request.Form("secim").count deger = Request.Form("secim") (i) Response.Write "Tekmelediginiz üyeler.:"& deger &"<br>" Next %> Zaten kod'dan da anlayacaginiz gibi ilk önce For döngüsünü formda isaretlenen checkbox(Seçim kutusu) kadar döndürüyoruz. daha sonra deger diye bir string açip bu string'e de Formdan gelen degerleri yazdiriyoruz.deger'e atadigimiz degerleri ekrana yazdiriyoruz ekrana yazdirmak yerine burada delete from veya update gibi Sql cümleleri ile veritabaninizdan seçilmis kayitlari(Birden çokda olabilir) silebilir update edebilirsiniz. 5.) UBound, Split : Ubound: Dize içerisindeki elemanlari sayar. Kullanimi: UBound(Dize_adi) Split: Bir string'i belirli ayaraçlar ile dizelere atamamizi saglar Kullanimi : Split("Dize degeri1,Dize degeri2,Dize degeri3",Ayraç) Örnek: Split("ömer,osmanoglu,kastamonu,1980",",") Yukaridaki örnekte virgül (,) ile ayirarak tirnak içerisinde yazdigimiz degeri parçalamamizi saglar. Mesela UBound kullanarak split'teki cümledeki eleman sayisinida bulmamiz mümkündür. Örnegi genisletirsek; 'Adinizi soyadiniz dogum yerinizi ve tarihinizi , (virgül) ile ayirarak yaziniz. cumledeki_degerler = Split("ömer,osmanoglu,istanbul,1979",",") Response.Write "Adi:"& cumledeki_degerler(0) &"<br>" Response.Write "Soyadi:"& cumledeki_degerler(1) &"<br>" Response.Write "Dogum Yeri:"& cumledeki_degerler(2) &"<br>" Response.Write "Dogum Tarihi:"& cumledeki_degerler(3) &"<br>" Response.Write "Yazilan alan sayisi:"& UBound(cumledeki_degerler) Yukaridaki sekilde bir örnek bize Adi:ömer, Soyadi: osmanoglu, Dogum Yeri: istanbul, Dogum tarihi:1979 diye bir çikti verir. Yazilan alan sayisida Ubound ile bize 3 degerini verecektir bundaki 3 rakami 0 'dan basladigi içindir yani 0,1,2,3 toplam 4 string'dir. Simdi yukaridaki uygulamalari hepsi ile bir örnek yapalim örnegim Kötü Kelime Flitresi yapalim. Ilk önce kötü kelimeleri yazalim ben bu konuda tecrübeli olmadigim için arkadaslardan yardim aldim.Kelimelerin telif hakki neset'e aittir. kotu_kelimeler = "a****,salak,manyak" cumle = "Merhaba ben kötü kelime flitresinin çalisip çalismadigini ögrenmek için yaziyorum, salakça bir gün geçirdim tika basa bir otobüsten indikten sonra. günesinde etkisi ile açikca a****lastim. Istanbul trafigindede çok manyakça araba kullaniyorlar hala yasadigima inanamiyorum." Simdi ne yapacagiz kotu_kelimeler aklimiza geldikçe virgül ile ayirarak yaziyoruz yani sayisi degisiyor o yüzden ilk önce bunlari degiskenlere atayip ne kadar kötü kelime flitresi yaptigimizi sayalim. 'Kötü kelimeleri kotu_kelimeleri_ayir degiskenine atadik. kotu_kelimeleri_ayir= Split(kotu_kelimeler,",") 'Kaç tane kötü kelimemiz var o kadar replace yapacagiz çünkü bu_kadar_kotu_kelime_var = UBound(kotu_kelimeleri_ayir) Buraya kadar hersey tamam simdi Replace(cumle,kotu_kelime_ayir(0),"ayip kelime") diye cumlemizdeki kötü kelimeleri ayip kelime diye degistirebiliriz veya yildiz falan koyabiliriz ama dedigim gibi kötü kelime sayisi sürekli degistigi için kotu_kelime_ayir(0),(1),(2) diyerek her kelimeyi replace edemem. Ayrica ben bunu sadece cumle degiskeni için degil ileride belkide yorum, mesaj degiskenleri içinde kullanirim onun için bunu bir Fonksiyon haline getirmem en iyisi. 'Fonksiyonumuzu baslatiyoruz ve degerimizi aliyoruz Function temizle(deger) 'For ile kotu_kelime sayisi kadar dongu kuruyoruz 'Her kötü kelime eklendiginde for bir daha dönüp next'e kadar olan islemleri tekrar yorumlayacaktir. For i=0 to bu_kadar_kotu_kelime_var 'Her kötü kelimeyi cümle içerisinde ayip kelime diye degistirip deger'i güncelliyoruz. deger = Replace (deger,kotu_kelimeleri_ayir(i),"(ayip kelime)") 'Döngümüzü sonlandiriyoruz. Next 'Ve For ile tüm kötü kelimeleri replace ettikten sonra temizlenmis degeri fonksiyonumuza atiyoruz. temizle = deger End Function 'Artik asp içerisinde sadece kötü kelime flitresi yapmak istedigimiz degiskenleri temizle parantezine aldigimiz zaman kötü kelimelerden arinmis olacagiz. Fonksiyonun kullanimina örnek vermek gerekirse Response.Write temizle(cumle) Response.Write temizle(Request.Form("Formdan_gelen_deger")) Response.Write temizle(RecordSetAdi("Datadan_gelen_deger")) vb...... -------------------- www.islamingulu.net |
|||
30.07.2006 15:42:41 |
Oy : 2-Puan : 5
|
|||
| Reklam Botu |
![]() |
| Teşekkür edip puan verenler: keloglan, mayki92, punkoliq, stajer, mehmetpekdemir, recepogretmenim, |
|
|
![]() |
Forum son 5 K. & Benzer K. |
Açan |
Forum istatistikleri |
||
| |||||
Aktif Üyeler
Genel Sorumlu - Yönetici - Forum Yöneticisi - Editör - VIP Üye | İyiki Doğdunuz Nice yıllara..
|
||||
|
2006 © Copyright AspSitem.com (Bu site AspSitem v2.0 kullanilarak hazirlanmistir.)
Website motoru © 2007 AspSitem Ay Yildiz. |