AKDENİZ FORUM


Ana Sayfa Benim Konularim Benim Mesajlarim
Geri git   AKDENİZ FORUM > VBulletin Destek & Webmaster Genel > Php, Asp, Flash, Java, Html
Kayıt ol Yardım Üye Listesi Arama Bugünki Mesajlar Bütün Forumları okunmuş kabul et

Php, Asp, Flash, Java, Html Php, asp, flash, java, html ve tüm web azılım dilleri hakkında bilgi paylaşımı yapabileceğiniz bölüm.

Tags:

Cevapla
 
Seçenekler
Alt 01-20-2008   #1
quant£S®
Se®ve® Administ®ato®
 
quant£S® - ait Kullanıcı Resmi (Avatar)

Türkiyenin En Kaliteli Bilgi Paylasim Mekani AKdenizForum..
Kullanıcı Bilgileri
 
Üyelik Tarihi: Jun 2006
Nerden: тυякєу
Mesajlar: 14.472
Üye No: 5
Extra Bilgiler
Tecrübe Puanı: 100
Rep Gücü : 14689
Rep Derecesi : quant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond repute
İletişim
ok PHP - Notlar && Dersler

Bu başlık altında PHP konusunda bir takım makalelerimi ve notlarımı yayınlayacağım. Bunu yaparken, başlangıç seviyesindeki bir kullanıcınında faydalanabilmesi en basitinden başlayayım istiyorum. Bu sebeple basit konulardan başlamayı tercih ettim.

Makaleler ile ilgili sorularınızı buradan sorabilirsiniz, diğer phpBB vs. gibi abik gubik scriptler hakkındaki sorularınızı bu başlığa sokmazsanız sevineceğim. Ayrıca makalelerde yer alan şeyler haricinde de yeni başlık açıp sorunuzu ayrı bir başık altında tutarsanız sevirinim.

Ara sıra makalelere ara verebilirim, nihayetinde okulum sınavlarım ve sorumluluklarım var :) Tüm zamanımı burada geçirecek halimde yok ;) Boş vakitlerimde yazıp yollayacağım. Şunu da belirteyim bu işin ne ustası ne de profesyoneli olduğumu iddia ediyorum, amacım sadece yardımcı olabilmek.

Şu ana kadar yazılan ders ve notların listesi:Sizlerde katkılarda bulunabilirsiniz..

Mesajınızda:

-> Mail Adresinizi verirseniz,
-> Konuyla alakasız yorum yaparsanız / Konuyla alakasız bir soru sorarsanız,
-> Amaçsız, içinde paylaşım olmayan, saçma konular açarsanız,
-> Üstüste mesaj yazarsanız ( Flood yapmakda denir),
-> Küfür ederseniz,
-> Konuyla alakasız bir başlık atarsanız,
-> Mesajınızın tamamını büyük harfler veya puntolar kullanarak yazarsanız,

Mesajınız SİLİNİR ayrıca siz BANLANIRSINIZ.


Bu tip mesajları ihbar etmek için yukarıda işaretlenmiş olan yere tıklayarak yöneticiyi uyarabilirsiniz.
нαуαт, öℓüмℓє кυмαя σуηαмα ѕαηαтı∂ıя...


[ÜYE OLMADAN LİNKLERİ GÖREMEZSİNİZ. BURAYA TIKLAYARAK BEDAVA ÜYE OLUN...]


AkdenizForum Toolbar Sitemizi Daha İyi Kullanmak İstiyorsanız Daha Kolaylıkla Sizde İndirin [ÜYE OLMADAN LİNKLERİ GÖREMEZSİNİZ. BURAYA TIKLAYARAK BEDAVA ÜYE OLUN...]
quant£S® isimli üyemiz çevrimdışıdır. (Offline)   Alıntı ile Cevapla
Alt 01-20-2008   #2
quant£S®
Se®ve® Administ®ato®
 
quant£S® - ait Kullanıcı Resmi (Avatar)

Türkiyenin En Kaliteli Bilgi Paylasim Mekani AKdenizForum..
Kullanıcı Bilgileri
 
Üyelik Tarihi: Jun 2006
Nerden: тυякєу
Mesajlar: 14.472
Üye No: 5
Extra Bilgiler
Tecrübe Puanı: 100
Rep Gücü : 14689
Rep Derecesi : quant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond repute
İletişim
ok PHP Programlama Dilinde Değişkenler ve Kullanımları

PHP Programlama Dilinde Değişkenler ve Kullanımları // Yeni başlayanlar

