Many to Many İlişki Tipi

Veritabanında birden fazla veriyi birden fazla veriye ilişkilendirmek için Many To Many Relationship diye bir yöntem var. Türkçe manası da herhale Çoktan çoğa ilişki tipidir. Bu yönteme bir blog sisteminde ihtiyaç duydum. Bir blog gönderisine bir kategori tanımlamak daha önceden yaptığım bir işti. Ama Bir gönderiye birden fazla kategori tanımlamak istediğimde bu tarz bi yönteme başvurmak gerektiğini öğrendim.

Bir gonderi tablomuz olsun, içerisinde id, baslik, govde alanları olduğunu varsayalım. Bir de kategori tablomuz olsun, içindeki alanlarsa id, adi, aciklama olsun.

Bu noktada her şey tamam. Şimdi yapmamız gereken bu iki tablodaki verileri ilişkilendirmek olacak. Önceden gönderiyi bir kategoriyle ilişkilendirmek için gönderi tablosunda kategori_id adlı bir alan oluşturup gönderinin ait olduğu kategorinin ID’sini eklerdik. Ama birden fazla kategori tanımlamak istenildiğinde bu durum yapılamıyordu. Şimdi, bu durumun üstesinden gelebilmek için hangi gönderi ve kategorilerin hangisiyle ilişkili olduğunu tutabileceğimiz bir tablo oluşturacağız. Tablonun adı gonderi_kategori olsun. İçerisindeki alanlar ise id, gonderi_id, kategori_id olsun. Görsel olarak şöyle:

Gönderi Kategori İlişki

1 numaralı gönderi, 2 ve 3 numaralı kategoriyle ilişkilendirildiğinde, gonderi_kategori tablosuna iki satır eklenir. Yani şöyle:

id gonderi_id kategori_id
1 1 2
2 1 3

Daha sonra uygulamalı bir örnekte görüşmek üzere diyelim.

Slim Framework ve Veritabanı İşlemleri

Bilenler bilir, Slim Framework adlı bir PHP mikro framework (çatı) var. Slim’i detaylandırmadan veritabanı işlemlerini nasıl gerçekleştirdiğimden bahsedeceğim.

Veritabanı işlemlerini yapmak için RedBeanPHP adlı bir ORM (İlişkisel Nesne Eşleştiricisi diye türkçeleştirilebilir) kullanıyorum. İndirmek için composer vb. bir araç kullanmayacağım. Slim’i indirip, aynı klasörün içerisine RedBeanPHP dosyasını atacağım. Hepsini yaptığımızı varsayarak basit bir giriş yapıyorum:

<?php
require "Slim/Slim.php";
require "Slim/rb.php"; // RedBeanPHP dosyasını dahil ediyorum

\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();
$app->get("/listele", function () use ($app) { // "listele" rotasını belirliyorum
    $gonderiler = R::findAll("gonderilertablosu"); // Bütün gönderileri findAll ile çekiyorum
    foreach ($gonderiler as $gonderi) { // Sonra listeliyorum
        echo "<h1>{$gonderi->baslik}</h1>";
    }
});
$app->run();

Her şey oldukça basit göründüğü üzere. Daha fazla veritabanı işlemi için RedBeanPHP sitesine bakabilirsiniz.

WordPress Sitesinin Hangi Temayı Kullandığını Öğrenmek

İnternette, WordPress kurulu internet sitelerinde ilgimizi çekebilen temalar karşımıza çıkabiliyor. Bunları öğrenmek için bazı çevrimiçi servisler yapmışlar. Bunlardan ikisi whattheme.com ve wpthemedetector.com internet siteleri. Ama bunlara hiç gerek yok. Hatta artık daha fazla servise gerek yok.

Çok basit ve hızlı bir yolu var. Sayfanın kaynağını görüntülüyoruz, CTRL + F ile arama yapmaya yelteniyoruz, wp-themes diye arattıktan sonra hemen sağdaki tema ismini görüyoruz. Mesela, bende şöyle:

wordpress-tema-bulma

Hemen arama motoruna giriyorum ve “wordpress morphic theme” yazıyorum. Sonuçlar önüme düşüyor.

Göründüğü üzere gayet basit. Ekstra bi servise ihtiyaç yok arama motoru dışında. Çok da önemli bi konu değil yazılacak ama, çok görmeye başladım servis şeylerinden. Daha fazla servise ihtiyacımız yok, daha fazla uygulamaya da ihtiyacımız yok.

Sevgiler.

CentOS’da Composer Yükleme Hatası

Laravel kurulumu yapmak için CentOS’a Composer kurmam gerekiyordu. Composer kurulumu için komutu yazdığımda “The suhosin.executor.include.whitelist setting is incorrect.” gibi bir hata verdi.

Çözüm için php.ini dosyasına bir satır ekledim. Sırayla nasıl yaptığımı anlatayım.

Nano ile php.ini dosyasını açtım:

nano /etc/php.ini

Açtığım dosyanın en altındaki “; END;” satırından öncesine aşağıdaki kodu yazdım:

suhosin.executor.include.whitelist = phar

CTRL + X deyip belgeyi kapattım ve kaydettim. Daha sonra Apache’yi de yeniden başlatırsak tamam olacak:

sbin/service httpd restart

Sonrasında Composer’ı kurabiliriz:

curl  -k -sS https://getcomposer.org/installer | php

Kolay gelsin.

Bootstrap CSS Çatısı

Son zamanlarda ilgimi çeken bir CSS tasarım çatısıyla ilgileniyorum. Adı Bootstrap. Ben bu yazıyı yazarken güncel sürümü 3.0.3. Bootstrap ile esnek (responsive) tasarımlar yapılıyor. Esnek tasarım araçlarının yanında ek olarak bir de bileşen çatısı var. Bileşen çatısı sayesinde birçok tasarım öğesi hazır olarak kullanılabiliyor. Bileşen listesini sıralamak gerekirse, şöyle;

  • İkon seti (Glyphicons)
  • Açılır menü (Dropdowns)
  • Buton grupları (Button Groups)
  • Buton açılır menüler (Button Dropdowns)
  • Girdi grupları (İnput)
  • Navigasyonlar (Navs, Navbar)
  • Ekmek kırıntıları (Breadcrumb)
  • Sayfalama (Pagination)
  • Etiketleme (Label)
  • Rozetleme (Badge)
  • Giriş sunumu (Jumbotron)
  • Sayfa başlığı (Page Header)
  • Küçük resim (Thumbnail)
  • Uyarılar (Alerts)
  • İlerleme çubukları (Progess Bars)
  • Medya objeleri (Media Objets)
  • Liste grupları (List Group)
  • Paneller (Panels)
  • Güzel kutular (Wells)

Bunlar sadece bileşenler. Bu listeye dahil olmayan temel sayfa öğeleri (tablolar, tipografi, ızgara, form vd.) de var. Ayrıca ek olarak Javascript betikleriyle de sayfa sunumu daha iyi bir hale getirilebiliyor.