Merhabalar ilk olarak resim bilgilerini tutmak için kullanıcı tablosuna resim_ad ve resim_url sütunlarını ekliyoruz.Resimlerin kaydedileceği "resim" diye bir klasör oluşturuyoruz.Bu klasörü projemizin "C:\xampp\htdocs\ci_blog" kısmına oluşturuyoruz.Tablomuzu aşşağıdaki gibi değiştiriyoruz.
listemizdeki kişilerin yanına Resim Ekle diye bir link ekleyip tıklantığında gideceği yeri href="<?php echo base_url("welcome/newresim/$kbilgi->id") ?>" şeklinde yazalım.Burda welcome controlerı içindeki newresim metodunu çağırıyoruz ve parametre olarak kullanıcı id sini gönderiyoruz.Bu newresim metodu kısaca bizim dosyadan resim seçip ekle butonunun olduğu sayfayı yükleyip,view e kullanıcının id sini göndermektedir.
Resim ekle linkine tıklandığında dosyadan resim seçebileceği ve kaydet butonunun olduğu bir new_resim.php adında sayfa oluşturuyoruz.Görüntüsü aşağıdaki gibidir.Formun actionuna contolerımızdaki resim ekleme işlemini yapacağımız url yi yazıyoruz ve yine parametre olarak kullanıcı id sini gönderiyoruz.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome to CodeIgniter</title>
</head>
<body>
<div id="container">
<div >
<form role="form" enctype="multipart/form-data" method="post" action="<?php echo base_url("welcome/add/$id");?>">
<label class="" for="first-name">Resim Seç<span class="required">*</span>
</label>
<input type="file" required="required" name="resim" >
<button type="submit" >Ekle</button>
</form>
</div>
</div>
</body>
</html>
----------
Şimdi welcome controler daki newresim metodumuzu yazalım.
public function newresim($id){
$data["id"] =$id;
$this->load->view("new_resim",$data);
}
welcome controler daki modelle bağlantı kurup resim ekleme işleminin yapıldığı add metodumuzu yazalım.
public function add($id){
//resim ekleneceği klasör
$config['upload_path'] = 'resim/';
//eklenecek resimin tipi
$config['allowed_types'] = 'gif|jpg|png';
//ekleme işleminde resmin adını şifreli bir şekilde kaydetmek için
$config['encrypt_name'] = true;
//upload kütüphanesini oluşturduğumuz confige göre yüklüyoruz
$this->load->library('upload', $config);
//dosya yükleme işlemini yapıyoruz
if ( ! $this->upload->do_upload("resim"))
{
//eğer yükleme işlemi başarısız olursa
//hata dizimizi oluşturuyoz ve hatamızı alıyoruz
$error = array('error' => $this->upload->display_errors());
//hataları yazdırıyotuz
print_r($error);
}
else{
//resim yükleme işlemi başarılı olursa
//yüklenen resmin blgilerini alıyoruz
$data = array('upload_data' =>$this->upload->data());
//yüklenen resmin adını alıyoruz
$img_id = $data["upload_data"]['file_name'];
//veri tabanına yükleme işlemi yapmak için gerekli bilgilerin olduğu diziyi oluşturuyoruz
$date=array(
"resim_ad"=>$_FILES["resim"]['name'],
"resim_url"=>$img_id
);
//veritabanında kişinin resim bilgilerini güncellemek için metodumuzu çağırıyoruz.
$result=$this->kullanici_model->update(array("id"=>$id),$date);
//veritabanında güncelleme işlemi başarılı ise
if($result){
//controlerımızın adını yazıp yönlendirme yapıyoruz
redirect("welcome");
}
else{
//yükleme işlmei başarısız ise tekrar resim seçme sayfasını çağırıyoruz
redirect("welcome/newresim/$id");
}
}
}
Son olarak eklenen resimleri kişimizin bilgileri ile birlikte gösterelim.Bunun için welcome_message.php viewimize img ekliyoruz.img in src sine de resim klasörümüzdeki yolu yazıyoruz.Kullanıcı bilgilerini zaten çektiğimiz için contorlerda herhangi bir değişiklik yapmamıza gerek yok.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome to CodeIgniter</title>
</head>
<body>
<div id="container">
<h1>Merhaba Dünya!</h1>
<form role="form" action="<?php echo base_url("welcome/add_Kullanici") ?>" method="post">
<input type="text" name="kullanici_adi"> <br>
<input type="text" name="kullanici_soyadi"> <br>
<button type="submit" >Gönder</button>
</form>
</div>
<br><br>
<div>
<?php foreach ($kullnaicilar as $kbilgi) {
?>
<li> <img
width="80"
src="<?php echo base_url("resim") . "/" .$kbilgi->resim_url ?>">
<div><?php echo $kbilgi->k_ad." ".$kbilgi->k_soyad ?> <a href="<?php echo base_url("welcome/delete_kullanici/$kbilgi->id") ?>">Sil</a>| <a href="<?php echo base_url("welcome/update_kullaniciPage/$kbilgi->id") ?>">Güncelle</a>|
<a href="<?php echo base_url("welcome/newresim/$kbilgi->id") ?>">Resim Ekle</a>
</div>
</li>
<?php } ?>
</div>
</body>
</html>
Ekran çıktımız.
Son olarakte kişi silme işleminde klasöre kaydettiğimiz resmi de silelim.Bunun için delete_kullnaici metodunu aşağıdaki gibi değiştiriyoruz.
public function delete_kullanici($id){
//ilk olarak silinecek kullanıcı id isne göre kullanıcıyı getiriyoruz
$kullanici = $this->kullanici_model->get(array("id" => $id));
//kullanıcının resminin url sini alıyoruz
$file_name = FCPATH ."resim/$kullanici->resim_url";
//resmmi unlink ile kaldırıyoruz
if(unlink($file_name)){
//eğer resim dosyadan silindi ise veritabanından resmi siliyoruz
$delete=$this->kullanici_model->delete(array("id"=>$id));
//veritabanından silme işlemi başarıle ile gerçekleştirilirse
if($delete){
//gelen verileri tutacak sınıf nesnesi üretiyoruz
$data=new stdClass();
//gelen verileri nesnemize atıyoruz
$data->kullnaicilar=$this->kullanici_model->getAll();
//view i çağırıp gelen verileri view e gönderiyoruz
$this->load->view('welcome_message',$data);
}
}
}
Model ve controler sınıfımızın son halleri.
kullanici_model.php
<?php
class kullanici_model extends CI_Model
{
//model yapıcı fonksiyonumuz
public function __construct()
{
parent::__construct();
// ekleme yapacağımız tablomuzun adını burda ekliyoruz
//her defasında yazmıyalım diye
$this->table = "kullanici";
}
//veritabanına ekleme işlemini yaptığımız metotumuz
//parametre olarak bir array alıyor
public function insert($data=array()){
//ilk parametre eklenecek tablo,ikincisi eklenecek data
$insert=$this->db->insert($this->table,$data);
return $insert;
}
public function getAll(){
//veri tabanımızdan kullanici adlı tablodan tüm sonuçları getiren sorgu
$select=$this->db->get($this->table)->result();
return $select;
}
//id ye göre kullanıcı getiren metot
public function get($where=array()){
//kullanıcıyı getiren satır sadece tek satır döndürür
$row = $this->db->where($where)->get($this->table)->row();
return $row;
}
public function delete($where=array()){
//veri tabanından parametre olarak gelen id deki kişiyi silen kısım
//delete metodunda ilk parametre tablo ismi diğeri where kısmı kisi neye göre silinecekse o biz gelen id değerine göre sileceğiz.
$delete=$this->db->delete($this->table,$where);
return $delete;
}
public function update($where=array(),$data){
//veri tabanından parametre olarak gelen id deki kişiyi güncelleyen kısım
$this->db->where($where);
$update=$this->db->update($this->table, $data);
return $update;
}
}
?>
welcome.php contoler
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {
//sınıfımızın yapıcı fonksiyonu
public function __construct()
{
//ilk önce üst sınıfın yapıcı fonksiyonu çağrılır
parent::__construct();
//model sınıfımızı yüklüyoruz.
$this->load->model("kullanici_model");
}
public function index()
{
//url ye controlerımızn ismi yazıldığında ilk olarak index metodu çağrılır.
//bir standat sınıf nesnesi oluşturup mddelden gelen değerleri atıyoruz.
$data=new stdClass();
$data->kullnaicilar=$this->kullanici_model->getAll();
//viewimizi çağırıp modelden gelen değerleri viewimize gönderiyoruz
$this->load->view('welcome_message',$data);
}
public function add_Kullanici(){
$ad=$this->input->post("kullanici_adi");
$soyad=$this->input->post("kullanici_soyadi");
//gelen verileri bir diziye aktarıyoruz "k_ad","k_soyad" veritabanımızdaki kolon adları
$data=array("k_ad" => $ad ,
"k_soyad" => $soyad
);
//aldığımız değerleri kayıt için model sınıfımızın insert metodunu çağırıyoruz
//gelen sonucu bir değişkene atıyoruz.
$insert=$this->kullanici_model->insert($data);
//insert başarılı ise gerçekleşmişse viewimizi çağırıyoruz
if($insert){
$this->load->view("kullanici");
}
}
public function delete_kullanici($id){
//ilk olarak silinecek kullanıcı id isne göre kullanıcıyı getiriyoruz
$kullanici = $this->kullanici_model->get(array("id" => $id));
//kullanıcının resminin url sini alıyoruz
$file_name = FCPATH ."resim/$kullanici->resim_url";
//resmmi unlink ile kaldırıyoruz
if(unlink($file_name)){
//eğer resim dosyadan silindi ise veritabanından resmi siliyoruz
$delete=$this->kullanici_model->delete(array("id"=>$id));
//veritabanından silme işlemi başarıle ile gerçekleştirilirse
if($delete){
//gelen verileri tutacak sınıf nesnesi üretiyoruz
$data=new stdClass();
//gelen verileri nesnemize atıyoruz
$data->kullnaicilar=$this->kullanici_model->getAll();
//view i çağırıp gelen verileri view e gönderiyoruz
$this->load->view('welcome_message',$data);
}
}
}
public function update_kullaniciPage($id){
//güncelleyeceğimiz kişinini bilhgilerini tutmak için nesne oluşutruyoruz
$data=new stdClass();
//id sini bildiğimiz kişinini bilgileri getiriyoruz
$data->kullnaicilar=$this->kullanici_model->get(array("id"=>$id));
//aldığımız bilgileri güncelleme sayfasını yükleyip bilgileri view e gönderiyoruz
$this->load->view('kullanici_guncellePage',$data);
}
public function update_kullanici($id){
$ad=$this->input->post("kullanici_adi");
$soyad=$this->input->post("kullanici_soyadi");
//gelen verileri bir diziye aktarıyoruz "k_ad","k_soyad" veritabanımızdaki kolon adları
$data=array("k_ad" => $ad ,
"k_soyad" => $soyad
);
$update=$this->kullanici_model->update(array("id"=>$id),$data);
//UPDATE işlemi başarılı ise kullanıcıları çekip viewimizi çağırıyoruz
if($update){
//gelen verileri tutacak sınıf nesnesi üretiyoruz
$data=new stdClass();
//gelen verileri nesnemize atıyoruz
$data->kullnaicilar=$this->kullanici_model->getAll();
//view i çağırıp gelen verileri view e gönderiyoruz
$this->load->view('welcome_message',$data);
}
}
public function newresim($id){
$data["id"] =$id;
$this->load->view("new_resim",$data);
}
public function add($id){
//resim ekleneceği klasör
$config['upload_path'] = 'resim/';
//eklenecek resimin tipi
$config['allowed_types'] = 'gif|jpg|png';
//ekleme işleminde resmin adını şifreli bir şekilde kaydetmek için
$config['encrypt_name'] = true;
//upload kütüphanesini oluşturduğumuz confige göre yüklüyoruz
$this->load->library('upload', $config);
//dosya yükleme işlemini yapıyoruz
if ( ! $this->upload->do_upload("resim"))
{
//eğer yükleme işlemi başarısız olursa
//hata dizimizi oluşturuyoz ve hatamızı alıyoruz
$error = array('error' => $this->upload->display_errors());
//hataları yazdırıyotuz
print_r($error);
}
else{
//resim yükleme işlemi başarılı olursa
//yüklenen resmin blgilerini alıyoruz
$data = array('upload_data' =>$this->upload->data());
//yüklenen resmin adını alıyoruz
$img_id = $data["upload_data"]['file_name'];
//veri tabanına yükleme işlemi yapmak için gerekli bilgilerin olduğu diziyi oluşturuyoruz
$date=array(
"resim_ad"=>$_FILES["resim"]['name'],
"resim_url"=>$img_id
);
//veritabanında kişinin resim bilgilerini güncellemek için metodumuzu çağırıyoruz.
$result=$this->kullanici_model->update(array("id"=>$id),$date);
//veritabanında güncelleme işlemi başarılı ise
if($result){
//controlerımızın adını yazıp yönlendirme yapıyoruz
redirect("welcome");
}
else{
//yükleme işlmei başarısız ise tekrar resim seçme sayfasını çağırıyoruz
redirect("welcome/newresim/$id");
}
}
}}
?>
Umarım faydalı olmuştur.Örneğimizin kodlarını
buradan indirebilirsiniz.Bir sonraki dersimizde görüşmek üzere.