Her programlama dilinin yapıtaşları olan değişkenler PHP dilinde de temel olarak kabul edilebilir. Değişkenler her an, her yerde kullanılabileceğinden, değişkenleri bilmeyen bir insan PHP dilinde daima zorlanacaktır. Şimdi kısaca bahsedelim.

PHP dilinde değişkenler "$" (dolar işareti) ile başlar. Hiçbir şekilde rakam ile başlayamaz. Genel olarak değişkenlerin yazım şekilleri şunlardır:

Kod:
$isim = "Birhan";
$isim=Birhan;
$isim = <<<RESTART
<a href="hebelehubele.htm">hebele</a>
<a href='hebele.htm'>hebele</b>
RESTART;
Genel olarak değişkenlerin tanımlanış biçimlerini gördük. Şimdi bunları tek tek inceleyelim:

İlk şekilde gördüğünüz tanımlama, genel olarak kullanılan şekildir. En yaygın şekil budur.

İkinci şekilde gördüğünüz tanımlama genelde rakamlar için kullanılır, bakmayın ben sırayı bozmasın diye isim değişkeni olarak tanımladım fakat genelde rakam ve tek kelimelik içerik içerir.

Üçüncü şekle yeni bir paragrafta değinmek istedim, çünkü bu pek yaygın olmayan fakat her zaman her için aranılan bir yazım türüdür. Bunun sebebini şöyle açıklayayım, Örneğin bir değişken tanımladınız fakat içerisinde tırnak işaret vs. gibi programın çalışmasına engel olacak, hata verdirecek birtakım karakterler var. Bu hatayı engellemek için demin bahsini ettiğim tırnak işareti gibi hata verdirici karakterlerin önüne "\" konulur. Yani;

Kod:
$degiskenadi = "<a href="hebele.htm">hebele</a>";
gibi bir değişken tanımlarsak bunu kullanmaya çalıştığımızda, hatta kullanmasak bile programa hata verdirir. Bunun sebebi tahmin edebileceğiniz gibi, tırnak işareti ile başlayan değişkenin, tırnak işareti ile bitmesini engelleyen ortadaki tırnak işaretleridir. Bu işaretlerden 2. tırnak işareti değişkeni sonlandırıyor, fakat geriye kalan değişken parçasının bağımsız olarak varlığına devam etmesi üzerine program hata veriyor. Bunu engellemek için en basit olarak değişken şu şekilde yazılabilir;

Kod:
$degiskenadi = "<a href=\"hebele.htm\">hebele</a>";
burada görüldüğü gibi değişkenin değerindeki tırnak işaretlerinin önüne "\" getirdik ve onları etkisizleştirdik. Bunları size uzun uzun anlattım, aslında boşuna okudunuz sayılır. Asıl amacım üçüncü şekildeki değişken kullanımının faydalarını yaşatarak anlatmaktı. Bir değişkeni o şekilde tanımlayarak bu gereksiz slash`lerden kurtulabilirsiniz. Hemen az önce verdiğimiz örneği bir de üçüncü şeklimizle deneyelim:

