|WebBilgisi Forumu|
Would you like to react to this message? Create an account in a few clicks or log in to continue.

|WebBilgisi Forumu|


 
AnasayfaGaleriLatest imagesKayıt OlGiriş yap

 

 ASP'de işinize çok yarayacak fonksiyonlar

Aşağa gitmek 
YazarMesaj
WebBilgisi
Site Sahibi
Site Sahibi
WebBilgisi


Erkek
Mesaj Sayısı : 805
Yaş : 29
Nerden : İstanbul / Tuzla
Ruh Halim : ASP'de işinize çok yarayacak fonksiyonlar Defaul10
Ceza Puanı :
ASP'de işinize çok yarayacak fonksiyonlar Left_bar_bleue0 / 1000 / 100ASP'de işinize çok yarayacak fonksiyonlar Right_bar_bleue

Reklam : </br>

<script language="JavaScript" type="text/javascript">
sid=11891;channel=13009;w=125;h=125;wmid=6455;domain ="webbilgisi.eniyiforum.net";
kategori ="0";
gosterim="F";adsrv=1;arkaplan="99CCFF";
baslik="FF0000";
aciklama="000000";
kenarlik="66CCFF";
jsai="39de171ea185f0fb";</script>
<script language="JavaScript" src="http://adserver1.adtech.com.tr/ppc.js"></script>
Kayıt tarihi : 07/06/08

ASP'de işinize çok yarayacak fonksiyonlar Empty
MesajKonu: ASP'de işinize çok yarayacak fonksiyonlar   ASP'de işinize çok yarayacak fonksiyonlar EmptyPaz Haz. 29 2008, 09:01

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,Trim,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,"like","")
duzenlenmis_kelime = Replace(duzenlenmis_kelime,"select","")
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 [telif] [/telif] arasına yazarın
ismini belirterek tekrar başka bir yerde belirtmeden [telif] [/telif]
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,pozisyon+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,kastamonu,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......
Sayfa başına dön Aşağa gitmek
http://webbilgisi.eniyiforum.net
 
ASP'de işinize çok yarayacak fonksiyonlar
Sayfa başına dön 
1 sayfadaki 1 sayfası

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
|WebBilgisi Forumu| :: .·´¯`·-> WEBMASTER GENEL :: ASP ve ASP.net-
Buraya geçin: