Form ile islemciyi Birlestirelim
Form ile işlemciyi Birleştirelim
Şu ana kadar yaptığımız bütün Form örneklerinde, Form'un bulunduğu HTML sayfası ile bu Form'un göndereceği verileri işleyen PHP programı iki ayrı belge halinde idi. Bu, buradaki örneklerde olduğu gibi, ziyaretçinin verdiği bilgileri sadece Brıowser penceresine yazdıran bir eğitim çalışması için belki uygun; ama gerçek Web sitelerimizde ziyaretçilerimizin vereceği bilgileri çoğu zaman sadece onların Browser pencerelerinde göstermekle kalmayız, fakat bu bilgileri ya elektronik posta yoluyla kendimize yollarız, ya da sunucuda bir düzyazı veya veritabası dosyasına işleriz. Bu ve diğer amaçlarla yapacağımız Form içeren HTML sayfaları, aslında PHP programımızın bir içinde yer alabilir; ya da başka bir deyişle, Form'umuz ziyaretçinin vereceği bilgileri kendi bulunduğu PHP programına gönderebilir!
Bu karmaşık ifadeyi bir örnekle açalım. Yukarıda yaptığımız son HTML sayfası ile ve PHP programını şöyle birleştirelim; ve bunu formlar04.php adıyla kaydedelim:
<?php
if ( isset ( $HTTP_POST_VARS )) {
print ("<HTML>n");
print ("<HEAD>n");
print ("<TITLE>PHP'de Formlar</TITLE>n");
print ("<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">n");
print ("<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">n");
print ("</HEAD>n");
print ("<BODY>n");
foreach ($HTTP_POST_VARS as $anahtar=>$deger ) {
if ( gettype ($deger ) == "array" ) {
print ("$anahtar == <br>n");
foreach ( $deger as $yeni_degerler )
print (".. $yeni_degerler<br>");
}
else {
print ("<b>$anahtar = $deger <br>n");
}
}
print ("</BODY>n");
print ("</HTML>n");
}
else {
print ("<HTML>n");
print ("<HEAD>n");
print ("<TITLE>PHP'de Formlar</TITLE>n");
print ("<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">n");
print ("<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">n");
print ("</HEAD>n");
print ("<BODY>n");
print ("<FORM ACTION="$PHP_SELF" METHOD="POST">n");
print (" Adınız, Soyadınız: <INPUT TYPE="TEXT" NAME="adi">n");
print ("<BR>n");
print (" Elektronik Adresiniz: <INPUT TYPE="TEXT" NAME="adres">n");
print ("<BR>n");
print (" Hangi notunuzu öğrenmek istiyorsunuz? n");
print ("<BR>n");
print ("<SELECT NAME="hangi_not[]" MULTIPLE>n");
print ("<OPTION>Sınav 1 n");
print ("<OPTION>Sınav 2 n");
print ("<OPTION>Ortalama n");
print ("</SELECT>n");
print ("<BR>n");
print ("<INPUT TYPE="SUBMIT" VALUE="Gönder Gitsin!">n");
print ("<INPUT TYPE="RESET" VALUE="Vazgeç, Gönderme!">n");
print ("</FORM>n");
print ("</BODY>n");
print ("</HTML>n");
}
?>
Bu dosyanın tümüyle PHP programı olduğuna dikkat ettiniz, tabiî? Program açıldığında sunucunun $HTTP_POST_VARS dizi-değişkeninin bir değer içerip içermediğini bir if deyiminin içinden bir değişkenin içeriği olup olmadığını anlamamıza yarayan isset () fonksiyonu ile yapıyoruz. Bu şart doğru ise, yani $HTTP_POST_VARS dizi-değişkeni bir değer içeriyorsa, program, foreach döngüsünün içinde bu değişkenin içindekileri almaya ve Broüwser penceresinde görüntülemeye başlıyor. Bu şart doğru değilse, yani $HTTP_POST_VARS dizi-değişkeni henüz bir değer içermiyorsa, if deyiminin birinci bölümünü içindeki hiç bir kod icra edilmiyor ve prgram else deyimine sıçrıyor. Programın else bölümü ise daha önceki HTML kodlarımızı içeren bir dizi print() fonksiyonu yerine getiriyor; yani Browser'a içinde Form bulunan HTML sayfasını yazdırıyor. Burada FORM etiketine dikkat edelim:
print ("<FORM ACTION="$PHP_SELF"METHOD="POST">");
Form'un ACTION parametresinde bir PHP programının adı yerine "$PHP_SELF" değişken adını görüyoruz. Bu, bu bölümün başında ele aldığımız gibi, sunucunun bu PHP programına sağladığı çevre değişkenlerinden biridir ve o anda çalışmakta olan PHP programının dosya adını içerir. (Bizim örneğimizde bu değişkenin değeri nedir?)