Kod:
$degiskenadi = <<<RESTART
<a href="hebele.htm">hebele</a>
RESTART;
Yukarıdaki tanımladığımız değişken hata vermeyecektir. Çünkü görüldüğü gibi tırnak ile başlamıyor. Bu bambaşka yazılış şekli ile çok rahat şekilde çalışmalarınızı sürdürebilirsiniz ve gereksiz slash`lerden de kolayca kurtulursunuz.

Bu arada unutmadan, her şeyde olduğu gibi değişkenleri de noktalı virgül yardımı ile sonlandırmayı unutmuyoruz. Yani değişkenin sonundaki, değişkenin bittiğini belirten noktalı virgül olmazsa hata almanız muhtemeldir.

Şimdi değişken tanımlamayı artık öğrendiğimize göre, artık değişkenleri kullanmaya sıra geldi. Hemen küçücük bir örnekle de bunu pekiştirelim;

Kod:
<?php
$nick = "RestarT";
$isim = "Birhan";

echo("$nick`ın gerçek ismi $isim`dir.");
?>
Bu kısa programımızın çıktısı: RestarT`ın gerçek ismi Birhan`dır. olacaktır. Şimdi siz büyük ihtimalle düşündünüz ki "e ben oraya değişken tanımlamakla uğraşacağıma direk nick ve ismi yazarım kurtulurum, neden uğraşayım ki?" işte bu yanılgıya düşmeniz en büyük hatanız olur. PHP dili öylesine geniş bir dil ki; değişkenleri siz gerek koşullarda, döngülerde, fonksiyonlarda, vs. her yerde kullanacaksınız. Bu yüzden şimdi neden ben bunları okudum gibi düşüncelere kapılmayın.

Yukarda okuduğunuz metin, size nasıl değişken oluşturacağınızı ve bunları nerede kullanacağını anlattı. Şimdi zaten hazırda var olan ve sabit olan birkaç Apache ve PHP değişkenini tanıyacağız. Bu değişkenleri birçok alanda kullanabileceğinizden emin olabilirsiniz.

Apache değişkenlerinden başlayalım;

Kod:
$REMOTE_ADDR; // Bu değişken web sayfasını gezmekte olan kullanıcının IP numarasını verir. 123.123.123.123 gibi bir çıktı verecektir.
$SERVER_ADMIN; // Bu değişken sunucuda admin için verilen değeri içerir. admin@localhost gibi bir çıktı verecektir.
$SERVER_PORT; // Bu değişken sunucunun kullandığı port`u verir. Genelde 80`dir.
$SERVER_SIGNATURE; // Bu değişken sunucu sürümü, ismi gibi bilgiler verir. Apache/1.3.23 Server at localhost Port 80 gibi bir çıktı verecektir.
$SCRIPT_NAME; // Bu değişken kullanılan scriptin dizinini verir. c:\\apache\\htdocs\\deneme.php gibi bir çıktı verecektir.
$REQUEST_URI; // Bu değişken kullanılan scriptin ismini verecektir. /deneme.php gibi bir çıktı verir.
$SERVER_NAME; // Bu değişken scriptin üzerinde çalıştığı sunucunun ismini verir. localhost gibi bir çıktı verecektir.
$SERVER_SOFTWARE; // Bu değişken sunucu yazılımının ismini içerir. Apache/1.3.23 (Win32) gibi bir çıktı verecektir.
$SERVER_PROTOCOL; // Bu değişken sayfanın kullandığı bilgi protokolü hakkında bilgi verir. HTTP/1.0 gibi bir çıktı verecektir.
$REQUEST_METHOD; // Bu değişken sayfaya erişirken kullanılan metot bilgisini içerir. GET, POST vs. gibi çıktılar verecektir.
$HTTP_ACCEPT_LANGUAGE; // Bu değişken sunucunun dilini verir. tr, eng vs. gibi çıktılar verecektir.
$HTTP_ACCEPT_ENCODING; // Bu değişken talebe ait kodlama bilgisini verir. gzip, zip gibi çıktılar verecektir.
Bunların haricinde birkaç sabit apache değişkeni daha vardır. Fakat yazdıklarım genelde çok kullanılan değişkenler olduğu için size yetecektir.

PHP değişkenleri ise şöyledir,

Kod:
$HTTP_POST_VARS; // Bu değişken formdan post metodu ile gelen değerleri içerir.
$HTTP_GET_VAR; // Bu değişken formdan get metodu ile gelen değerleri içerir.
$HTTP_COOKIE_VARS; // Bu değişken cookie`lerden (çerezler) alınan değerleri içerir.
$PHP_SELF; // Bu değişken o esnada çalışmakta olan scriptin dosya adını içerir.
Daha fazlasını görebilmek için aşağıdaki kodu kaydedip çalıştırın.

Kod:
<?php phpinfo(); ?>
PHP dilinde değişken ve kullanım alanları hakkında en azından bir ön bilginiz olmuştur. Bu dökümanda öğrendikleriniz PHP dilinin temel taşlarıdır. Değişkenleri her zaman kullanacağınız için bunları çok iyi bilmeniz gerekir.

Başarılar dilerim, kolay gelsin.

Hoşçakalın.

// gelecek konu: array (diziler)
quant£S® isimli üyemiz çevrimdışıdır. (Offline)   Alıntı ile Cevapla
Alt 01-20-2008   #3
quant£S®
Se®ve® Administ®ato®
 
quant£S® - ait Kullanıcı Resmi (Avatar)

Türkiyenin En Kaliteli Bilgi Paylasim Mekani AKdenizForum..
Kullanıcı Bilgileri
 
Üyelik Tarihi: Jun 2006
Nerden: тυякєу
Mesajlar: 14.472
Üye No: 5
Extra Bilgiler
Tecrübe Puanı: 100
Rep Gücü : 14689
Rep Derecesi : quant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond repute
İletişim
ok PHP Programlama Dilinde Diziler (Array)

[b]PHP Programlama Dilinde Diziler (Array) // Yeni başlayanlar - Orta düzey

Diziler derken TV dizileri diye anlayanlarınız varsa hemen terk edin :) Elbette bu işin şakası. Eğer basit olarak açıklamam gerekirse dizi değişkenleri dediğimiz değişken tanımlama yapısı işinize oldukça yarayabilir. Bundan önce değişkenler hakkında bilgi sahibi olduğunuzu göz önüne alarak ufak bir örnekle başlayalım.

