- enterId:145463 Şubat « 2009 « KOODLA | BLOG
Şubat, 2009 Tarihinden sonraki yazılar görüntüleniyor...

Linux (Pardus) Ortamında Web Geliştirme

Date08 / Şubat / 2009 Author İsa Engiz    Category Genel     Tags , , , , , , Yorumlar4 Yorum Yapilmis.

Web yazılım geliştirmeye Windows ortamında başladıysanız, Linux’a taşınmak biraz daha meşakkatli olur sizin için. Alıştığınız programları Linux tabanlı bir dağıtımda ilk bakışta bulamayabilirsiniz, Ancak ihtiyaçlarınızı karşılayacak hemen hemen bütün yazılımlar mevcuttur.

linux-resim

Bugün burada KDE tabanlı Pardus için bir yazılımlar önereceğim, ancak aynı yazılımları ve işlevleri başka dağıtımlar üzerinde de bulabilirsiniz. (KDE programlarını GTK tabanlı dağıtımlarb[Ubuntu] üzerinde de kullanabilirsiniz.)

Devamını Oku »»

Koodla | Blog yeni teması ile karşınızda!

Date05 / Şubat / 2009 Author İsa Engiz    Category Genel     Tags , Yorumlar1 Yorum Yapilmis.

Blogun temasını ne zamandır değiştirmek istiyordum, dün bu işin altından da başarıyla kalkma fırsatı yakaladım!

yeni koodla teması

Peki ya değişenler neler? Tek tek sayalım isterseniz…

Devamını Oku »»

MySQL’de CASE Kullanımı (CASE – WHEN – THEN – END)

Date04 / Şubat / 2009 Author İsa Engiz    Category mysql     Tags , Yorumlar6 Yorum Yapilmis.

Uzun zamandır MySQL hakkında yazı yazmaya fırsatım olmadı, ama şimdi güzel bir yazı ile kaldığımız yerden devam edelim.

Genellikle bir programlama dili öğretilirken “Merhaba Dünya” yazdırmak ile başlanılır. Bunun aslında programlama ile pek alakası yoktur, dile giriş açısından bir önem taşımaktadır sadece. Algoritma oluşturmanın ilk tadını aldığımız yer if-else cümlelerini oluşturmaya başladığımız yerdir. Bir program yazmanın ilk tadı bu noktada anlaşılmaya başlar.

MySQL’de de buna benzer şekilde if-else cümleleri oluşturabilir, sorgumuzu, dönen sonuçlara göre daha farklı şekillendirebiliriz.

CASE kullanımı

MySQL’de CASE kullanım kuralı oldukça basittir. Şu şekilde gösterebiliriz:

SELECT alan1, alan2,
CASE alan3
WHEN 'deger1' THEN 'deger1a'
END
FROM tablo

Bu basit kodun yaptığı iş oldukça okunabilir olması rağmen, CASE bloğunun ifade ettiğini PHP “if” ile şu şekilde gösterebiliriz:

if(alan3 == 'deger1') {
echo 'deger1a';
}

Süslü parantezler yerine WHEN ve THEN kullanıyoruz.

Yukarıdaki örneği biraz daha geliştirebiliriz:

SELECT alan1, alan2,
CASE alan3
WHEN 'deger1' THEN 'deger1a'
WHEN 'deger2' THEN 'deger2a'
WHEN 'deger3' THEN 'deger3a'
ELSE 'ön tanımlı değer'
END
FROM tablo

Burada fazladan iki tane WHEN – THEN bloğu ve bir ELSE bloğu ekledik. Buradaki WHEN -ELSE kullanımı da PHP nin if-elseif-else bloğuna benzemektedir.

Bu örneklerden bir şey anlamak oldukça zor, zaten ben de sadece kullanım şeklini göstermek istedim :) Bir sonraki başlık altında gerçek dünyaya dalıyoruz!

CASE kullanımı – Örnekler

Bir tablo üzerinde CASE kullanımına örnek verirsek daha iyi anlayabiliriz. kitaplar isimli tablomuz aşağıdaki gibi olsun:

id isim yazar yayınevi stok popularite
1 komplo teorileri erol mütercimler alfa 120 7
2 değişen dünya değişen dil macit gökberk yky 45 3
3 leyleklerin uçuşu grange doğan kitap 10 8
4 einstein evreninde zaman yolculuğu richard gott arkadaş 45 5
5 metal fırtına 3 burak turna profil 300 7
6 raslantı ve kaos david ruelle tübitak 250 5

Tablonun son alanı kitapların popülaritesini göstermekte. (Tabii ki bana göre!) Bu kitap tablosunu sorgulayıp kullanıcıya kitapların popülaritesini gösteren bir program yazmış olalım. Sorgumuz bu şekilde olacaktır:

SELECT isim, popularite FROM kitaplar

