Veri tabanı işlemleri etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Veri tabanı işlemleri etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

16 Şubat 2014 Pazar

Codeigniter ile Bir Tablodan Veri Çekme

Codeigniter ile veritabanındaki herhangi bir tablodan veri çekmek için bir fonksiyon yazalım. Bu fonksiyon parametre olarak çekilecek kayıt sayısını (limit) alsın. Ayrıca fonksiyon son eklenen kayıtları (order_by) getirsin. Bu durumda Model'imiz ve bu model içindeki fonksiyonumuz aşağıdaki gibi olacaktır.
/*
* Model ismi : Video
* Fonksiyon ismi : getVideos
*/

class Video extends CI_Model {

   public function getVideos($limit) {

        $this->db->select('*');

        $this->db->from('videos');

        $this->db->where('video_status', '1');

        $this->db->order_by('id', 'desc');

        $this->db->limit($limit);


        return $this->db->get()->result();
    }


}

Yazdığımız bu fonksiyon geriye dizi döndürecektir. Bu dizinin her bir elemanı bir Obje'dir. Controller içinde bu fonksiyonu çağırmak için öncelikle yazdığımız Model sınıfını yüklememiz gerekir. Fonksiyondan geriye dönen değeri bir dizi değişkenine atayıp, dönen veriyi göstermek istediğimiz View'e parametre olarak vermeliyiz.

class Show extends CI_Controller {


   public function videos(){

     $this->load->model('video');

     $limit = 100;

     $data['videos'] = $this->video->getVideos($limit);

     if( $data != NULL ) {

       $this->load->view('show_videos', $data);

     }

}

8 Şubat 2014 Cumartesi

Codeigniter ile Kayıtlı Kullanıcı Bilgilerine Ulaşma

Codeigniter ile veritabanı işlemlerini gerçekleştirmek için $this->db objesi kullanılır. Bu obje ile application/config/database.php dosyasında tanımladığımız veritabanı içindeki tablolara ulaşabilir ve bu tablolar üzerinde insert - select - update - delete işlemleri yapabiliriz.

Örneğin , kullanıcı girişinin olduğu bir web sitemizde, kullanıcıdan kullanıcı adı (username) ve parola (password) bilgilerini alarak, veritabanındaki bir tablodan (users) bu kullanıcının tüm bilgilerini çektiğimizi düşünelim.

Bunun için öncelikle bir Controller'ımız olması gerekiyor. User olarak adlandıralım bunu. Controller'ımız içinde ise bu kullanıcının yapabileceği işlemler için fonksiyonlar - metotlar tanımlamamız gerekir. User Controller'ı içindeki metodumuz ise login() olsun.

Controller sınıfımız yapı olarak aşağıdaki gibi olacaktır.

if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}

class User extends CI_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function index() {
        
    }

    public function login() {

    }
}

Şimdi login metodu içinde kullanıcının bir form ile girdiği bilgileri alıp, veritabanından kullanıcı bilgilerini çekelim. Öncelikle verileri çekeceğimiz bir Model sınıfı oluşturalım.

class User_model extends CI_Model{
    
    public function __construct() {
        parent::__construct();
    }

}

Sonra bu Model sınıfını Controller sınıfına dahil edelim ve kullanıcı bilgilerini alalım.
 
    public function login() {
        $this->load->model('user_model');

        /*
         * Formdan POST ile gelen kullanıcı adı ve şifre
         * değişkenlere aktarılıyor
         */

        $u_name = $this->input->post('username', TRUE);
        $u_pass = $this->input->post('password', TRUE);
    }

Şimdi Model sınıfında getUser( ) metodu tanımlayalım. Veritabanında kullanıcı şifresini sha1 algoritamasına göre sakladığımızı düşünelim. Bunun için kullanıcının girdiği şifreyi hemen sha1 algoritamasından geçirmeliyiz. Daha sonra SQL cümleleriyle kullanıcı bilgilerini users tablosundan çekiyoruz.

class User_model extends CI_Model{
    
    public function __construct() {
        parent::__construct();
    }
    
    public function getUser($userName, $password){
        
        $password = sha1($password);
        
        $this->db->select('*');
        $this->db->from('users');
        $this->db->where('user_username',$userName);
        $this->db->where('user_password',$password);
                
        return $this->db->get()->result();
    }

}

Tanımladığımız getUser( ) metodu bize dizi döndürecektir. Dönen bu değerleri Controller içindeki login( ) metodunda bir değişkene aktarıp, oluşturacağımız View sayfasına bu değişkendeki verileri göndereceğiz.
 
    public function login() {
        $this->load->model('user_model');
        $u_name = $this->input->post('username', TRUE);
        $u_pass = $this->input->post('password', TRUE);

        //Model sınıfının getUser metodu çağrılıyor

        $data['info'] = $this->user_model->getUser($u_name, $u_pass);
        $this->load->view('user_info_view', $data);
    }

Kullanıcı bilgilerini göstereceğimiz user_info_view dosyasında ise aşağıdaki gibi kullanıcı bilgilerine ulaşabiliriz.
/*
* Veritabanından gelen data dizi şeklinde
* olduğu için döngü ile kullanıcıya ulaşılır.
* Ayrıca kullanıcı bilgisi bir objedir.
*/

foreach ($info as $user) {
    $id = $user->id;
    $name = $user->name;
    $username = $user->username;
    $email = $user->email;
    $user_role = $user->role;
}       

Kullanıcı bilgilerini bir tabloya ya da div içine yazarak gösterebiliriz.