Codeigniter Veritabanı İşlemleri

Merhaba arkadaşlar,
Mobilhanem.com’ da yayınladığımız Codeigniter Dersleri setimize 6. yazımızla devam ediyoruz. Bu dersimizde Active Record nedir? ve Codeigniter’ da Veritabanı işlemleri gibi konulardan bahsedeceğiz.

Active Record nedir?

Kısaca Active record’ un ne olduğundan bahsedecek olursak, Active Record Codeigniter Framework’ ünde veritabanı işlemlerini kolaylaştıran bir araç diyebiliriz. Active record ile veritabanına DML (Data Manipulation Language) ve DDL (Data Defination Language) sorguları kolaylıkla gönderilebilmektedir.

Codeigniter’ da Veritabanı İşlemleri

Codeigniter’ da Veritabanı Kullanımı için Konfigürasyonlar

Codeigniter ile veritabanı işlemlerini yaparken ilk olarak codeigniter projemizde yapmamız gereken konfigürasyonlardan bahsedeceğim. Yapacağımız bu konfigürasyonlar sadece MySql Veritabanına bağlanma ile ilgili işlemleri içermektedir. Bunlar sırasıyla

  1. Application klasörü altındaki config klasörü altında bulunan database.php adlı dosyanın içine girilerek aşağıdaki resimde belirttiğim yerlerde düzenleme yapılır.Codeigniter Database.php Resim
  2. Daha sonra application klasörü altındaki config klasörü altında bulunan autoload.php (Proje genelinde yüklenmesini istediğimiz Paketler, Modeller, Kütüphaneler, Helperlar, Konfigürasyonlar ve Diller gibi yapıların yazıldığı dosya) dosyaya girilerek autoload adlı dizi’ nin libraries indisine aşağıdaki gibi atama yapılır ve böylece database kütüphanesinin proje genelinde yüklenmiş olması sağlanır.
  3. Şimdi yapmamız gereken işlemler Mysql’ de mobilhanem adında bir veritabanı oluşturmak ve bunun içinde de egitmenler adında bir tablo olusturarak veritabanı işlemleri için son adımımızı gerçekleştirmek olacak. Yapacağım Tablonun yapısı aşağıdaki gibi olacaktır.Tablo yapısı

    tablo ve kayıtlar resim

 

Bu yazımız veritabanı işlemlerine giriş yazımız olduğundan bu şekilde basit bir veritabanı tasarımı tercih ettim. Yapacağımız  işlemleri DE (CRUD – Create – Read – Update – Delete) şimdilik sadece  Welcome controller’ ında ve oluşturacağımız View’ dosyalarında yapacağız. Model dosyasının kullanımına bir sonraki dersimizde değineceğiz.

Listeleme işleminin yapılması

Bu işlem yapılırken veritabanı kütüphanesinde bulunan get metodu kullanılır. bu metod

şeklinde kullanılır. Şimdi yaptığım örneği inceleyecek olursak,

ilk olarak, $satirlar adında bir dizi oluşturduk. Sonra bu $satirlar adındaki dizinin egitmenler indisine select işlemi için kullandığımız database sınıfının get methodunu ve ardından da bize veritabanımızda bulunan kayıtların dizi olarak dönmesini sağlayacak result metodunu kullandık. Daha sonra çektiğimiz verileri oluşturmuş olduğum egitmenler adındaki View dosyasına gönderdim. Dikkat etmeniz gereken bir nokta result metodu bize dizi döndürür fakat dizi elemanlarını stdClass türünde bir nesne olarak döndürür. Bunu görmek için

print_r metoduna $satirlar değişkeni parametre olarak geçip ardından da die metodu kullanılarak sonraki satırların çalışmasının önüne geçilir. Sayfayı yenilediğimizde ve sayfaya sağ tıklayıp sayfa kaynağını görüntüle dediğimizde karşılaştığımız görüntü aşağıdaki gibi olacaktır.

Print_r metodu çıktı resmi

 

print_r metodu verilerimizin veri tabanından çekerken  hata yapıp yapmadığımızı görmek için oldukça kullanışlı bir metoddur. Bu metodu aynı zamanda View dosyasında da kullanarak View’ e gönderdiğiniz verilerin gelip gelmediğini test edebilirsiniz. Print_r metodu ardından die metodunu kullanmanız sonraki kodların çalışmasını önleyeceği için daha net bir görüntü elde etmenizi sağlar. Yaptığımız bu işlemlerin ardından result metodu ile dönen dizi elemanlarının bir sınıfa ait nesne olduğunu gördük. Php’ de bildiğiniz üzere bir sınıfa ait özelliklere nesne ile  ‘->’ notasyonu ile erişim sağlıyoruz. Bu yüzden View dosyasında nesne değişkenlerine erişirken ‘->’ kullanacağız. Bu işleme geçmeden önce print_r metodunu ve die metodunu index action’ u içinde silmeyi unutmayalım. Eğer silmezsek sayfayı ne kadar yenilersek yenileyelim sürekli aynı çıktı ile karşılaşmış oluruz. Şimdi ise $egitmenler dizisindeki verileri View dosyasında göstermek için yazmamız gereken  View dosyası aşağıdaki gibi olmalıdır.

Foreach döngüsü içinde de gördüğünüz üzere nesne özellilklerine ‘->’ nostasyonunu kullanarak erişiriyoruz. Bu işlemleri gerçekleştirdiğinizde karşılacağımız sayfa aşağıdaki gibi olacaktır.

Egitmenler View Çıktısı

Aktif sütununda 1 ya da 0 değerleri yerine text şeklinde çıktı vermek için

satırını

şeklinde değiştirirsek isActive değeri 1 ise  EVET, 0 ise HAYIR şeklinde çıktı verecektir.

Ekleme işleminin yapılması

Insert işlemini yapmak için veritabanı kütüphanesinin insert metodunu kullanıyoruz. Kullanımı ise

gibidir. Veri eklemek için kullandığımız insert metodu yukarda ki kodda da gördüğünüz üzere verinin ekleneceği tablo adı ve eklenecek veri şeklinde 2 parametre alır. Kayıt ekleme işlemine geçmeden önce egitmenler.php adlı View dosyasında bizi ekleme işlemi yapacağımız sayfa götüren a elementiyle oluşturacağımız bir link ekleyelim. Yapılacak işlemden sonra View kodları ve egitmenler.php View dosyasındaki görüntü aşağıdaki gibi olacaktır.

Yukarda gördüğünüz kodlarda a elementinin href özelliğine base url kullanarak Welcome Controller’ ının get_add adındaki Action’ una gitmesini istedğimizi söyledik. Base_url metodu kullanımından ve kullanılabilmesi için yapılması gerek konfigürasyonlardan önceki derste bahsetmiştim. Şimdi ise sayfayı yüklemek istediğimizde karşılaşacağımız sayfa aşağıdaki gibi olacaktır.

egitmenler sayfası

 

Şimdi yapmamız gereken şey ise get_add adında bir Action ve bu Action’ un döndüreceği bir kayıt ekleme formu olacaktır. Bu action’ un döndüreceği View dosyasının adı egitmen_ekle.php olsun. Öncelikle get_add Action’ undan nasıl yazacağımdan bahsedecek olursam bu Action sadece bir View yükleme işlemi yapacak basit bir Action olacaktır.

Yukarıdaki kodda da gördüğünüz üzere get_add Action’ u egitmen_ekle adında bir View dosyasını yüklemektedir. Şimdi ise egitmen_ekle.php adında bir View dosyası oluşturalım ve içinde bir egitmen ekleme işlemi için form tasarlayalım. Eğitmen ekleme formu View kodları ve sayfanın görüntüsü aşağıdaki gibi olacaktır. Bu sayfaya egitmenlerin listelendiği link ile ya da adres çubuğundan Welcome Controller’ ının get_add Actionuna giderek siz de sayfanın görünümünü görebilirsiniz.

egitmen_ekle.php View Dosyası Kodları
Bu form Php ya da diğer Web Programlama dilleri ile Uğrştıysanız Çok ta yabancı olmayacağınız bir form sayfasıdır. Form elementinin Action özelliğinde ve Vazgeç linkinin (Bizi eğitmenler sayfasına dönderecek link) href özelliğinde base_url metodunu kullandık. Şimdi ise bu formdaki verileri post ettiğimiz verileri post_add Action’ umuzu Welcome Controller içinde oluşturalım ve bu Action’ un içinde post ettiğimiz verileri veritabanına ekleme işlemini gerçekleştirelim.

post_add Action Kodları
Yukardaki kodları açıklayacak olursam, İlk olarak $eklenecek_veri adında bir diziye form verilerimizi veritabanında karşılık geldikleri kolonlara denk gelecek şekilde ekleme işlemini yapalım. İşimizi kolaylaştırsın diye egitmen_ekle.php dosyasında form elementlerinin name özelliklerini veritabanındaki kolon isimleriyle aynı yaptım. Bu işlemi hız kazanmanız açısından ve hata yapma ihtimalinizi azaltmanız açısından size de tavsiye ederim. Daha sonra $insert adındaki bir değişkene insert işleminin sonucunu atadık. Bu sayede $insert değişkenine işlem sonucunda etkilenecek satır sayısı atanacaktır ve bu sayede biz de işlemin başarılı olup olmadığını anlayabileceğiz. if ve else blokları içinde bulunan redirect metodu ise uri_helper adındaki helper’ da bulunan bir metoddur ve temelinde Php fonksiyonlarından olan header methodu yatar dolayısıyla, redirect metodu sayfalar arası yönlendirme işlemlerinde kullanılır. Redirect metodu altında kullanılan die metodunu kullanma sebebim ise localde bu problem olmasa da siteyi canlıya almak istediğinizde redirect metodu yönlendirme yapmadan hata ile karşılaşılabilmektedir. Şimdi ise sizle yazdığımız bu kodlar sonucunda karşılaşacağımız ekran çıktılarını paylaşacağım.

  • Eğitmenler sayfasından Yeni eğitmen ekle linki ile eğitmen ekleme formuna gidilir ve sayfadaki form aşağıdaki gibi doldurulur, Form bilgileri doldurulduktan sonra Ekle butonuna tıklanır ve kayıt veritabanına eklenir.

Eğitmen Ekleme Formu Resim

  • Ekle butonuna tıklandıktan sonra eğer bir hatamız yoksa karşılaşacağımız sayfa eğitmenlerin listelendiği sayfa olur ve yeni eklediğimiz kaydı da bu sayfada görmüş oluruz. Sayfanın çıktısı aşağıdaki gibidir.

Kayıt Ekleme İşleminden sonra resimGüncelleme ve Silme işlemleri için View düzenlemesi

Hepinizin de tahmin edebileceği gibi güncelleme ve silme işlemleri için egitmenlerin listelendiği tablonun ufak bir değişikliğe ihtiyacı var. Bu değişiklileri yaparken Güncelleme ve silme işlemini yaparken işlemleri yapacağımız Action’ a eğitmenlerin Id bilgisini göndermemiz gerekmektedir. Action’ a Id gönderme işlemini listelenen her eğitmene ait a elementlerinin (Silme ve Güncelleme) href özelliğinde gerçekleştireceğiz. Yapacağım View tasarımının kodları ve çıktışı aşağıdaki gibi olacaktır.

Silme ve Güncelleme Link Resim

Güncelleme işleminin yapılması

Güncelleme işlemi kısmen de olsa Ekleme işlemine benzemektedir. Güncelleme formunu tasarlarken Ekleme formunu baz alacağız ve bir iki ufak detay dışında formlar neredeyse aynı olacak diyebiliriz. Güncelleme formunun yüklenmesi için get_update adında ve Id değerini parametre alan bir Action yazmamız ve Id verisi ile güncellenmek istenen eğitmene ulaşıp bu eğitmene ait verileri güncelleme formuna yüklememiz gerekmektedir yani sayfayı yüklerken View’ e eğitmenin bilgilerini göndereceğiz. get_update Action’ una ait kodları adım adım yazacak olursak ilk olarak güncellenecek eğitmeni bulacak kodu yazmamız gerekir.

olacaktır. Yukardaki kodda da dikkatinizi çekmiştir şu ana kadar kullanmadığımız where ve row adında 2 metod kullandık. Where sorgularımızda koymak istediğimiz şartlar için kullanılırken, row ise yapılan sorgulama sonucu dönen ilk satırı çeker. Yani row sonucu bir liste değil de stdClass türünde bir nesne döner. Şimdi yapmamız gereken $egitmen verisini View’ e geçmek. Bunun için de,

şeklinde $egitmen verisi View’ e gönderilir.

egitmen_guncelle View dosyasının tasarımı

Bu sayfanın tasarımında Ekleme formunu bire bir kopyalayıp ufak değişiklikler yapacağım. Yapacağım değişiklikler,

  1. Form içinde type özelliği hidden olan input elementinin içinde Eğitmene ait Id değerini saklamak.
  2. Form elementin action metodunun update işlemi için güncellenmesi.
  3. Form inputlarının value özelliğine View’ e gönderilen eğitmene ait verilerin yazılması

gibi olacaktır.

View dosyasına ait kodlar aşağıdaki gibidir.

Şimdi ise güncelleme işlemini yazacağız ve güncelleme formundan post_update Actionuna gönderilen verileri kullanarak eğitmenimize ait verileri güncelleyeceğiz.

post_update Action’ una ait kodlar aşağıdaki gibidir.

post_update Action’ undaki kodlar da genel hatlarıyla post_add Actionunda ki kodlara benzemektedir. Yaptığımız veritabanı kütüphanesindeki update metodunu kullanmak ve where şartında güncellenecek eğitmene ait Id’ yi parametre vermek. Bu işlemin de sonucu $update değişkenine atandı ve duruma göre yönlendirmeler yapıldı. Else koşulundaki yönlendirme işlem başarısız olduğun da ya da bilgilerde bir güncelleme yapmadığımızda çalışır ve aynı sayfada kalmamızı sağlar.

  • Egitmenlerin Listelendiği sayfada bir eğimenle aynı satırda bulunan güncelleme linkine tıklanır ve aşağıdaki sayfa ile karşılaşılır.

Güncelleme Sayfası Resim

  • Eğitmen Bilgilerinde aşağıdaki resimdeki gibi değişiklikler yapılır

Güncelleme sayfası değişiklikler

  • Güncelleme işleminin sonucu

Güncelleme Sayfası Sonuç

Silme işleminin yapılması

Silme işlemi yapmış olduğumuz, Listeleme, Ekleme ve Güncelleme işlemlerinden daha kolay bir şekilde gerçekleşmektedir. Daha kolay deme sebebim View tasarımı gerektirmemesidir. Silme işlemi yaparken veritabanı sınıfına ait delete metodunu kullanacağız. Sil linki bizi Welcome Controller’ ı içindeki delete adındaki Action’ a yönlendirmektedir. Dolayısıyla şimdi Welcome Controller’ ı içinde delete Action’ u yazıp silme işlemlerini yapacağız.

delete Action’una ait kodlar aşağıdaki gibidir.
Bu Action da silme işleminin sonucu $delete adındaki değişkene atanmıştır. Silme işlemi başarılı olduysa etkilenen satır sayısı 0′ dan büyük olacağından aynı sayfa yenilenecek ve silinen kayıt sayfada gözükmeyecektir. Eğer kayıt silinmezse ekrana Silme işleminde hata… yazdırılacaktır. Deneme amaçlı kendime ait kaydı sildiğimde karşılaşacağımız çıktı aşağıdaki gibi olacaktır.

Veritabanı Silme İşlemi sonuç

Codeigniter Dersleri eğitim setinin 6. yazısını burada noktalıyorum. Bu yazımızda Active Record nedir? ve Codeigniter’ da Veritabanı işlemleri gibi konulardan bahsettik. Konu ile ilgili sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz. Makarna kod yazmamak için framework kullanalım dedik ve veritabanı işlemlerini Controller içinde yazarak ne yazık ki makarna kod yazdık. Bu yüzden sonraki derste Model dosyası kullanımı ve veritabanı işlemleri ile devam edeceğiz

Tüm Codeigniter Dersleri‘ ne buradan ulaşabilirsiniz.

Hüseyin Göztok

Abis Teknoloji - Yazılım Mühendisi - Erciyes Üniversitesi (Lisans) 2013 - 2018

5 Yorum

  • <a href="Id”)?>”>[ Sil ]

    reis bu satırda sıkıntı var. Doğrusunu yazıyorum değiştirirsin
    <a class="btn btn-primary" href="id);?>”>Düzenle

    • Problemi daha açıklayıcı bir şekilde yazarsanız daha iyi yardımcı olurum. Fakat kodlarda bir problem olmaması gerekiyor. Kodları denemeden yayınlamıyorum yazıları.

  • merhablar küçük bir sorunum var, bir iletişim formu hazırladım ve captcha doğrulama ekledim. sorun şu ki, ileitşim formundaki başarısız olan formlar dahil tümünü veritanına yazıyor buda panelde view bölümünede düşüyor.

    yani formu doldurmadan formu gönder butonuna bassam dahi veritabanına kaydediyor. sadece başarılı formların veritabanına kayıt işlemnii nasıl yaparım?

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?