B.K.İ. – Bu Kadar İnanılmaz!
Yeni kategorimize siftah yapmanın mutluluğuyla dersimize başlamak istiyorum. İlk dersimiz, yeni öğrenenler için hazırlanmış kolay bir ders olacak. Eğer PHP’ye yeni başladıysanız buyrun, değilseniz sonraki dersleri bekleyin 🙂
“Öyle bir kodla karşılaşacaksınız ki biraz aşağıda, ancak bu kadar olur diyeceksiniz. Biz buna B.K.İ – yani Bu Kadar İnanılmaz- diyoruz. Birkaç satır kodlamayla hayatınız değişecek, neler neler olacak…”
Desem de inanmayın. Başkaları söylüyorsa, onlara da inanmayın muhtemelen anlattıkları övündükleri kadar değerli bir şey değildir (bkz. Meyveli ağaç eğik olur).
Net üzerinde PHP’ye yeni başlayanlar için açıklamalı örneklere pek rastlanmıyor. Klasikleşmiş, bir manası olmayan “Hello, world!” saçmalıklarını saymazsak. İşte bu sebeple ilk yazımızda anlaşılması kolay bir örnek kullanmak istedim.
Hepsi hepsi geçenlerde gördüğüm BKİ (Beden Kitle İndeksi – Body Mass Index) namıyla maruf kilo ölçme yöntemini bir PHP sayfasıyla pratikleştirdim. Belki de pratikleştirmedim, çünkü bir çarpma bir bölmeyle de kolayca halledilebiliyordu. Neyse önemli olan bir şeyler öğrenmek olduğuna göre, buyrun aşağıya (Kodun çalışan halini sayfanın en altındaki linkte görebilirsiniz.):
BKİ, kolay hesaplanabilir bir kilo ölçme yöntemi. Boyunuzun metre cinsinden karesini alıyorsunuz (boy*boy). Sonra kilonuzu çıkan sonuca bölüyorsunuz. Elde ettiğiniz değer Beden Kitle İndeksiniz oluyor. Bu değer 18.5’in altındaysa zayıf, 18,5-25 arasıysa normal, 25-30 arasındaysa hafif şişman, 30’dan yukarıysa da şişman kabul ediliyorsunuz. Bu kadar basit.
Kodlama aşaması çok kolay ya, biz biraz hazırlayacağımız php’nin algoritması üzerine düşünelim. Her şeyden önce iyi bir programcının iyi algoritma kurması gerektiğini de unutmayalım.
Algoritma Aşamaları
2- Bilgileri gönderen kullanıcı -> Form öğelerini görmemeli, hesaplanan sonucu görmeli.
Tamam buraya kadar herşeyi anladık da, kodlamaya nereden başlayacağız?
Dikkat ederseniz çıkardığımız algoritma bize bir noktayı gösterdi: Algoritmamızın en önemli değişkeni bilgilerin server’a ulaşıp ulaşmaması. Öyleyse bizim de doğru bir kodlama için bu noktadan kodlamaya başlamamız gerekiyor.
Öncelikle form elemanlarımıza ait bilgilerin server’a gidip gitmediğini kontrol edeceğiz. Eğer bilgiler gittiyse… ve Eğer bilgiler gitmediyse… şeklinde sorgularla da kodlamayı bitireceğiz.
Eğer kafamızda herşey oturduysa kodlamaya geçebiliriz.
<div class="kodlama">< ?phpif (isset($_POST["boy"]) && $_POST["kilo"]) {</div>
Kodun başlangıcında server’a form bilgilerinin gidip gitmediğini kontrol ediyoruz. Bildiğiniz gibi $_POST, …form method=”POST”… şeklinde POST ile gelen bilgileri almamıza yarıyor. &&, “ve” anlamında php’de kullandığımız işaretlerdir. ISSET komutu ise “tanımlıysa…” manasına gelir.
Satırın manası tam olarak şu:
“Eğer POST ile boy ve kilo isimli hücrelerden veri alındıysa…”
<div class="kodlama">$boy= $_POST["boy"];$kilo= $_POST["kilo"];$sonuc= $kilo /($boy*$boy);echo "BKİ (Beden kitle indeksi)'niz: $sonuc ";</div>
boy ve kilo isminde iki değişken oluşturup, POST ile gelen değerleri bu değişkenlere atıyoruz ve sonuc değişkenini, yukarıdaki matematik işlemlerinin sonucu olarak oluşturuyoruz. Hesaplamamızdaki ($kilo+($boy*$boy)) parantezlerin sonucu etkilediğinini unutmayalım. $sonuc değişkenimiz bize Beden Kitle Endeksini veriyor. Echo ile istediğimiz şekilde ekrana basıyoruz.
<div class="kodlama">if ($sonuc<18.5) {echo "Zayıfsınız.";} elseif ($sonuc<25) {echo "Normal kilodasınız.";} elseif ($sonuc<30) {echo "Hafif şişmansınız.";} elseif ($sonuc>30) {echo "Şişmansınız!..";} else {echo "Nasıl becerdin bilmiyorum, sonuç bulamadım!";}</div>
Bu bölüm yine yukarıda bahsettiğimiz şu kilodan fazlaysa, bu kilodan azsa… tipi mantıksal sorgular yapacak. Başlangıçta if ($sonuc<18.5) şeklinde if’le başlıyoruz. Aynı if içinde farklı sorgular yapacaksak diğerlerini elseif (…) içine alıyoruz. Yine tanımlamalarımızın hiçbirine uymayan sorgularda boş cevap döndürmemek istersek else komutunu kullanabiliriz. Burada dikkat edeceğimiz nokta else’den sonra () değil yalnızca {} kullandığımızdır.
<div class="kodlama">} else {</div>
Yukarıda “Eğer POST ile boy ve kilo isimli hücrelerden veri alındıysa…” demiş ve algoritmamızda 2 ile görünün kısmı tamamlamıştık. Şimdi sıra 1’e geliyor, yani kutucukları doldurmayanların karşılaşacağı sayfaya.
Buraya en basit haliyle POST metodunu kullanan bir form içine birinin ismi boy, diğerinin ise kilo olacak şekilde 2 kutucuk ve bir submit tuşu ekleyebiliriz. Tamamen size kalmış. Dikkat edeceğimiz nokta kutucuğun IDsi blabla ise yukarıda POST’dan bilgi alırken de $_POST[“blabla”] yı kullanmamızdır.
Başka yazılarda tekrar görüşmek üzere.
Kodun tamamını aşağıdan alabilirsiniz:
<div class="kodlama">< ?php
if (isset($_POST["boy"]) && $_POST["kilo"]) {$boy= $_POST["boy"];
$kilo= $_POST["kilo"];// Hesaplama bölümü...
$sonuc= $kilo /($boy*$boy);
echo "BKİ (Beden kitle indeksi)'niz: $sonuc";if ($sonuc<18.5) {echo "Zayıfsınız.";} elseif ($sonuc<25) {echo "Normal kilodasınız.";} elseif ($sonuc<30) {echo "Hafif şişmansınız.";} elseif ($sonuc>30) {echo "Şişmansınız!..";} else {echo "Nasıl becerdin bilmiyorum, sonuç bulamadım!";}
} else {
?></div>
<div class="kodlama">
<form method="post" id="kilo_olcer">
<input type="text" value="" name="boy" id="boy" />
<input type="text" value="" name="kilo" id="boy" />
<input type="submit" id="Hesapla" value="Şişman mıyım?" />
}
?</div>
Kodun çalışan halini şuradan görebilirsiniz:
Kilo ölçer…
Zorluk derecesi:
$sonuc= $kilo /($boy*$boy);
buradaki parantezler lüzûmsuz değil. $sonuc=$kilo/$boy*$boy; yazmış olsan $sonuc=$kilo; yazmakla aynı olur. peki bu ifâde parantezsiz yazılamaz mı yazılır. işte şöyle:
$sonuc=$kilo/$boy/$boy;
Evet onu düşünememişim. Yazıdaki hatayı düzeltiyorum.
eaa 1,83 yazınca şişko çıkıyorum 1.83 yazınca normal 8)
@adil kaan;
Kilonuzu yazacağınız bölümde zaten “Boyunuz(1.80 şeklinde…):” ifadesi yer alıyor. Farklı bir ifade girdiğinizde yanlış sonuç almanız çok normal.
Bu yazı PHP’ye yeni başlayanlar için hazırlandığından kodlarda ayrıntıya inilmedi. Basit bir veri kontrolüyle hatalı sayı girilmesi engellenebilir.