Kod:
$isimler[1] = "Ali";
$isimler[2] = "Veli";
$isimler[3] = "Deli";

echo $isimler[2];
Yukarıdaki kodu çalıştırdığımızda "Veli" çıktısını alırız. Bu dizi değişkenlerini her alanda kullanabileceğinizden ötürü bilmenizde fayda var. Daha gelişmiş bir örnek için aşağıdaki kodu inceleyin;

Kod:
$isimler["kiz"][1] = "Selen";
$isimler["kiz"][2] = "Melis";
$isimler["kiz"][3] = "Elmas";
$isimler["erkek"][1] = "Birhan";
$isimler["erkek"][2] = "Kerem";
$isimler["erkek"][3] = "Yunus";
$isimler["erkek"][4] = "Emre";

echo $isimler["kiz"][3];
Bu kodu çalıştırdığımızda alacağımız çıktı "Elmas" olacaktır. Sanırım bunun sebebini zaten hemen anladınız ;) Şimdi bu öğrendiklerimizi basit bir array içerisinde kullanalım.

Kod:
$isimler = array(
	1 => "Birhan",
	2 => "Kerem",
	3 => "Yunus",
	4 => "Emre",
);

echo $isimler[3];
Artık tahmin edeceğiniz gibi çıktı olarak "Yunus" değerini verecektir. Merak etmeyin uyuzluk olsun diye değil, array kullanımını göstermek için verdim bu örneği ;) Şimdi daha karmaşık bir array yapısını inceleyelim.

Kod:
$isimler = array(
	"kiz" => array(
			1 => "Selen",
			2 => "Melis",
			3 => "Elmas"
		),
	"erkek" => array(
			1 => "Birhan",
			2 => "Kerem",
			3 => "Yunus"
		)
);

echo $isimler["kiz"][3];
Yukarıdaki kod karmaşık gelmiş olabilir. Hak veriyorum :) Öncelikle $isimler isimli değişkene bir array dizisi tanımladık. İlk array dış kabuk olsun. Bunun içine iki array daha yerleştirdik. İç dizilerdeki birinci dizimiz kız isimlerini sıralamak için kullanıldı. "kiz" dizisi bittiği zaman parantezi kapattıktan sonra virgüllendirdik. Eğer virgüllendirmeseydik hata verirdi. Ardından ikinci iç dizimiz olan ve erkek isimlerini sıraladığımız "erkek" dizisini hazırladık. Bu diziyi de bitirdik fakat bu artık son iç dizimiz olduğu için virgül koymadık. Eğer ardından başka bir benzer yapı gelecek olsaydı yine virgülümüzü koyup ilk dizinin sona erdiğini belirtmek durumunda kalacaktık. Son olarak dış kabuk dediğimiz dış dizimizi kapattık ve noktalı virgül ile $isimler değişkenine tanımladığımız array dizisinin bittiğini belirttik. Ekrana ise kız isimlerinden "3" ile eşleştirilmiş olan "Elmas" ismini ekrana bastırdık.

Dizi yapısını kısmen öğrendik fakat ne işimize yarayacak? Kafanıza takılmıştır elbette. Hemen bir örnekle de ne işe yarayacağını görelim;

Kod:
$gunler = array("Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi");
echo $gunler[date("w")];
Öncelikle bu kodda size yabancı gelebilecek ibareleri açıklayayım. Görüldüğü gibi date(); fonksiyonunu kullandık. Bu fonksiyon PHP için tarih işlemlerinde kullanılır. İleri de tarih işlemlerini ayrı bir notta ele alacağız. Şimdilik sadece date("w") fonksiyonunun bize o günün hafta içindeki sıra sayısını verdiğini bilmemiz yeterli. "w" ibaresi ile gün sırasını alırız ve bu değer sıfırdan başlar. Bu yüzden karışıklık olmasın diye array dizisinde ilk sıraya "Pazar" değerini girdik. Oysa ki hafta pazartesi ile başlamalıydı. Amacımız sadece karışıklıklığı önlemek oldu. Ayrıca hemen dipnot düşelim ki array dizisinin bu tür kullanımında her içeriğe bir sayı değeri atanır ve bu sayı sıfır sayısından başlar. Yani yukarıdaki $gunler değişkenine tanımladığımız array dizisi için "Pazar" => 0 değerine eşittir. "Pazartesi" => 1 değerine eşittir. Gerisini zaten anlamış olmalısınız ;)

