Joomla Kodlarına Giriş (Bölüm 4)

Bu yazı dizisi ile joomla 1.0.x sürümünün kodlarına giriş yaparak kendimizi joomla konusunda daha çok geliştirmeye çalışacağız.

Bu yazı dizisinden itibaren joomla kodlarıyla oynamaya ve bazı fonksiyon ve sınıfların neler yaptığına, yapabileceğine dair güzel örnekler vererek anlamaya çalışacağız. Öncelikle veritabanına bağlanma ve çeşitli sql döngülerini öğreneceğiz. Böylece yapacağımız bir eklentide kolayca sql sorguları oluşturabilecek ve bu sorgulardan verileri kolayca çekebileceğiz.

Joomla veritabanına bağlanmak için includes klasörü içerisindeki database.php dosyasındaki database sınıfı(class)nı kullanır. Joomlada yeni bir veritabanına bağlanmak için kullanacağımız kod şu şekilde olacaktır;


$yenibaglanti = new database( $host, $user, $pass, $db, $table_prefix, $goOffline=true);



    $host = sunucu adı (genelde localhost' tur),

    $user = veritabanı kullanıcısı,

    $pass = veritabanı parolası,

    $table_prefix = varsa tabloların öneki,

    $goOffline = eğer veritabanına bağlanamıyorsa siteyi kapatıp kapatmayacağı



Şimdi bir eklentimiz var ve joomlanın kullandığı veritabanı dışında başka bir veritabanına bağlanmak istiyoruz. Örnek kodumuz şöyle olmalı;


//yeni bir bağlantı oluşturalım

    $yenibaglanti = new database('localhost', 'veritabani_kullanicisi', 'veritabani_parolasi', 'veritabani_adi', 'tablo_oneki', false);



Bu kod ile bir veritabanına yeni bir bağlantı yapmış olduk. Bu veritabanından bir sql sorgusu yapmak istiyoruz. O zaman setQuery fonksiyonunu kullanmamız gerekiyor. Örneğin;

Veritabanımızda 'JTR' adında bir tablomuz olsun ve bu tablonun içerisinde 'sira' adında bir alanımız olsun. Bu tablomuzdaki tüm verileri çekmek isteyelim;


//yeni oluşturduğumuz bağlantıda bir sql sorgusu çalıştıralım

    $yenibaglanti->setQuery("SELECT * FROM #__tabloadi");



Bu kod ile tüm verileri çektik. Peki bu tüm verileri satır satır yazdırmak istersek, o zaman da loadObjectList fonksiyonunu kullanarak tüm nesneleri listelememiz gerekiyor;


$nesneler = $yenibaglanti->loadObjectList();



Böylece $nesneler dizisi(array) oluşturduk. Bu diziyi bir foreach döngüsü ile yazdıralım;


foreach ($nesneler as $nesne) {



    echo $nesne->sira;



    }



Peki şimdi de sira numarası 5 olan bir veriyi çekelim;


$yenibaglanti->setQuery("SELECT * FROM #__tabloadi WHERE sira='5'");



    $nesneler = $yenibaglanti->loadObjectList();



    foreach ($nesneler as $nesne) {



    echo $nesne->sira;



    }



Eğer sql sorgusundaki ilk satırı almak istiyorsak loadRow fonksiyonunu kullanabiliriz. Örneğin;


$yenibaglanti->setQuery("SELECT * FROM #__tabloadi");



    $nesneler = $yenibaglanti->loadRow();



Böylece sql sorgusunun sonucundaki ilk satırı almış olduk.

Yaptığımız sorgudan etkilenen satır sayısını öğrenmek için getAffectedRows fonksiyonunu kullanırız. Örneğin;


$yenibaglanti->setQuery("UPDATE #__tabloadi SET sira='5' WHERE sira='0'");



    echo $yenibaglanti->getAffectedRows();



Bu kodlar bize bu sql sorgusundan etkilenen satır sayısını verecektir.

Çalıştırdığımız sql kodlarını detaylı görmek için (EXPLAIN),


$yenibaglanti->setQuery("SELECT * FROM #__tabloadi");



    echo $yenibaglanti->explain();



Bu kodlar bize sql sorgusunu ve bu sorgu hakkında detaylı bilgiyi verecektir.

Tablodaki ilk satırdaki ilk veriyi çekmek için loadResult() fonksiyonunu kullanırız. Örneğin;


$yenibaglanti->setQuery("SELECT * FROM #__tabloadi WHERE sira='5'");



    $nesne = $yenibaglanti->loadResult();



Bu yazımızda temel olarak joomla ile sql sorgularını çalıştırmayı anlatmaya çalıştım. Daha çok bilgi alabilmek için includes klasörünün içerisindeki database.php dosyasını incelemenizi, sql sorguları hakkında araştırma yapmanızı öneririm.
  • Etiketler;
Soner Ekici
1981 yılında Denizli' de doğdu. 1999 yılında başladığı PHP ve MySQL çalışmalarına 2004 yılında Joomla! ile devam etti. Joomla! için çeşitli eklentiler kodladı. <p>Halen Joomla! için aktif olarak eklentiler kodlayan Soner Ekici Afyonkarahisar ili Şuhut ilçesinde pratisyen hekim olarak görev yapmaktadır.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git