IF Yapisi - BOLUM
4
Switch Komutu ve Kullanimi (Switch Statements)
Switch komutunun islevini kisaca aciklamak istersek ,"elseif"
komutunun kullanimini azaltmak, hafifletmek ve programa basit
bir yapi kazandirmak icin kullanilmaktadir.Hatirlayacaginiz
gibi bundan bir onceki konuda (IF Yapisi -BOLUM 3)
"elseif" kulanarak program yazmis ve basimizi iyice agritmistik.Orada
size,bu kadar karmasik kod yazmanin gerekli olmadigini bundan
kurtulmak icin PHP nin birsuru fonksiyon icerdigini soylemistim.Iste
simdi size acikliyorum,
Bu konuyu en iyi sekilde anlatmak icin bir ornek vermekten
baska carem yok.o yuzden asagidaki ornegi inceleyerek ve aklinizda
"elseif" yapisini canlandirarak dusunun.
Ornek Kod Parcasi :
switch ($Puan) {
case $Puan > 70
echo ("Sinavdan A aldiniz");
break;
case $Puan>60
echo ("Sinavdan B aldiniz");
break;
case $Puan>50
echo ("Sinavdan C aldiniz");
break;
case $Puan>40
echo ("Sinavdan D aldiniz");
break;
case $Puan>25
echo ("Sinavdan E aldiniz");
break;
default:
echo ("Sinifta Kaldiniz");
}
gordugunuz gibi bir suru "if" ve "elseif" kullanmak yerine
yanlizca "switch" komutuyla isimizi biraz olsun kolaylastirdik.Satir
bakimindan cok fazla sey kazanmadik ama su anda kodlarimiz
daha mantikli ve anlasilir gozukuyor.
Switch komutu ile kullanilan "break" , "case" ve "default"
bunlarda nedir?
Aciklamaya bu komutlarin turkcelerini yazmakla baslayalim.
switch: Turkce'de "degistir" anlamina gelir.(Lambayi kapali
konumdan acik konuma degistirmek gibi)
break : Turkce'de "birak,ayril" anlamina gelir.
case : Turkce'de "durum" anlamina gelir
default : Turkcede ongorulen veya ontanimli anlamina gelir.
Bu aciklamalarin isigi altinda konumuza devam edecek olursak,"switch"
ile verdigimiz sartlar altinda PHP nin isleyecegi kod parcalarini
degistiriyoruz.Bu sartlarin ne olacagini "case" ile tanimliyoruz.
Kod parcasi isini tamamlayinca "break" ile "ayriliyoruz".Eger
verdigimiz sartlardan hicbiri saglanmiyorsa "default" ile
PHP'ye islemesi gereken kod parcasinin ne oldugunu soyluyoruz.
Yukaridaki kod parcasinda $Puan degiskenin alacagi degerler
icin ,degisik degisik isler yaptirmak istiyoruz.Bir adam 70'ten
yuksek not almissa PHP nin "Sinavdan A Aldiniz" yazisini ekrana
yazdirmak istiyoruz.60'tan yuksek not icin B,50'den yuksek
not icin C ...vb
Eger adam bizim verdigimiz sartlarin hicbirine uyan bir not
almadiysa o zaman "default" ile yapilmasi gereken islemi tanimliyoruz.
Burada ilk defa "break" komutu ile karsilastigimiz icin bir
kac bilgi vermek istiyorum.Programlarinizda "break" kullandiginiz
zaman size tavsiyemiz biraz dikkatli olmaniz.PHP "break" komutu
ile karsilasinca yaptigi herseyi durdurur ve "switch" yapisindan
cikarak ,kapali parantezin bittigi yerden okumaya devam eder.
switch ($Puan) {
case $Puan > 70 :
echo ("Sinavdan A aldiniz");
break;
case $Puan>60 :
echo ("Sinavdan B aldiniz");
break;
case $Puan>50 :
echo ("Sinavdan C aldiniz");
break;
case $Puan>40 :
echo ("Sinavdan D aldiniz");
break;
case $Puan>25 :
echo ("Sinavdan E aldiniz");
break;
default:
echo ("Sinifta Kaldiniz");
}<<<-------------------------- (switch yapisini kapattigimiz
parantez)
...........(PHP "break goruruse okumaya buradan devam eder)
....................
switch yapisini kullanirken bir kisayol
"switch" komutu sandiginizdan biraz daha zekidir ve sizin
ne yapmak istediginiz anlayabilir.Bu komut icin gelistirlmis
bir kisayol tarzi bulunmaktadir.
Switch ($Eyalet) {
case "IL" :
echo ("Illinois");
break;
case "FL" : //Benim dunyalar guzeli eyaletim/memleketim
echo ("Florida");
break;
case "GA" :
echo ("Georgia");
break;
default:
echo ("Texas");
break;
}
Her iki yazim seklide hatasiz ve birbirinden farksizdir.Isterseniz
ilk ornekteki gibi her seferinde $Puan degiskenini "case"
yapisina yazin isterseniz birakin PHP sizin icin yapsin.
Dikkat ederseniz "case" yazdiktan sonra ";" noktali virgul
yerine ":" iki nokta kullnadik.Sakin yanlis yazildigini sanmayin
dogru kullanimi bu sekildedir.
Simdi bir onceki bolumde (IF Yapisi - Bolum 3)yaptigimiz ornegi
simdi switch kullanarak tekrar yazalim.
1.Text editorunuzu acin ve asagidakileri yazin.
<HTML>
<HEAD></HEAD>
<BODY>
Seres Otelcilik Online Web Sayfasi'na Hosgeldiniz
<FORM METHOD=GET ACTION="tatil2.php">
Tatil icin nereye gitmeyi dusunuyorsunuz?
<BR>
<BR>
<INPUT NAME="Sehir" TYPE = "Radio" VALUE="Istanbul">
Istanbul
<INPUT NAME="Sehir" TYPE = "Radio" VALUE="Ankara">
Ankara
<INPUT NAME="Sehir" TYPE = "Radio" VALUE="Izmir">
Izmir
<BR>
<BR>
Kac yildizli otelde kalmak istiyorsunuz?
<INPUT NAME="Yildiz" TYPE = "Radio" VALUE="Uc">
Uc Yildizli Otel
<INPUT NAME="Yildiz" TYPE = "Radio" VALUE="Dort">
Dort Yildizli Otel
<BR>
<BR>
<INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>
2.Bu dosyayi "tatil2.html" olarak kayit edin.
3.Text editorunuzu acin ve asagidakileri yazin.
<HTML>
<HEAD></HEAD>
<BODY>
Seres Otelcilik Online web Sayfasina Hos Geldiniz
<BR>
<BR>
<?php
$Fiyat = 500;
$SehirFaktoru = 1;
$YildizFaktoru = 1;
$SehirYildiz = $Sehir.$Yildiz;
switch ($SehirYildiz) {
case "IstanbulUc":
$SehirFaktoru = 2;
$Fiyat = $Fiyat * $SehirFaktoru;
echo "$Sehir sehrinde 1 haftalik tatil $Fiyat dolardir.";
break;
case "IstanbulDort":
$SehirFaktoru = 2;
$YildizFaktoru = 2;
$Fiyat = $Fiyat * $SehirFaktoru * $YildizFaktoru;
echo "$Sehir sehrinde 1 haftalik tatil $Fiyat dolardir.";
break;
case "AnkaraUc":
$SehirFaktoru = 3.5;
$Fiyat = $Fiyat * $SehirFaktoru;
echo "$Sehir sehrinde 1 haftalik tatil $Fiyat dolardir.";
break;
case "AnkaraDort":
$SehirFaktoru = 3.5;
$YildizFaktoru = 2;
$Fiyat = $Fiyat * $SehirFaktoru * $YildizFaktoru;
echo "$Sehir sehrinde 1 haftalik tatil $Fiyat dolardir.";
break;
case "IzmirUc":
$Fiyat = $Fiyat * $SehirFaktoru;
echo "$Sehir sehrinde 1 haftalik tatil $Fiyat dolardir.";
break;
case "IzmirDort":
$YildizFaktoru = 2;
$Fiyat = $Fiyat * $SehirFaktoru * $YildizFaktoru;
echo "$Sehir sehrinde 1 haftalik tatil $Fiyat dolardir.";
break;
default:
echo "Lutfen geriye donerek tekrar deneyiniz";
break;
}
?>
</BODY>
</HTML>
4.Bu dosyayi "tatil2.php" olarak kayit edin.
5."tatil2.html" dosyasini acip bir kac veri girip gonderdiginizde
tatil icin ne kadar ucret odemeniz gerektigini goreceksiniz.
Ornek Dosyalar
http://www.turk-php.com/ornekler/tatil2.html
http://www.turk-php.com/ornekler/tatil2.php
Form Verileri'nin Kontrolu
PHP programalarini biraz olsun hassas hale getirmek ancak
program icindeki kontrollerle mumkundur.Ornegin bir kullanicin
sizin onun "yasini" ordugunuz bir kontrole "694" gibi bir
rakam girmesini istemeyiz.Bu nedenle girilen verileri bazi
kistaslara gore kontrol edip ondan sonra islemlere devam etmek
cok onemlidir.
If ($Yas <1 OR $Yas>125)
{
echo "Gecersiz bir yas degeri girdiniz";
break;
}
seklinde programin bir mantiga sahip olmasini saglayabilriz...
exit komutu
If ($Yas <1 OR $Yas>125)
{
echo "Gecersiz bir yas degeri girdiniz";
exit;
}
Bir forma girilen verileri kontrol ediyorsak ve kisinin girdigi
verinin tamamen imkansiz olduguna inaniyorsak "exit" komutunu
kullanarak programin isleyisini o noktada durdurabilriz."exit"
kulllandigimizda program tamamen duracak ve kalan HTML taglari
bile kapatilmayacaktir.Kullanirken dikkat edilmesi gereken
bir komuttur.
Bu konu ile ilgili bir ornek yapalim,
1.Text editorunuzu acin ve asagidaki kodlari girin.(Daha onceden
yazdigimiz "kredi.php" dosyasini acip orada yapmadigimiz form
kontrollerini simdi programa nasil ekledigimize bakabilirsiniz)
<HTML>
<HEAD></HEAD>
<BODY>
Seres Bankasi Kredi Isleme Basvuru Formu
<FORM METHOD=POST ACTION="kredi2.php">
Adiniz :
<INPUT NAME="Ad" TYPE="Text">
Soyadiniz :
<INPUT NAME="Soyad" TYPE="Text">
Yasiniz :
<INPUT NAME="Yas" TYPE="Text" SIZE="2">
<BR>
<BR>
Adresiniz :
<TEXTAREA NAME="Adres" ROWS=5 COLS=50>
</TEXTAREA>
<BR>
<BR>
Geliriniz Nedir?
<SELECT NAME="Ucret">
<OPTION VALUE=0>10000 TL'DEN AZ</OPTION>
<OPTION VALUE=10000>10000 TL'DEN 25000 TL'YE KADAR</OPTION>
<OPTION VALUE=25000>25000 TL'DEN 50000 TL'YE KADAR</OPTION>
<OPTION VALUE=50000>50000 TL'DEN BUYUK</OPTION>
</SELECT>
<BR>
<BR>
Ne kadar kredi almak istiyorsunuz?<BR><BR>
<INPUT NAME="Kredi" TYPE="Radio" VALUE=1000>1000 TL'lik
Paket %8.0 Faiz<BR>
<INPUT NAME="Kredi" TYPE="Radio" VALUE=5000>5000 TL'lik
Paket %12.0 Faiz<BR>
<INPUT NAME="Kredi" TYPE="Radio" VALUE=10000>10000 TL'lik
Paket %15.0 Faiz<BR>
<BR>
<INPUT TYPE=SUBMIT VALUE="Buraya tiklayarak Formu gonderebilirsiniz">
<INPUT TYPE=RESET VALUE="Formu Temizle">
</FORM>
</BODY>
</HTML>
2.Bu dosyayi "kredi2.html" olarak kayit edin.
3.Baska bir text dosyaysi acip asagidaki kodlari yazin.
<HTML>
<HEAD></HEAD>
<BODY>
<?php
if ($Yas<10 OR $Yas>120)
{
echo " Yanlis yas degeri girdiniz,geriye donerek tekrar giriniz.";
exit;
}
if ($Ad == "" OR $Soyad == "")
{
echo " Bir isim ve soyad degeri girmelisiniz ,geriye donerek
giriniz.";
exit;
}
if ($Adres == "")
{
echo " Bir adres degeri girmelisiniz ,geriye donerek giriniz.";
exit;
}
if ($Kredi != 1000 AND $Kredi !=5000 $Kredi !=10000)
{
echo " Bir kredi degeri girmelisiniz ,geriye donerek giriniz.";
exit;
}
$UcretFaktoru = $Ucret/5;
$YasFaktoru = ($Yas/10 - ($Yas%10) /10 )-1;
$KrediFaktoru = $UcretFaktoru * $YasFaktoru;
echo "Istediginiz Kredi Miktari : $Kredi <BR>";
echo "Alabilceginiz Kredi Miktari : $KrediFaktoru <BR><BR>";
if ($Kredi <= $KrediFaktoru) echo "Sayin , $Ad $Soyad kredi
isteginizi memnuniyetle KABUL ediyoruz";
if ($Kredi > $KrediFaktoru ) echo "Sayin,$Ad $Soyad uzgunuz,kredi
isteginiz RED edilmistir.";
?>
</BODY>
</HTML>
4.Bu dosyayi "kredi2.php" olarak kayit edin.
5.Bir kac gecersiz deger ile formu test edin.
Ornek Dosyalar
http://www.turk-php.com/ornekler/kredi2.html
http://www.turk-php.com/ornekler/kredi2.php
Bir Guvenlik Onlemi
Bizler form icindeki verileri,programda yazdigimiz kodlar
ile kontrol edebiliyoruz.Peki bir kullanici "text" alanina
adini yazmak yerine beraberinde HTML taglari olan bir ifade
yazarsa ne olur?
Bunu onlemek icin PHP icerisinde "HTMLSpecialChars" komutu
kullanilmaktadir.
Ornek vermek istersek,
$Ad = HTMLSpecialChars ($Ad);
veya
$Soyad = HTMLSpecialChars ($Soyad);
yazimizi burada bitiridik...
Her turlu dusuncenizi cekinmeden serkan@turk-php.com adresine
gonderebilirsiniz.
|