Yukarıdaki örnekte görüldüğü gibi PHP ile ancak ingilizcesini alabileceğimiz gün isimlerini Türkçe`ye çevirdik. Artık sitemizde Türkçe olarak "Pazartesi" yazabileceğiz mesela ;)

Kullanım alanı elbette bununla sınırlı değil, aklınıza bile gelmeyecek yerlerde bu dizi yapısını kullanacaksınız. Ama ben sadece yüzeysel olarak bu kadar açıklayabiliyorum.

Array ile kullanacağımız bir takım sıralama fonksiyonları da vardır. Sıralamalarda Türkçe karakterle başlayan kelimeler tanınmadığı için son kısımda yer alır. bu fonksiyonlar şunlardır;

sort(); - Dizi içeriğini alfabetik sıralama.
rsort(); - Dizi içeriğini ters alfabetik sıralama.
asort(); - Dizi elemanlarını değerine göre sıralar.
arsort(); - Dizi elemanlarını değerine göre tersten sıralar.
ksort(); - Dizi elemanlarını içeriğe göre sıralar.
krsort(); - Dizi elemanlarını içeriğe göre tersten sıralar.

Hemen örneklerle bu fonksiyonları açıklayalım.

Örnek - sort();

Kod:
$seviyeler = array(
	"Admin" => "100",
	"Yönetici" => "10",
	"Üye" => "1"
);
sort($seviyeler);

foreach($seviyeler as $x => $y) {
	echo("$x - $y<br>");
}
Yukarıdaki kodda foreach döngüsünü kullandık. Kodu çalıştırdığımızda $seviyeler değişkenindeki içeriğin alfabetik bir şekilde sıralandığını görürüz. Eğer kullandığımız sort($seviyeler); yapısını rsort($seviyeler); yaparsak göreceğiz ki sıralama tersine dönecektir.

Örnek - asort();

Kod:
$seviyeler = array(
	"Admin" => "100",
	"Yönetici" => "10",
	"Üye" => "1"
);
asort($seviyeler);

foreach($seviyeler as $x => $y) {
	echo("$x - $y<br>");
}
Bu kodu çalıştırdığımızda sonuç aşikardır. "Üye" başta olmak üzere sıralama yapılır. Çünkü "Üye" en düşük değere sahiptir. Değeri 1`dir. Eğer buradaki fonksiyonu arsort($seviyeler); yaparsak sıralamanın tam tersine döneceğini de görmüş oluruz.

Örnek - ksort();

Bu örnek için kod yazma ihtiyacı duymuyorum. Tek yapmanız gereken yukarıdaki örnekteki fonksiyonu ksort($seviyeler); veya tersi için krsort($seviyeler); olarak değiştirmek. Sonuçta göreceksiniz ki bu seferde sıralama, dizi elemanlarının alfabetik sıralaması şeklindedir. ksort(); kullanılırsa "Admin" başta, krsort(); kullanılırsa sonda yer alacaktır.

Oldu ki biz dizimizin içinden rastgele bir değer alıp bunu ekrana basmak istiyoruz. Bu durumda yardımımıza hemen suffle(); koşuyor ;) Hemen bir örnekle de bunu açıklayalım.

Kod:
$seviyeler = array(
	"Admin" => "100",
	"Yönetici" => "10",
	"Üye" => "1"
);

shuffle($seviyeler);

for ($x=0; $x<1; $x++) {
	echo("$seviyeler[$x]<br>");
}
Bu kodu çalıştırdığımızda ekrana her seferinde başka bir değer gelecektir. Peki biz dizimizdeki elemanların toplam değerini bulmak için ne yapacağız? Burada da devreye array_sum(); fonksiyonu giriyor.

Örnek - array_sum();

Kod:
$sayilar = array(1,2,3,4,5,6,7,8);
echo array_sum($sayilar);
Bu kodun çıktısı 36 olacaktır. Çünkü 1+2+3+4+5+6+7+8=36 eder. Bu fonksiyonda çeşitli alanlarda işinize elbet yarayacaktır.

Bizim iki adet dizimiz olsun ve bunları birleştirmek istiyor olalım. Ne yapmamız gerek? array_merge(); fonksiyonu bu iş için uygundur. Sadece iki diziyi değil, n sayıdaki diziyi bununla birleştirebilirsiniz. Hemen örneğimizi de verelim;

Örnek - array_merge();

Kod:
$x = array(1,2,3,4,5,6,7,8);
$y = array(4,7,8,3);

$birlestir = array_merge($x, $y); 

print_r($birlestir);
Örneğin en sonunda görüldüğü gibi ekrana yeni dizimizi bastırıyoruz. Eğer print_r yerine print kullansaydık ekranda sadece "Array" yazısını görecektik. Böylece print ve print_r arasındaki farkı da görmüş olduk ;)

