Bu Sayfayı Paylaş:

Bilgi/Açıklama

Ortam ve Sunucu

Çalıştırma Ortamı

PHP Temel Bileşenler

PHP ile geliştirme yapabilmek için çeşitli ortamlara gereksinim duyulur. Bunlardan en önemlileri:
  • Örün Sunucu (Web Server) : HTTP protokolü üzerinden, istemci veya tarayıcılara HTML ve öteki türdeki içerikleri sunmak için yapılmış HTTP sunucuları gereklidir. Bunlardan en bilenleri şunlardır: Apache Web Server, Internet Information Server
  • PHP Motoru (PHP Engine) : Bir örün sunucunun PHP çalıştırabilecek duruma gelmesini sağlayan yazılımlardır. Bunlardan en bilinenlerden biri Zend Engine adlı üründür.
  • SQL Veritabanı (SQL Database) : Her ne kadar koşul olmasa da, neredeyse tüm uygulamalar bir veritabanı kullanır. O yüzden PHP ile birlikte genellikle bir veritabanı da kurulur. Bunlardan en yaygın olanlarından birisi MySQL ürünüdür.

AMP - Apache MySQL PHP

PHP geliştirme için gerekli olan araçlar genellikle birlikte kurulur. Bunlardan en temel olanları; Apache Web Server, MySQL ve PHP Engine olduğu için, bunları birlikte kuran türlü paketler bulunmaktadır.
Önceleri LAMP (Linux Apache MySQL Perl) biçiminde bir paket anlayışı vardı. Buna göre Linux işletim sistemi kurulur, onun üzerinde de Apache Web Server, MySQL ve Perl Engine kurulurdu. Ancak zamanla Perl gözden düştü ve yerine PHP geldi ve bu pakete de LAMP denmeye devam edildi. Öte yandan, PHP diline almaşık olarak Python da kullanılmaya başlandı ve bu bileşime de LAMP adı verilmektedir.
Linux için kullanılan LAMP çözümünün Windows işletim sistemi için sürümleri de çıkmış, adına WAMP (Windows Apache MySQL Perl/PHP/Python) denmiştir. Hem Linux hem de Windows için çalışan paketlere de XAMP adı verilmektedir. Buradaki X, herhangi bir işletim sistemi anlamına gelmektedir. Hem Perl hem de PHP desteği olduğu için XAMPP adı da verilmektedir ki böyle bir AMP dağılımı da bulunmaktadır.
MySQL veritabanı, önce Sun firması tarafından satın alınması ve Sun firmasının da Oracle firması tarafından alınmasıyla, rakiplerinden birisi olan Oracle kurumunun eline geçmiş oldu. Ancak MySQL veritabanının kurucusu, MariaDB adında, MySQL kodlarından çatallanmış yeni bir sunucu geliştirdi. O yüzden AMP paketlerindeki M harfi MySQL yerine MariaDB anlamına da gelebilmektedir. Ancak bir çok kişi, adı MariaDB de olsa, MySQL için çalışan kodlar aynen MariaDB için de çalıştığı için, yine MySQL adını kullanmaktadır.

Bilgi/Açıklama

Genel Konular

Söz Dizimi

PHP, bir örün programlama (web programming) dilidir. Ortaya çıkma amacı, kişilerin kendi kişisel sayfalarını çok kolay bir biçimde oluşturabilmesidir. Kullanımının kolaylığı, PHP dilini yalın sayfaların ötesinde, çok gelişmiş örün uygulamaları geliştirme için kullanılır duruma getirmiştir.

HTML

PHP dili bir HTML sayfası içerisinde kodlanır. Hiç bir PHP öğesi olmasa da, yalnızca HTML öğelerini içeren bir sayfa .php uzantısı ile oluşturulursa PHP sayfası olarak değerlendirilir. Hiç PHP kodu içermeyen bir PHP sayfası aşağıdaki gibi yapılabilir:
<html>
<head>
<title> Godoro PHP </title>
</head>
<body>
<h1> Godoro PHP </h1>
<p> Bu sayfada herhangi bir PHP kodu yok. </p>
</body>
</html>
Görüldüğü gibi yukarıdaki sayfa herhangi bir programlama kodu içermemektedir.
Ekran çıktısı:

PHP

PHP sayfalarında HTML içerisinde kodlar <?php ile ?> arasında yazılır. Bunun daha kısa olan biçimi ise <? ile ?> arasında yazmaktır. Ancak bu, kimi PHP ortamlarında, özel bir ayar yapmadıkça desteklenmez.
Bir sayfada herhangi bir PHP kodu çalıştırmak için:
<?php
  // Buraya PHP kodu gelecek
?>
biçiminde bölüm eklenir.
Ekrana metin basan bir PHP sayfası aşağıdaki gibi yapılabilir:
<html>
<head>
<title> Godoro PHP </title>
</head>
<body>
<h1> Godoro PHP </h1>
<?php
	echo "Burada yazılanlar ekranda görünür";
