IF Yapisi - BOLUM 4
IF Yapisi - BOLUM 4
Konu: PHP Yazar: Serkan Tarih: 01/03/02
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>
e 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.
Program: http://www.turk-php.com/ornekler/kredi2.html |
|
|
|
|
|
|
| SEÇMECE BİLGİLER |
|
| KATEGORİLER |
|
|
|