Dizilerimizde bazen bir değeri birden çok kullanabiliriz. Eğer ki hangi değerin kaç kez kullanıldığını öğrenmek istersek hemen yardımımıza array_count_values(); koşuyor. Aşağıda ki örneği inceleyin.

Örnek - array_count_values();

Kod:
$x = array(a,b,t,a,y,k,d,w,y,a,g,v,b,e,t);

print_r(array_count_values($x));
Eğer bu kodu çalıştırırsak bize "Array ( [a] => 3 => 2 [t] => 2 [y] => 2 [k] => 1 [d] => 1 [w] => 1 [g] => 1 [v] => 1 [e] => 1 )" gibi bir çıktı verecektir. Burada da görüldüğü gibi a değerinin üç kez kullanıdığı, b değerinin 2 kez kullanıldığı gibi ifadeler yer almakta. Anladınız zannediyorum ;)
Array fonksiyonu için yazılabilecek birkaç fonksiyon daha var ama şimdilik bu kadar yeterli diye düşünüyorum. İleride lazım olursa onları da yazarım.

Hoşçakalın.

// gelecek konu: if yapısı
quant£S® isimli üyemiz çevrimdışıdır. (Offline)   Alıntı ile Cevapla
Alt 01-20-2008   #4
quant£S®
Se®ve® Administ®ato®
 
quant£S® - ait Kullanıcı Resmi (Avatar)

Türkiyenin En Kaliteli Bilgi Paylasim Mekani AKdenizForum..
Kullanıcı Bilgileri
 
Üyelik Tarihi: Jun 2006
Nerden: тυякєу
Mesajlar: 14.472
Üye No: 5
Extra Bilgiler
Tecrübe Puanı: 100
Rep Gücü : 14689
Rep Derecesi : quant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond repute
İletişim
ok PHP Programlama Dilinde If Yapısı (Koşullandırma && Sınama)

PHP Programlama Dilinde If Yapısı (Koşullandırma && Sınama) // Yeni başlayanlar

Her türlü programlama dilinde olduğu gibi PHP içinde koşullandırma ve denetleme organizması olan if yapısı olmazsa olmaz bir deyimdir. If kelimesinin Türkçe karşılığının "eğer" olduğunu söylersem herşeyi daha kolay anlayabileceksiniz. Örneğin;

Kod:
if ($isim == "") {
	echo("\$isim değişkeninin içi boş!");
}
Yukarıdaki örnekte $isim değişkeninin içinin dolu olup olmadığını sorguladık. Değişkenin değeri boş olduğu için bu denetleme sonucunda çıktı olarak yukarıdaki echo komutunun içeriğini alacağız. Peki ya değişkenin içi dolu olsa idi? İşte bu noktada devreye if deyiminin "else" kısmı giriyor. Aşağıdaki örneği inceleyin:

Kod:
if (empty($isim)) {
	echo("\$isim değişkeninin içi boş!");
}
else {
	echo("\$isim değişkeninin içi dolu!");
}
Hemen deyimimizin sonuna else kısmını ekledik. "Else" kelimesinin Türkçe karşılığı "değilse" gibi denebilir. Yani if kelimesinin tersi. Bu if deyimimizde empty(); fonksiyonunu kullandık. Bu ilk örnekteki sınama ile aynı işlevi gerçekleştirir. Yukarıdaki if yapısı "eğer $isim değişkeninin değeri yoksa şöyle böyle yap, varsa da şöyle şöyle yap" anlamı taşır. $isim değişkenine değer yüklersek else komutu çalışacaktır. Bu arada hemen dipnot olarak geçeyim ki empty(); fonksiyonunun tersi olarak isset(); kullanılabilir. Bu empty(); fonksiyonunun tam tersi olarak "eğer $isim değişkeninin değeri varsa .." gibi bir ifade ile açıklanabilir.

If deyiminin olmazsa olmazlarından biri de "elseif" yapısıdır. Bu yapı mutlaka if yapısından sonra bulunmalıdır. Şöyle bir örnekle açıklanabilir;

Kod:
if ( $x == 3 ) {
	echo("Değişkenin değeri: 3");
}
	elseif ( $x == 5 ) {
		echo("Değişkenin değeri: 5");
	}
else {
	echo("Değişken 3 veya 5 değerlerinden birisine sahip değil.");
}
Yukarıda önce $x değişkeninin değerinin 3 olup olmadığı, sonra 5 olup olmadığı sınandı. Eğer iki koşulda sağlanmadıysa else kısmı devreye girdi. If ve else arasına istediğimiz kadar elseif tanımlayabiliriz. Fakat bir if deyiminde else kısmı sadece bir kere yazılabilir. Ayrıca unutulmamalıdır ki bir if deyimi mutlaka if ile başlamalıdır, if olmadan elseif ya da else kısımları yazılamaz.