?>
</body>
</html>
Buradaki echo (yankıla) buyruğu yazılan sicim (string) içeriğini bulunduğu yere basar. PHP dilinde echo ile düz yazı basılabildiği gibi, HTML içeriği de basılabilir.
Yukarıdaki örnekte ekrana bir yazı, echo buyruğu kullanarak basılmaktadır. Söz konusu buyruk, body etiketi içerisinde h1 etiketinden sonra yazılan bir kod bloğunda yazıldığı için, sonuç olarak üretilen HTML kodunda da aynı konumda yer alır.
Ekran çıktısı: PHP dilinde her tümce için demeç (statement) adı verilir ve sonunda noktalı virgül (semicolumn) işareti (;) konur. Satır kavramı yoktur. Aynı satıra birden çok demeç yazılabilir. Ancak okunaklılığı olumsuz etkilediği için hiç önerilmez. Örnek:
echo "Godoro"; echo "PHP"; echo "Kitap";

Söz Dizimi

PHP, bir örün programlama (web programming) dilidir. Ortaya çıkma amacı, kişilerin kendi kişisel sayfalarını çok kolay bir biçimde oluşturabilmesidir. Kullanımının kolaylığı, PHP dilini yalın sayfaların ötesinde, çok gelişmiş örün uygulamaları geliştirme için kullanılır duruma getirmiştir.

Değişken ve Dizi

Değişken (Variable)