Bu sorgu kitap ismi ve popülaritesini geri döndürecektir. Bu popülarite değerini daha sonra uygulamamızda kullanıyor olduğumuz varsayalım. Kullanıcıya sadece 5, 6, 7 gibi popülarite değerleri göstermek istemezsek PHP ile gelen değeri değiştireceğiz:

if($sorgu['popularite'] == 10) {
	$pop = 'Çok çok çok seviliyor';
} elseif ($sorgu['popularite'] == 9) {
	$pop = 'Herkes beğeniyor'
}
...
...
...

Bunu MySQL’den dönen veriye uygulasak ne güzel olur değil mi?

İmdadımıza CASE yetişiyor:

SELECT isim, CASE popularite
WHEN 10 THEN 'çok çok popüler'
WHEN 9 THEN 'herkes beğeniyor'
WHEN 8 THEN 'pek çok kişi okudu'
WHEN 7 THEN 'Okuyan pek çok kişi beğendi'
WHEN 6 THEN 'Belirli bir kitle gerçekten beğendi'
WHEN 5 THEN 'Okumaya değer'
ELSE 'Gözden kaçmış, okunmayı bekleyen bir kitap'
END AS pop
FROM kitaplar

Burada çok basit bir if-elseif-else benzeri bir blok kullandık. Biraz farklı gelebilecek bir nokta ise END kelimesinden sonra kullandığımız AS olabilir, bunu da daha önceki MySQL yazılarımızda anlatmıştık, MySQL kategorisindeki yazıları gözden geçirebilirsiniz…

Her bir durumu tek tek tanımlamak zor olabilir, bunun yerine karşılaştırma yapabiliriz, popülaritesi 8den büyükse popüler, 8-5 arasıysa okunmalı, 5den küçükse gözden kaçmış kitap diyebiliriz:

SELECT isim, popularite,
CASE
WHEN popularite >= 8 THEN 'Oldukça Popüler'
WHEN popularite < 8 AND popularite >= 5 THEN 'Okunmalı'
ELSE 'gözden kaçmış...'
END AS pop
FROM kitaplar

Bu sorguda iki önemli nota var: 1: CASE kelimesi alan isminden sora yazılır, karşılaştırma yaparken kullanabilmek için, yani “SELECT isim CASE popularite” değil de “SELECT isim, popularite CASE …” dedik.

2: Karşılaştırma yaparken aralık belirtmek için AND kullandık.

İç içe bloklar

PHP if-else çümlelerinde olduğu gibi iç içe CASE cümleleri kullanabiliriz. Aşağıdaki sorgu buna örnek olabilir:

SELECT isim, stok, popularite,
CASE
WHEN popularite >= 7 THEN
   CASE
   WHEN stok < 100 THEN 'Popüler bir kitap, her an bitebilir'
   ELSE 'Bir süre daha stoklarda bulunur...'
   END
WHEN popularite < 5 THEN
   CASE
   WHEN stok > 100 THEN 'Elimizde kalmış, %90 indirim ile alabilirsiniz!'
   ELSE 'Uzun bir süre stoklarda bulunacaktır muhtemelen...'
   END
END AS durum
FROM kitaplar

Bu sorgudaki CASE bloğunun sonucu ‘durum’ sütunu olarak sonuç tablosuna eklenecektir.

Sonuç

Aslında CASE kullanımını öğrenmenin en iyi yolu deneme yanılmadır. En çok yapılan yanlışlar virgül koyma hatası veya karşılaştırma yapılacak tablonun CASE kelimesinden önce belirtilmemesidir. Bunlar da ancak deneme yanılma ile aşılabilecek hatalardır.

Bir sonraki MySQL yazısında görüşmek üzere…

Arama


E-Posta Aboneliği


RSS Aboneliği

En Çok Yorumlanan Yazılar

Etiketler

404 ajax apache arama butonu as astrofizik açık kaynak banner blogger blogger/blogspot Blogger / Blogspot blogspot case chmod css date dosya yükleme editör etiket etkinlik favicon featured form ftp galeri Genel gimp hata sayfası header htaccess htpasswd ilişkisel veritabanı index innodb javascript join JQuery kategori koodla linux mysql opacity php resim url

Son Yorumlar

  • Murat: Güzel bir teknik, şu ana kadar sınırsız alt kategori lazım olmadı ama olmayacağı anlamına gelmiyor :)
  • iilyas: Bu kodlar çalışmıyor arkadaşım. Localde olduğu içinmi acaba ?
  • iilyas: Arkadaşım çok teşekkür ediyorum. Harika anlatmışsın ajaxla çalışmalara başlamak lazım estetik açısından.....
  • Nuri: bende bu şekilde bir çalışma yaptım ancak bir sorunum var ne yaptıysam url den index.php bölümünü kaldıramadım....
  • Kemal: Makale için çok teşekkürler, resimleri div tagları ile yapabilirmiyiz. Bu arada imagelara link verirsek daha...

Sayfalar


Faydalı Bağlantılar