If ve else kalıbını uzun uzun yazıncaya kadar "?" operatörü ile de bir koşul sınama yapısı oluşturulabilir. Hemen aşağıdaki örneği inceleyin;

Kod:
$x = 3;
empty($x)?print("x değeri boş"):print("x değeri boş değil");
Yukarıda ilk olarak $x değişkeninin boş olup olmadığını sınadık. Eğer boş ise ilk print komutu, boş değilse ikinci print komutu devreye girecektir. Bizim $x değişkenimizin değeri 3 olduğu için alacağımız çıktı 2. print komutudur. Tabi ilk defa bunları öğrenmeye çalışan birisinin ilk olarak genelde kullanılan yapıyı öğrenmesi daha mantıklıdır ;) Zaten genelde son örnek değil, ilk verdiğim şekillerde kullanım daha yaygındır. Tabi ki if deyimi için farklı yazım türleri de mevcuttur.

Süslü parantez kullanmadan kısa if deyimleri yazmak istiyorsanız aşağıdaki örneği inceleyin:

Kod:
if ( $HTTP_REFERER != "http://www.abc.com" ): echo("Bu sayfaya diğer sayfalardan erişim yasaklanmıştır!"); exit(); endif;
Bu örnekte öncelikle sitemize hangi siteden geçiş yapıldığını $HTTP_REFERER sabiti ile öğrendik. Sonra bunu kendi sitemizin anasayfası ile kıyasladık ve eğer bizim anasayfamız haricinde bir başka siteden sitemize giriş yapılmak isteniyorsa ekrana echo komutu ile bir uyarı yazısı yazdırdık. Sonra da exit(); komutu ile işlemi durdurup endif; ile if deyimimizi sonlandırdık.

exit(); fonksiyonu hakkında biraz daha açıklayıcı olayım. Bu fonksiyon kullanıldığı zaman scriptinizin PHP tarafından işlenişi durur. Yani bu fonksiyonu nereye koyarsanız PHP yorumlayıcısı scriptinizi oraya kadar okur ve bu fonksiyonu çalıştırdıktan sonra gerisini okumaz. Bu yapı üyelik sistemlerinde ve benzeri yapılarda çokça kullanılır. Bunun benzeri olarak die(); fonksiyonu da kullanılabilir.

PHP dilinde if yapısı bu kadar. Görüldüğü gibi aslında herşey gayet kolay ;)

Hoşçakalın.

// gelecek konu: switch yapısı
quant£S® isimli üyemiz çevrimdışıdır. (Offline)   Alıntı ile Cevapla
Alt 01-20-2008   #5
quant£S®
Se®ve® Administ®ato®
 
quant£S® - ait Kullanıcı Resmi (Avatar)

Türkiyenin En Kaliteli Bilgi Paylasim Mekani AKdenizForum..
Kullanıcı Bilgileri
 
Üyelik Tarihi: Jun 2006
Nerden: тυякєу
Mesajlar: 14.472
Üye No: 5
Extra Bilgiler
Tecrübe Puanı: 100
Rep Gücü : 14689
Rep Derecesi : quant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond reputequant£S® has a reputation beyond repute
İletişim
ok Switch Yapısı

Switch Yapısı // Yeni başlayanlar

Bu yapı aslında if yapısı ile hemen hemen aynıdır. Ancak bazı durumlarda if kullanmak daha kompleks bir hal alırken switch kullanmak bize daha kolay ve kısa bir yöntem olarak görülebilir. Switch deyimi if deyimine ne kadar benzese de if deyiminin yaptığı herşeyi yapamaz. Yine de bize bazı durumlarda fazlasıyla yardımcı olabilir.

Peki ne işimize yarayacak bu deyim? Bu yapıyı if yapısı ile eşdeğer tutarak ne işe yarayabileceğini düşünebilirsiniz. Nihayetinde bu da bir if benzeri yapıdır ve vereceğiniz koşula göre sınama yapıp size sonucu verir. Yazının devamında örnekler ile ne işe yarayacağını biraz da olsa anlayabileceksiniz.

Switch deyiminin yazılışını ve dizilişini öğrenmek için aşağıdaki örneği inceleyin:

Kod:
switch ($tarih) {
	case "dmy";
		echo date("d.m.Y");
	break;

	case "dmygis";
		echo date("d.m.Y G:i:s");
	break;

	default:
		echo("Tarih türünü seçmediniz. Bu sebeple default tarih gösterimini görüyorsunuz:");
		echo date("<b> d-m-Y G:i - l</b>");
}
Yukarıdaki kodu ilk olarak şekil yapısı olarak inceleyelim. Dikkatinizi çekti ise her koşul case ile tanımlanıp break ile sona erdiriliyor. Bu iki eleman switch deyiminin olmazsa olmazları diyebiliriz. Örnekte ilk olarak $tarih değişkeninin değeri sınanıyor ve bu koşullara bağlanıyor. Switch deyiminde de, if deyimine benzer bir şekilde değişken tanımlanıyor, daha sonra süslü parantez "{ }" açılıyor ve koşullar sıralanıyor. Tüm koşullar sıralandıktan sonra, eğer hiçbir koşul sağlanmıyorsa devreye gidecek olan default kısmı yer alıyor. Unutmamalıdır ki bu kısmın switch deyiminin sonunda olması daha iyi olacaktır, eğer ortalarda ya da en başta olursa deyim hatalı çalışabilir. Ayrıca default bölümü case kısımlarında olduğu gibi noktalı virgül ile değil, iki nokta üstüste işareti ile yazılır. Eğer noktalı virgül koyarsanız yine hata alırsınız.

Şimdi örneğimizi inceleyelim. Örnekte $tarih değişkeninin alacağı değerleri sınıyoruz ve bu değerlere göre koşullar yaratıp işlem yaptırıyoruz. Bu kodu ornek.php ismi ile kaydedip [ÜYE OLMADAN LİNKLERİ GÖREMEZSİNİZ. BURAYA TIKLAYARAK BEDAVA ÜYE OLUN...]?tarih=dmy olarak çalıştırırsanız ilk koşulumuz gerçekleşecek ve "09.03.2004" gibi bir çıktı alacaksınız. Aynı şekilde eğer ornek.php?tarih=dmygis olarak çalıştırırsanız "09.03.2004 20:12:17" gibi bir çıktı alırsınız. Eğer sadece [ÜYE OLMADAN LİNKLERİ GÖREMEZSİNİZ. BURAYA TIKLAYARAK BEDAVA ÜYE OLUN...] olarak çalıştırırsanız hiçbir koşul yerine gelmediğinden "Tarih türünü seçmediniz. Bu sebeple default tarih gösterimini görüyorsunuz: 09-03-2004 20:13 - Tuesday" çıktısını alırsınız. Yine eğer ornek.php?tarih=ffsafdasfdas gibi bir şekilde girmeye çalışırsanızda default kısmı devreye girer ve aynı çıktıyı alırsınız.

Dikkat etmeniz gereken şeyleri şu şekilde sıralayabiliriz:
  • Case ve default kısımlarının imla farklarına dikkat etmeliyiz. (Yukarıda anlatılan noktalı virgül ve iki nokta üstüste farkı.)
  • Case ile başlattığımız her koşulu mutlaka break ile sonlandırmalıyız. Eğer sonlandırmazsak ya hata verir ya da diğer break; komutuna kadar çalışmaya devam eder ve bozukluk yaratır.
  • Switch yapısına başlarken açtığımız süslü parantezi mutlaka deyimin sonunda kapatmalıyız.

Mesela bir site yapıyorsunuz ve bu sitenizin aynı diğer sitelerdeki gibi [ÜYE OLMADAN LİNKLERİ GÖREMEZSİNİZ. BURAYA TIKLAYARAK BEDAVA ÜYE OLUN...]index.php?bolum=programlama gibi linkleri olsun istiyorsunuz. Bu durumda switch yapısı oldukça işlevseldir. Bunu if yapısı ile de yapabilirsiniz fakat switch if deyiminden bu durumlarda daha hızlı çalışacağı için ve daha işlevsel olacağı için önerilir. Yukarıdaki örneğe bakarak istediğiniz türden linkler yaratabilirsiniz.

Switch içerisine istenildiği kadar koşul tanımlanabilir, fakat ne kadar çok koşul olursa çalışma performansı o kadar düşecektir. Bu yüzden olabildiğince kısa tutmaya çalışmalıyız. Ayrıca switch deyiminin if deyiminden daha hızlı çalıştığı bilindiğinden, switch ile yapabileceğimiz işlemleri if ile yapmamalıyız. Yapsak bile sonuçta performans düşeceği için zararlı çıkan biz oluruz.

Hoşçakalın.

// gelecek konu: döngüler (for && while)
quant£S® isimli üyemiz çevrimdışıdır. (Offline)   Alıntı ile Cevapla
Cevapla

Seçenekler

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Gitmek istediğiniz klasörü seçiniz