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

Real9

Katılımcı Üye
1 Kas 2009
322
0
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.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.