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.