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ıyoruzif ( ! $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ıyotuzprint_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ı iseif($result){//controlerımızın adını yazıp yönlendirme yapıyoruzredirect("welcome");}else{//yükleme işlmei başarısız ise tekrar resim seçme sayfasını çağırıyoruzredirect("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> <imgwidth="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ıyoruzif(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ştirilirseif($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
<?phpclass kullanici_model extends CI_Model{//model yapıcı fonksiyonumuzpublic 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ıyorpublic 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 metotpublic 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ı fonksiyonupublic function __construct(){//ilk önce üst sınıfın yapıcı fonksiyonu çağrılırparent::__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ıyoruzif($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ıyoruzif(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ştirilirseif($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ıyoruzif($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ıyoruzif ( ! $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ıyotuzprint_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ı iseif($result){//controlerımızın adını yazıp yönlendirme yapıyoruzredirect("welcome");}else{//yükleme işlmei başarısız ise tekrar resim seçme sayfasını çağırıyoruzredirect("welcome/newresim/$id");}}}}?>
Umarım faydalı olmuştur.Örneğimizin kodlarını buradan indirebilirsiniz.Bir sonraki dersimizde görüşmek üzere.
Hiç yorum yok:
Yorum Gönder