Tüm programlama dilleri değişken (variable) adında, içerisinde veri barındıran yapılar içerirler. PHP değişkenlerinin önüne dolar işareti ($) konur. Örneğin company adlı bir değişken tanımlayıp değerini "Godoro" yapmak istenirse aşağıdaki gibi bir kod yazılabilir:
$company="Godoro";
PHP dilinde değişkenler için tür (type) bilgisi verilmez. Tür bilgisini PHP, atanan değere bakarak kendisi bulur. Yukarıdaki örnekte çift tırnak (") içerisindeki değer , verinin türünün sicim (string) olduğunu belirlemiş olur. Bunun yerine atama
$company=123;
biçiminde olsaydı, değişkenin türünün tümsayı olduğu ortaya çıkacaktı.
Bildirilmiş bir değişkenin kullanımı aşağıdaki gibi, yine dolar işareti ($) kullanılarak yapılır. Örnek:
echo $company;
Değişkenleri echo kullanmadan arasında vererek de basmak olanlıklıdır. Örnek:
<?=$unit?>
Burada eşittir (=) işareti echo anlamına gelir. Bu biçimde kullanımda eşittir işaretinden sonra gelen kod parçası bir deyim (expression) olmalı, yani bir değer içermelidir. Buraya demeç (statement) yazılamaz ve sonuna noktalı virgül (;) konulamaz.
Ekrana bir değişkenin değerini basan bir PHP sayfası aşağıdaki gibi yazılabilir:
<html>
<body
<h1> Değişken </h1>
<?php
	$company="Godoro";	
	echo $company;
	$unit="Eğitim";
?>
Birim <b><?=$unit?></b>
</body>
</html>
Yukarıdaki örnekte $company (şirket) diye bir değişken, değeri verilerek tanımlanmakta ve sonra echo buyruğuyla ekrana basılmaktadır. Sonraki satırlarda $unit (birim) değişkeni tanımlamakta ancak ekrana basılması echo ile değil de <?= ve ?> işaretleri arasında basılmaktadır.
Ekran çıktısı:

Sicim (String)

En çok kullanılan veri türlerinden birisi de sicim (string) türüdür. Yazı karakterlerini içerisinde barındırır. Harf, rakam, noktalama işareti gibi klavyeden girilebilen karakterlerin tümü bir sicimin içinde yer alabilir.
Bir sicim içerisinde bir değişken dolar işareti ($) ile kullanılabilir. Örnek:
$name="$course Kursu";
Burada $name değişkeninin değerine $course değişkeninin içeriği de eklenmiş olur.
Sicimleri bitiştirme (concatenate) için nokta (.) işleci kullanılabilir. Örnek:
$course=$company." ".$subject." Kursu ";
Burada $course değişkeninin değeri eşittirden sonra belirtilen $company, $subject ve " Kursu" sicimlerini bitiştirir.
Sicimleri birleştirip ekrana basan tüm bir örnek:
<html>
<body>
<h1> Sicim Bitiştirme </h1>
<?php	
	$company="Godoro";	
	$subject="PHP";
	$course=$company." ".$subject." Kursu ";
	$book="$company $subject Kitabı ";
?>
Kursun Adı : <b><?=$course?></b><br/>
Kitap Adı : <b><?=$book?></b><br/>
</body>
</html>
Yukarıdaki örnekte $company (şirket) ve $subject (konu) değişkenleri, değerleri verilerek tanımlanmış; $course (kurs) ve $book (kitap) değişkenlerinin değerleri ise önceki değişkenleri de içinde barındıran bir sicime atanmıştır.
Ekran çıktısı:

Tür (Type)

PHP için en çok kullanılan temel türler aşağıdaki gibidir:
  • Sicim (String) : Karakterlerden oluşan dizi.
  • Tümsayı (Integer) : Kesirli olmayan, tüm sayı.
  • Kayan (Floating) : Kesirli, ondalıklı gerçek sayı.
  • Mantıksal (Boolean) : Ya doğru ya da yanlış olabilen değer.
Çeşitli türlerde değişkenlerin kullanımına ilişkin bir örnek :
<html>
<body>
<h1> Türler </h1>
<?php
	$course="PHP";
	$hour=30;
	$price=10.5;
	$weekend=true;
?>
Kurs : <b><?=$course?></b><br/>
Saat: <b><?=$hour?></b><br/>
Saatlik Ücret : <b><?=$price?></b><br/>
Haftasonu Mu?: <b><?=$weekend?></b><br/>
</body>
</html>
Yukarıdaki örnekte $course (kurs) değişkeni bir sicim, $hour (saat) değişkeni bir tüm sayı, $price (eder, fiyat) değişkeni de kayan noktalı (gerçek) sayı ve $weekend (haftasonu) değişkeni de mantıksal (boolean) türünde veri tanımlanmakta ve değerler ekrana basılmaktadır.
Ekran çıktısı:

Sicim Dönüşümü (String Conversion)

PHP dilinde tümsayı (integer) ya da kayan (float) sayılar ile sicim (string) türü arasında dönüşüm (conversion) işlevleri bulunmaktadır.

Sicimden Sayıya

Bunlardan intval() (tümsayı değeri) bir sicimi tümsayıya dönüştürürken, floatval() (kayan değer) ise sicimi kayan sayıya döndürür. Örneğin
$integer_value=intval("123");
$float_value=floatval(12.3);
biçimindeki demeçlerde, ilk dize tümsayıya, ikincisi kayan sayıya dönüşüm sağlar.

Sayıdan Sicime

Sayılardan sicime dönüştürmek için strval() (sicim değeri) işlevi kullanılır. Örneğin
$int_string=strval(123);
$float_strig=strval(12.3);
biçimindeki demeçlerden ilkinde tüm sayıdan sicime dönüşüm yapılırken ikincisinde dönüşüm kayan sayıdan yapılmaktadır.

Dönüşüm Örneği

Dönüşüm işlemleriyle ilgili örnekler içeren bir PHP yaprağı aşağıdaki gibi yapılabilir:
<html>
<body>
<h1> Dönüşüm </h1>
<?php
$integer_value=intval("123");
$float_value=floatval(12.3);
$int_string=strval(123);
$float_string=strval(12.3);
?>
Tümsayı Değer : <b><?=$integer_value?></b><br/>
Kayan Değer: <b><?=$float_value?></b><br/>
<br/>
Tümsayı Sicim : <b><?=$int_string?></b><br/>
Kayan Sicim: <b><?=$float_string?></b><br/>
</body>
</html>
Yukarıdaki örnekte ilk olarak sicim değerleri tüm sayı ve kayan sayıya çevrilmektedir. Son bölümde sicim değerlerinin sayılara dönüşümü yapılmaktadır.
Ekran çıktısı:

Döküm (Casting)

Sayılar ya da aynı kökten gelen değerlerin türleri arasındaki dönüşüme döküm (casting) adı verilir. Buradaki işlemde, sicimden sayıya ya da sayıdan sicime gibi, ilgisiz bir türden ötekinde dönüşüm söz konusu değildir. Yapılan; sayıdan sayıya, bir alt türden ötekine dönüşümdür. Örneğin
$integer_value= (int) 12.3 ;
biçimindeki demeçte, (int) (tüm sayı) biçimindeki kod ile, kayan sayı tüm sayıya dökülür. Buna göre 12.3 sayısı artık 12 olur. Dökme değişkenlerle de yapılabilir:
$integer_value= (int) $float_value ;
Geniş türden dar türe, örneğin kayan sayıdan tüm sayıya dökümler zorunlu olarak gösterilir. Çünkü veri yitimi olur, ondalık kesimdeki değerler yitirilir. Ancak dar türden geniş türe döküm kendinden yapılabilir. Örneğin
$float_value = (float) $integer_value ;
biçiminde, (float) (kayan) kodu ile yapılabileceği gibi
$float_value = $integer_value ;
gibi, tür belirtmeden de döküm yapılabilir. Çünkü burada 12 biçimindeki bir değer 12.0 biçimde kayan sayıya dönüşse de veri yitimi olmaz.
Döküm işlemlerini içeren bir örnek aşağıdaki gibi yapılabilir:
<html>
<body>
<h1> Döküm </h1>
<?php
	$integer_value=(int)12.3 ;
	$float_value=(float)$integer_value ;
	$float_value=$integer_value ;
?>
Tümsayı Değer : <b><?=$integer_value?></b><br/>
<br/>
Kayan Değer: <b><?=$float_value?></b><br/>
</body>
</html>
Ekran çıktısı:

Dizi

Birden çok değerin bir değişkende tutulması için dizi (array) denilen yapılar kullanılır. Buna göre
$myarray=array("Öğe 1","Öğe 2","Öğe 3");	
biçiminde bir kullanımla 3 adet öğe $myarray adlı diziye atanmış olur. Dizinin öğelerine sıra (index) ile erişim için
$myarray[index]
biçiminde bir kullanım yapılır. Diziler sıfır tabanlı (zero-based) olarak, yani ilk öğenin sırası 1 değil 0 olacak biçimde çalışır. Örneğin
$myarray[2]
deyimi dizinin 3. öğesini gösterir
Bir dizideki elemanların sayısını almak için count() (say) işlevi kullanılır. Örnek:
$mycount=count($myarray)
Dizi kullanımına bir örnek aşağıdaki gibi verilebilir:
<html>
<body>
<h1> Dizi </h1>
<?php
	$course=array("PHP","Java","C#");		
?>
Kurs 1 : <?=$course[0]?><br/>
Kurs 2 : <?=$course[1]?><br/>
Kurs 3 : <?=$course[2]?><br/>
</body>
</html>
Yukarıdaki örnekte $course (kurs) diye bir dizi, 3 değer verilerek tanımlanmaktadır. Daha sonra HTML içinde bu dizinin öğelerine, ilk öğenın sırası 0 olacak biçimde erişilip ekrana basılmaktadır.
Ekran çıktısı: .

Bilgi/Açıklama

Parametreler ve Form

Bu bölümde örün (web) sayfaları için parametre (parameter) ve form (form) konuları işlenmektedir.
Bir örün sitesinde durağan (static) HTML sayfaları her çağrıldığında aynı içeriği gösterirler. Ancak bu durum, her içerik için ayrı bir sayfa yapılmasını gerekli kılar. Örneğin binlerce yazı veya ürün için binlerce sayfa yapılmalıdır. Ancak PHP sayfaları parametre (parameter) alarak ayrı bir içerik gösterebilirler. Örneğin bir yazıyı gösteren tek bir PHP sayfası yapılır ve gösterilecek yazı için ilgili kimlik (identity) bilgisi verilir. Kod içerisinde verilen kimlik değerine uygun yazı, genellikle bir veritabanından alınarak bulunur ve ekrana getirilir. Böylelikle tüm yazıları gösterecek tek bir PHP sayfası yapılmış olur.

GET & POST

Yöntem (Method)

HTTP protokolünde çeşitli yöntem (method) tanımları bulunmaktadır. Burada yöntem, yapılabilecek iş anlamına gelir. En çok iki yöntem kullanılmaktadır: GET ve POST. Bunlardan GET (Edin), istemcinin bir bilgiyi sunucudan istemesi anlamına gelir. POST (Gönder) ise istemcinin sunucuya bilgi göndermesidir.
Her ne kadar GET yöntemi okuma, POST yöntemi de yazma gibi dursa da iki durumda da bir adres olması, parametreler alınabilmesi ve sonuç olarak bir HTML üretilmesi gibi bir durum olduğu için; uygulamada GET ile POST arasındaki ayrım okuma veya yazma değildir. GET ile az sayıda veya küçük parametreler gönderme veya hiç göndermeme, POST ile çok sayıda veya büyük parametreler gönderme gibi bir durum söz konusudur.
GET ile POST arasında bir ayrım da, GET yönteminde parametrelerin , adresin dolayısıyla başlık bölümünün bir parçası olması; POST yönteminde ise parametrelerin girdi olarak gönderilen iletinin gövde bölümünde yer almasıdır.

Parametresiz Sayfa

Aşağıda bir işlemi sabit değerlerle, parametresiz gerçekleştiren bir örnek bulunmaktadır:
<html>
<body>
<h1> Parametresiz </h1>
<?php
	$left=3;
	$right=5;
	$sum=$left+$right;
?>
Toplam: <b><?=sum?></b>
</body>
</html>
Örnekte $left (sol) ve $right (sağ) adındaki değişkenler, tümsayı değerler verilerek tanımlamıştır. Daha sonda bu değişkenler toplanarak değerleri $sum (toplam) değişkenine atanmaktadır. En sonda da toplam sonuç ekranda gösterilmektedir.
Bu örnek kaç kere çalıştırılırsa çalıştırılsın aynı sonucu döner. Çünkü toplam yapılacak değerler kod içerisinde verilmiştir ve değişmesine olanak yoktur.
Ekran çıktısı:

GET

Bir sayfayı çağırırken ona parametre aktarmak için sorgu sicimi (query string) adı verilen parametreler kümesi verilebilir. Bunun için sayfanın adından sonra soru işareti (question mark) imi '?' konur ve sonrasına parametreler verilir. Her parametre, adı ve değeri arasında eşittir işareti (equals sign) imi '=' konur. Birden çok parametre bulunması durumunda ise parametreler arasında ve işareti (ampersand) imi '&' konur. Örneğin bir sayfa çağrısı aşağıdaki gibi yapılabilir:
Get.php?left=3&right=4
Burada left ve right parametre adları iken, 3 ve 4 ise parametre değerleridir.
Adresi oluşturan sayfa adı, parametreler ve sorgu sicimini oluşturan karakterler arasına, eğer değerlerde yoksa, boşluk konmaz. Öte yandan parametrenin değerinde boşluk varsa '%20' veya '+' gibi karakterler konur. Örnek:
MyPage.php?param=Godoro%20Education
MyPage.php?param=Godoro+Publisihg
PHP kodu içerisinde GET yöntemiyle gönderilen parametreleri almak için $_GET adlı bir küre değişkeni (global variable) bulunmaktadır. Buna göre
$value = $_GET["name"]
biçiminde parametrenin değeri alınabilir. Burada name parametrenin adıdır ve _GET değişkeni bir dizi veya eşlem gibi çalışır.
Bir işlemi, istekten aldığı parametreye göre gerçekleştiren bir örnek aşağıdaki gibi yapılabilir:
<html>
<body>
<h1> GET Parametreleri </h1>
<?php
	$left=$_GET["left"];
	$right=$_GET["right"];
	$sum=$left+$right;
?>
Toplam: <b><?=$sum?></b>
</body>
</html>
Yukarıdaki örnekte $left (sol) ve $right (sağ) değişkenleri tanımlanmakta ve değerleri $_GET küre değişkeninden alınmaktadır. Daha sonra bu değişkenler toplanarak $sum değişkenine atanmakta ve ekrana basılmaktadır.
Bu örnek tarayıcının adres satırında
http://localhost/Get.php?left=3&right=5
şeklinde çağrılabilir. Sonuç aşağıdaki gibi ekrana getirilir: Eğer parametreler verilmeden sayfa çağrılırsa yanlışlık bildirimli bir sayfa gelir. Örneğin
http://localhost/Get.php
biçiminde bir parametresiz çağrınca ekrana aşağıdaki gibi bir pencere getirir: Burada bildirilen yanlışlık, $_GET değişkeni içerisinde left ve right anahtarlı bir değer bulunmadığıdır. Tarayıcının adres satırında veya başka bir biçimde bu parametreler verilmezse elbette $_GET içerisinde bu değerler bulunmaz.

POST

Aşağıda parametreleri POST (Gönder) yöntemiyle alan bir örnek bulunmaktadır:
<html>
<body>
<h1> POST Parametereleri </h1>
<?php
	$left=$_POST["left"];
	$right=$_POST["right"];
	$sum=$left+$right;
?>
Toplam : <b><?=$sum?></b>
</body>
</html>
Yukarıdaki örnekte $left (sol) ve $right (sağ) değişkenleri tanımlanmakta ve değeleri $_POST küre değişkeninden alınmaktadır. Daha sonra bu değişkenler toplanarak $sum değişkenine atanmakta ve ekrana basılmaktadır.
Yukarıdaki sayfa, tarayıcının adres alanında doğru parametrelerle çağrılsa da parametrelerin $_POST değişkeni içerisinde olmadığını bildiren bir yanlışlıkla karşılaşılır. Çünkü tarayıcıda girilen adres her zaman GET isteği yollar. POST yönteminde istek bir form (form) bileşeninden gelmelidir.

Request (İstek)

Kimi durumlarda bir sayfanın hem GET hem de POST yöntemleri için çalışması istenebilir. Bu durumda $_REQUEST adlı bir küre değişkeni (global variable) kullanılır. Bu, $_GET (Edin) , $_POST (Gönder) ve $COOKIE (Çerez) gibi değişkenlerin birleşimi gibi düşünülebilir. Kullanımı bunlarla aynıdır. Örnek:
$value=$_REQUEST["name"];

Form

Parametreleri adres alanından almak, çoğu kullanıcının gerçekleştiremeyeceği ölçüde karmaşık bir işlem gerektirdiğinden doğrudan hiç kullanılmaz. Genellikle çalışan sayfalarda parametre yine başka bir sayfa tarafından oluşturulur ve bir bağa konur. Kullanıcı yalnızca bunu tıklar.

Form Bileşeni

Form Etiketi

Kullanıcıdan parametre veya girdi alabilmek için HTML dilinde form (form) etiketi bulunmaktadır. Buna göre
<form action="MyPage">
  // Çeşitli bileşenler
</form>
biçiminde bir formla parametre girişi sağlanabilir. Burada action (eylem) niteliği formun gönderileceği sayfayı belirtir. Bu nitelik bildirilmezse form form içerisinde bulunduğu sayfaya gönderilir.

Yöntem (Method)

Form etiketine yöntem (method) bildirimi yapılabilir. Tersi söylenmedikçe formlar GET yöntemiyle çalışırlar. GET yöntemiyle çalışan bir sayfa adres alanından da form içerisinden de çalışabilir. Ancak POST için bir form kullanımı zorunludur. Form içerisinden GET kullanılması durumunda parametreler adres satırında görünür. Bu durum kimi zaman güvenlik açığı veya kafa karışıklığı oluşturabileceğinden formlarla daha çok POST kullanılır.
Bir formun POST yöntemi ile çalışmasını sağlamak için method (yöntem) niteliğine POST değerini vermek gerekir:
<form method="POST">
  // Çeşitli bileşenler
</form>

Girdi Bileşeni

Girdi (Input)

Bir form içerisinde bir çok bileşen bulunabilir. Bunların en çok kullanılanlarından biri input (girdi) bileşenidir. Kullanımı aşağıdaki gibidir:
<input type="text" name="myname" />
Girdi türü olarak text (yazı) verilirse ekrana yazma yapılabilecek bir bileşen gelir.

Gönderme Türü Girdi

Bir formun sunucu yakasına gönderilmesini sağlamak için type (tür) özelliği submit (yolla) olan bir bileşen kullanılır. Örneğin:
<input type="submit" value="Yap"/>
biçimindeki bir HTML kodu, üzerinde Yap yazan, basıldığında formu sunucuya gönderen bir düğme ekrana getirir.

Örnek Sayfa

Aşağıda parametreleri formdan alan bir bir örnek bulunmaktadır:
<html>
<body>
<h1> Form </h1>
<form action="Post.php" method="POST">
	Sol Sayı :  
	<input type="text" name="left" /><br/>
	Sağ Sayı :  
	<input type="text" name="right" /><br/>
	<input type="submit" value="Topla"/>
</form>
</body>
</html>
Yukarıdaki sayfada HTML bölümünde left (sol) ve right (sağ) biçiminde iki girdi bileşeni tanımlanmıştır. Girilen değerleri submit türünde tanımlanan düğmeye basılınca formdaki action niteliğiyle bildirilen sayfaya gitmesi sağlanmıştır.
Ekran çıktısı: Açılan formda girdilere veri girilir ve düğmeye basılırsa ekran aşağıdaki gibi bir sonuç gelir: .

Bilgi/Açıklama

Akış Denetimi

Olağan koşullarda PHP gibi programlama dillerinde kod içerisinde, noktalı virgül (semicolumn) işareti ';' ile ayrılmış her demeç (statment), yukarıdan aşağı ve solda sağa olacak biçimde sırayla, bir kez çalıştırılır. Ancak kimi durumlarda bir öbek demeci belli bir koşula bağlı olarak çalıştırılmak istenebilir. Ya da kimi demeçler bir kez değil, belli bir koşul sağlanana dek sürekli çalıştırılabilir. Kimi kez, demeçler öbeği belli bir sayıda sürekli yeniden çalıştırılabilir. Bu durumlara akış denetimi (flow control) adı verilir. Hemen her programlama dili bu konularla ilgili çeşitli buyruklar içerir. Çoğu birbirine koşut olmakla birlikte kimi küçük ayrımlar, kimi değişik yaklaşımlar söz konusu olabilir.

Koşul (Condition)

Bir veya daha çok demecin bir koşulun gerçekleşmesi veya, tam tersine gerçeklememesi durumunda çalışması sağlanabilir. Buna göre, sonucu mantıksal (logical) veya boolean olan bir deyim (expression) ile bir koşul (condition) değerine bakılır.

If (İse) ve Else (Değilse)

If (İse)

Bir demeçler öbeğinin belli bir koşulun doğru olması durumunda çalışması için if (ise) açar sözcüğü kullanılır. Kullanımı:
if ( Koşul )
  Demeçler
biçimindedir. Birden çok demeç bulunması durumda süslü ayraç (curly bracket) imleri '{' ve '}' kullanılır. Öte yandan, kodun okunabilirliğini arttırmak, yanlış anlaşılmaları önlemek ve daha sonra eklenecek demeçler için kolaylık sağlamak gibi nedenlerle bir çok kişi tek bir demeç olsa da süslü ayracı kullanmaktadır. Bu durumda kullanım:
if ( Koşul ) {
  Koşul Sağlanıyorsa Demeçler
}
biçiminde gerçekleşir.

Else (Değilse)

Bir koşulun gerçekleştiği değil de gerçekleşmediği durumlarda, çalışması gereken demeçler else (değilse) açar sözüyle bildirilir. Kullanımı aşağıdaki gibidir:
if ( Koşul ) {
  Koşul Sağlanıyorsa Demeçler
} else {
  Koşul Sağlanmıyorsa Demeçler	
}

Else If (Değilse İse)

Bir if buyruğunun else kolunda da bir if olabilir. Başka bir deyişle bir koşulun sağlanmadığı durumda başka bir koşulun denetimi yapılabilir. Buna else if (değilse ise) adı verilir. Örneğin
if ( Koşul1 ) {
  Koşul Sağlanıyorsa Demeçler
} else if ( Koşul2 ) {
  Koşul Sağlanmıyorsa Demeçler	
}
biçimindeki kod parçasında birinci koşul sağlanmıyorsa ikinci koşula bakılır. Ancak ikinci koşul sağlansa da, birinci koşul sağlanıyorsa ikinci koşula bakılmaz ve onun içerisindeki demeçler kesinlikle çalıştırılmaz.
Bir else if buyruğunun sonuna başka bir else if veya else eklenebilir. Örnek:
if ( Koşul1 ) {
  
} else if ( Koşul2 ) {
} else if ( Koşul3 ) {
} else  {
}

Örnek Uygulama

Aşağıda if (ise) , else if (değilse ise) ve else (değilse) kullanımına ilişkin bir örnek bulunmaktadır:
<html>
<body>
<h1> İse - Değilse İse - Değilse </h1>
<?php
	$age=$_GET['age'];
	if($age<15){
		echo "Yaşın çok küçük evlenemezsin!";
	}
	else if ($age<18)	{
  	  echo "Ailenin izniyle evlenebilirsin!";
	}
	else{	
  	  echo "Evlenebilirsin, yaşın tutuyor";
	}
?>
</body>
</html>
Yukarıdaki örnekte $age (yaş) diye bir değişken tanımlanmış ve değeri $_GET küre değişkeninden alınmıştır. Değişkenin değeri 15 değerinden küçükse ekrana olumsuz durumu bildiren bir yazı basılmıştır. Sayı 15 değerinden büyükse bu kez ekrana koşullu durumu bildiren bir yazı basılmıştır. Yaş değeri 18'den küçükse, başka bir deyişle önceki koşullardan hiç birine uymuyorsa olumlu ileti ekrana basılır.
Yukarıdaki sayfa çağrılırken
If.php?age=17
gibi bir adres girilmelidir. Buradaki age (yaş) parametresinin değerine göre ekranda bir sonuç gösterilir. Değer olarak 17 girilirse örnek ekran çıktısı aşağıdaki gibi olur:

Switch (Açkı)

Bir değişkenin değerini denetlerken çok sayıda if, else if ve else kullanıldığı durumlarda bir almaşık olarak switch (açkı) buyruğu kullanılır. Bu açar sözcükte bir çok koşulun denetlenmesi yerine bir değişkenin çeşitli değerlerleri bir durum olarak düşünülür ve case (durum) açarı ile bildirilir. Birden çok değer için ortak kod yazılabilir. Bir veya bir kaç durumda çalışacak kodun sonuna break (kır) sözcüğü konulara açkıdan çıkılır. Hiç bir duruma uymayan değerler için de default (varsayılan) açar sözcüğü kullanılır.
Açkının kullanımı:
switch ( variable ) {
  	case Değer1 : 
		Demeçler 1; 
		break;
  	case Değer2 : 
		Demeçler 2; 
		break;
  	case Değer3 : 
		Demeçler 3; 
		break;
	default : 
		Varsayılan Demeçler;
}
biçimindedir. Birden çok durum için aynı kod çalışacaksa kullanım aşağıdaki gibi olur:
switch ( variable ) {
  	case Değer1 : 
  	case Değer2 : 
		Demeçler 1 & 2; 
		break;
  	case Değer3 : 
  	case Değer4 : 
  	case Değer5 : 
		Demeçler 3, 4 & 5; 
		break;
}
Aşağıda açkı (switch) kullanımına ilişkin bir örnek bulunmaktadır:
<html>
<body>
<h1>Açkı </h1>
<?php
	$day_number=$_GET['day'];
	switch ( $day_number ) {
	 	case 1: 
	    		$day_name="Pazartesi" ; 
         		break;
	  	case 2: 
	    		$day_name="Salı" ; 
	    		break;
	  	case 3: 
	    		$day_name="Çarşamba" ; 
	    		break;
		case 4: 
			$day_name="Perşembe" ; 
			break;
		case 5: 
			$day_name="Cuma" ; 
			break;
		case 6: 
			$day_name="Cumartesi" ; 
			break;
		case 7: 
			$day_name="Pazar" ; 
			break;	
		default: 
			$day_name="Geçersiz Gün";
	}
?>
Bugün  : <?=$day_name?>
</body>
</html>
Bu örnekte alından bir gün sayısına göre gün adı ekrana basılmaktadır. Verilen sayı en az 1 en çok 7 değilse girilen sayının geçersizliğini bildiren bir ileti ekrana basılır. Yukarıdaki uygulama
Switch.php?day=4
biçiminde çağrılabilir. Ekran çıktısı aşağıdaki gibi olur:

Döngü (Loop)

Bir öbek demecin birden çok kere çalıştırılması için döngü (loop) adı verilen yapılar kullanılır. Bunlar işlemleri, ya bir koşul sağlandığı sürece gerçekleştirirler ya da kaç kez işlem yapacakları baştan bunlara verilir.

While (Sürece)

Bir veya daha çok demecin belli bir koşul sağlandığı sürece çalışmasını sağlamak için while (sürece) döngüsü kullanılır. Kullanımı aşağıdaki gibidir :
while ( Koşul ) {
	// Demeçler
}
Tek bir demeç olması durumunda süslü ayraçlar kullanılmayabilir ancak bu durumda da kullanılmaları okunabilirlik ve sağlamlık açısında yararlı olur.
Aşağıda sürece (while) kullanımına bir örnek bulunmaktadır:
<html>
<body>
<h1>Sürece </h1>
<?php
	$number=1;
	$total=0;
	while ( $total < 100 ){
		$total=$total+$number; 
		$number++; 
	}
?>
Toplam : <?=$total?>
</body>
</html>
Bu örnekte $total değeri 100 değerini geçene kadar, daha doğru bir deyişle, 100 değerinden küçük olduğu sürece, $number değerini birer birer attırılıp $total değişkenine eklenmektedir.
Ekran çıktısı:

Do-While (Yap-Sürece)

Bir çok programlama dilinde olduğu gibi, PHP dilinde de while (sürece) döngüsünün başka bir sürümü bulunmaktadır. Olağan sürece döngüsünde koşul en başta denetlenir ve sağlanıyorsa işlemler yapılır. Ancak kimi zaman koşulun sağlanıp sağlanamadığını belirlemek için döngünün içerisine bir kez girmek gerekir. Bu durumda yapılacaklar do (yap) açarıyla önce bildirilir ve koşul while (sürece) sözcüğüyle en son denetlenir. Buna do-while (yap-sürece) adı verilir. Yapısı
do {
  // Demeçler
} while ( Koşul );
içimindedir. Sonda bir noktalı virgül olduğuna özen gösterilmelidir.
Aşağıda yap-sürece (do-while) kullanımına bir örnek bulunmaktadır:
<html>
<body>
<h1>Yap-Sürece </h1>
<?php
	$number=0;
	$total=0;
	do{
		$number++;
		$total+=$number;
	}while($number<100);
?>
Toplam : <?=$total?>
</body>
</html>
Örnekte $number (sayı) değişkeni döngünün her adımında bir artırılmaktadır ve değeri $total (toplam) değerine eklenmektedir. En sonda while koşulunda değerin 100'ü aşıp aşmadığı denetlenmektedir. Değer 100'ü aşarsa döngüden çıkılmaktadır.
Anlaşılırlık nedeniyle yukarıdaki örnek yalın tutulmuş, do olmadan kullanılan while ile aynı işlemi yapacak biçimde yazılmıştır. Ancak buradan do-while döngüsünün gereksiz olduğu izlenimi edinilmemelidir. Koşulda kullanılan herhangi bir değerin döngü içerisinde belirlendiği durumlarda sıradan while döngüsü işe yaramaz.
Ekran çıktısı:

For

Bir veya daha çok işlemin belli bir sayıda yapılmasını sağlamak için for (için) döngüsü kullanılır. Bunun için öncelikle bir ilkleme (initialization), sonra koşul (condition) denetlenir ve bir arttırım (increment) yapılır. Kullanımı aşağıdaki gibidir:
for ( İlkleme ; Koşul ; Attırım){
	Demeçler
}
Tek bir demeç için süslü ayraç (curly bracket) imleri, '{' ve '}' kullanmaya gerek yoktur. Ancak anlaşılırlığı arttırmak ve yanlışlık yapılmasını önlemek gibi nedenlerde ayraçları kullanmak yararlı olur.
Burada ilkleme her döngü için bir kez, demeçler çalıştırılmadan önce yapılır. Döngü için koşul denetimi ve arttırım ise her çalışmada ve çalıştırdıktan sonra yapılır.
İçin kullanımına bir örnek :
<html>
<body>
<h1>İçin </h1>
<?php
	$sum=0;		
	for ( $i=0 ; $i<10; $i++ ) {
		$sum+=$i;
	}
?>
Toplam <?=$sum?>
</body>
</html>
Yukarıdaki örnekte sıra (index) değeri için $i değişkeni tanımlanmakta, öncelikle 0 atılmakta ve her adımda 1 artırılmaktadır. Değişkenin değeri 10 değerine ulaşınca döngüden çıkılmaktadır. Döngüden önce 0 değerine atanan $sum değişkenine, döngü içinde sıra değişkeninin değeri eklenmektedir.
Bir koşul olmasa da 10 kez yapılacak işlemlerde sıra değişkeni 1 yerine 0 değerinden başlar ve 10 değerinden küçük olacak bir biçimde koşullandırıldığı için, en çok 9 değerine ulaşır. Bunun nedeni dizi gibi yapıların ve bir çok işlevin, ilk öğenin sırasını 0 olacak biçimde kurgulanmasıdır. Ancak böyle bir yükümlülük olmadığı durumlarda da sıra değişkeni hep 0 ile ilklenir.

İçin(For) ve Dizi (Array)

Programlama dillerinde dizi (array) yapılarıyla en çok için (for) döngüsü kullanılır. Çünkü dizilerde çoğunlukla sıra (index) aracılığıyla erişim yapılır ve için döngüsü de bu sıra değişkenin birer birer artmasını sağlar. Aşağıda dizilerle için döngüsü kullanımına bir örnek bulunmaktadır:
<html>
<body>
<h1>Dizi ve İçin </h1>
<?php
	$numbers=array(3,4,5,6,2,6,4,7,8,2);
	$sum=0;
	for( $i=0 ; $i<10; $i++ ) {
		$sum += $numbers[ $i ];
	}
?>
Toplam <?=$sum?>
</body>
</html>
Ekran çıktısı aşağıdaki gibidir:

Break & Continue

Kimi zaman bir döngü içerinde bazı adımların atlanması veya belli bir koşula bağlı olarak döngüden erken çıkılması gerebilir. Aşağıdaki açar sözcükler bu davranışı, döngünün ana çatısını değiştirmeden sağlayabilir.

Break (Kır)

Bir döngüde, sonraki adımların tümlenmesini veya koşulun sağlanmaz olmasını beklemeden çıkmak için break (kır) buyruğu kullanılır. Kullanımı aşağıdaki gibidir:
Döngü {
	Önceki Demeçler
	if ( Koşul ) {
		break;
	} 
	Sonraki Demeçler
}
Kod içerisinde break göründüğü anda döngüden çıkılır. Döngünün o adımında kırmadan önceki demeçler çalışırken sonraki demeçler çalışmaz. Sonraki adımlar için hiç bir demeç çalışmaz.

Continue (Sürdür)

Döngüde yalnızca bir adımın atlanması, yalnızca bir çalıştırmadan çıkılması ve sonra kalındığı yerden işlemlerin sürdürülmesi isteniyorsa sürdür (continue) sözcüğü kullanılır. Kullanımı aşağıdaki gibidir:
Döngü {
	Önceki Demeçler
	if ( Koşul ) {
		cotinue;
	} 
	Sonraki Demeçler
}
Kod içerisinde break göründüğü anda döngünün o andaki adımı atlanır ve döngünün o adımında kırmadan önceki demeçler çalışırken sonraki demeçler çalışmaz. Ancak sonraki adımlarda, sürdürmeyi içeren koşul sağlamayan her adımda hem önceki hem sonraki demeçler yine çalışır. Koşulu sağlayanlarda ise yalnızca önceki demeçler çalışır.
Döngülerde kır (break) ve sürdür (continue) kullanımına bir örnek aşağıdaki gibi yapılabilir:
<html>
<body>
<h1>Kır ve Sürdür </h1>
<?php
	$sum=0;
	for( $i=0 ; $i<10; $i++ ) {	
		if ( $i == 5 ) {
			continue;
		}
		if( $sum > 20 ) {
			break;
		}
		$sum+=$i;
	}
?>
Toplam <?=$sum?>
</body>
</html>
Yukarıdaki sayfa çalıştığında sıra (index) için kullanılan $i değişkeni değerlerini $sum değişkeninde toplar. Ancak sıra değeri 5 olduğunda adımı atlar ve toplam değeri 20 değerini geçince döngüden çıkar.
Ekran çıktısı aşağıdaki gibi olur: .



Bu Sayfayı Paylaş:

İletişim/Bize Yazın   mh@fibiler.com   Google+   Facebook   Twitter   fibiler@googlegroups.com
Her Hakkı Saklıdır
Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir.
Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir