• 22-05-2014, 02:24:01
    #1
    Merhabalar, sizlerle kendi bloğunda yazdığım bir yazıyı paylaşmak istiyorum. Umarım yeni başlayanlar için faydalı olur.

    Hızlıca bir veritabanına bağlanalım
    Evet, hemen application/config/ dizinindeki database.php dosyamızı açalım ve içerisindeki $db dizilerine gerekli veritabanı bilgilerimizi girelim. Username , password, database (name), en temel gerekli olan bilgilerdir. Bunları girdikten sonra veritabanı bağlantımız gerçekleştirilmiştir ve artık application üzerinde CI’ın database class’ı ile istediğimiz işlemi yapabiliriz.

    Kendi modelimizi oluşturup kodlamaya başlayalım
    Database kütüphanelerimizi kullanarak işlem yapmak üzere application/models dizinimize yeni bir dosya oluşturalım. Bu model bizim veritabanı ile ilgili işlemleri yürüttüğüm fonksiyonları içerecek. Basit bir formdan gelen veriler controller tarafından alınıp ,metodumuz aracılığıyla verileri database’e yazacak. Daha sonra aynı modelin farklı bir metodu bu verileri ekrana basacak. Herşey bu kadar basit

    <?php
    class My_model extends CI_Model
    {
    public function __construct()
    {
    $this->load->database();
    }
    }
    Database sınıfları Codeigniter yapısında hazır gelen yardımcı kütüphanelerdir. Genellikle database otomatik yüklenmesi için /config altındaki autoload.php de bulunan $autoload['libraries'] = array(‘database’); satırı bu şekilde değiştirilir.

    Sırada veritabanı sınıflarını yüklemek var
    Oluşturduğumuz bir controller üzerinde eğer yoksa bir constructer fonksiyonu oluşturalım.

    public function __construct()
    {
    parent::__construct();
    $this->load->model(array('my_model'));
    }
    Veritabanı ile ilgili tüm ön hazırlıklar tamamlandığına göre artık işlemlerimizi yapma vakti gelmiştir.

    controllerımız içerisinde index metoduna bir view yükleyerek işe koyulalım.

    public function index(){
    $data['title'] ="Form sayfamız";
    $this->load->view('home',$data);
    }
    Daha sonra view dizinimize gidip hemen home.php dosyasını oluşturalım. İçeriğini örnek koda benzer şekilde kodlayabilirsiniz.

    <html><head><meta charset="utf-8"><title><?=$title;?></title></head><body>
    <form action="<?=base_url('/my_controller/add');?>" method="post" />
    <input type="text" name="mesaj" />
    <input type="submit" value="Gönder" />
    </form>
    </body></html>
    Arayüzümüzü böylece tamamladık. Çok basit bir şey oldu ama orasını size bırakıyorum Burada dikkat edilecek hususlar;

    base_url fonksyinu bana application yani ana dizini dönericektir. Parametre ile controller ismini ve controllerın hangi metoduna gideceğini yazıyorum. Yukarıdaki form post edildiğinde http://localhost/my_controller/add adresine gidicektir.

    Controllerın ismini size bıraktım kendi controller isminize göre ilgili kısımları değiştirmeyi unutmayın. Örnekteki controller ismi my_controllerdır. İngilizce isimler el alışkanlığından dolayı Tavsiye: kod yazarken türkçe değişken kullanmayın.

    Veritabanına veri ekleme
    İşin özüne geldik artık. Şimdi veritabanına bir veri nasıl kaydedilir onu göreceğiz. Oluşturduğumuz Mymodel içinde dataAdd() metodu oluşturalım.
    public function dataAdd($text)
    {
    $data = array('textMessage' => $text);
    $this->db->insert('tablo1',$data);
    }
    Yukarıdaki metodu açıklamak gerekirse bir parametre alıyor. Bu parametreyi bir dizide tutuyoruz. Daha sonra insert fonksiyonu bizim dizi içerisindeki verilerimizi belirttiğimiz tablo ya ekliyor. Codeigniter veritabanı kütüphanesinde genel olarak veri ekleme işlemi bu şekilde yapılıyor. Şimdi sıra bu metodu kullanacağımız asıl yer olan controller aşamasına geldi.

    Controller metodumuzu oluşturalım
    Controllerımız içine add() isimli bir metod oluşturalım, hemen index metodunun altına ekleyelim.

    public function add(){
    if($_POST):
    $text = $this->input->post($mesaj);
    $this->my_model->dataAdd($text);
    endif;
    redirect();
    }
    İnputtan gelen değeri $text değişkenimizde tutup modelimize veriyoruz. Bu şekilde veritabanına yazılmış oluyor.

    Listeleme işlemini gerçekleştirelim
    Mymodelin içine list() metodunu ekleyelim. Daha sonra controller da listemizi göstericez.

    public function list()
    {
    $this->db->select('textMessage');
    $this->db->from('tablo1');
    if($this->db->get()->num_rows())
    {
    return $this->db->get()->result();
    }
    else
    {
    return false;
    }
    }
    Metodumuzu açıklayayım hemen. İlk olarak select ile tablomuzdan çekeceğimiz kısımları seçiyoruz. from ile hangi tablodan veri alacağımızı belirtiyoruz. Yerine göre sırasıyla join, where, order_by, limit özelliklerinide kullanabilrisiniz. İlerleyen örneklerde onlardanda bahsedicem. Sonucumuzu bir obje olarak dönderdik.

    Controllerda listemizi gösterelim
    Controller’ın index metoduna aşağıdaki listelemek için gerekli kodları ekleyelim.

    public function index(){
    $data['listObj'] = $this->my_model->list();
    $data['title'] ="Form sayfamız";
    $this->load->view('home',$data);
    }
    Objemizin şimdi view tarafında bastırılması gerekli.

    $data[] dizisinde tanımlanan her indis , view tarafında birer değişken olarak görülür.

    Son adım , Listeleme
    View içerisinde home.php oluşturmuştuk. İstediğiniz bir kısmına (body içinde =) ) kodları ekleyin.
    <?php foreach($listObj as $list):
    echo $list->textMessage;
    endforeach;?>
    Objemizi foreach ile bir değişkende bastırıyoruz.

    Objemizin yapısını görmek için print_r($listObj); ile foreach dışında bir daha bastırabilrisiniz.

    Böylece basit bir veritabanı uygulamasını tamamlamış bulunuyoruz. Eğer sorularınız yada önerileriniz varsa mutlaka gönderinin altına belirtin. Okuduğunuz için teşekkür ederim bir sonraki yazıda görüşmek üzere..


    kaynak
  • 28-05-2014, 09:25:38
    #2
    ilk aşamaya göre çok sade güzel bir anlatım olmuş. teşekkürler.
  • 03-06-2014, 13:08:55
    #3
    rica ederim işlerden fırsat kaldıkça yazmaya çalışıyorum burada da paylaşıcam
  • 11-07-2014, 23:14:06
    #4
    Arkadaşlar yine siz bilirsiniz, ama codeigniter üstüne çok plan yapılacak bir fw değil. Laravel tr kaynakları çoğaldı, ordan yürüyün derim. Çünkü codeigniter php'nin yeni sürümü ile gelen namespace, trait gibi ciddi oop özellikleri desteklemiyor. Yamayarak birşeyler yapanlar, benim gibi zorla HMVC içine phpunit test yazanlar var ama miyadı doldu. Öğrenme süreçlerindeyseniz, proje yapmadıysanız şimdiden laraval, symfony gibi hatta kohana hatta fuel php ve hatta yeni php özelliklerini öğrenmek gibi yollara dönün derim.