Codeigniter Veri Silme İşlemi

Codeigniter veritabanına veri eklemeyi bir önceki makalemde anlatmıştım.Şimdi ise veritabanında kayıtlı olan bir veriyi nasıl dinamik bir şekilde silebiliriz bunu görelim. Öncelikle elimizde bir view dosyası olacak ve burada veritabanından çekilmiş olan veriler , yanlarında ise silme işlemini yapacak ve her birinin kendine has id değeri olan linkler olacak. Her linkin silme id’si veritabanından dinamik çekilecek ve silme metodu id değerini otomatik olarak alacak ve Codeigniter Veri Silme İşlemi böylece yapılmış olacak. İlk olarak view dosyası ile silme işleminin ilk adımını gerçekleştirelim.

<h3>Son kayıtlar</h3>
<table class="table table-inverse">
    <?php foreach($bilgiler as $veri){ ?>
    <tr>
      <td><?=$veri['id']?></td>
      <td><?=$veri['name']?></td>
      <td><?=$veri['eposta']?></td>
      <td>
      <a class="btn btn-danger" href="<?php echo base_url(); ?>Anasayfa/verisil/<?=$veri['id']?>">Sil</a>
      </td>
      <td>
      <a class="btn btn-primary" href="<?php echo base_url(); ?>Anasayfa/duzenle/<?=$veri['id']?>">Düzenle</a>
      </td>
    </tr>
     <?php } ?>
</table>

Yukarıda veritabanından son kayıtları aldım. Diziden gelen değerleri parçalı halde gerekli tabloya ekledim. Yanlarına da onlara ait id değerini verisil metoduna ekledim. Artık 3. parametre olarak bir değer var. Bu değeri Controller dosyamızda belirtecek ve model dosyamıza öyle göndereceğiz. Şimdi Sil butonuna tıklandığında bizi direkt olarak Anasayfa Controller‘ında verisil metoduna gönderecek. Gelen id değerini de aşağıdaki kod ile alacağız ;

$id = $this->uri->segment(3);

Artık Controller dosyamızda bir index ve bir de verisil metodunu yazma bölümüne geçebiliriz.

<?php 
defined('BASEPATH') OR exit('No direct script access allowed');

class Anasayfa extends CI_Controller {
	function __construct()
	{
		parent::__construct();

	}

public function index(){		
          $this->load->view('anasayfa_view.php');
	}

public function verisil(){
		$this->load->model('verimodel');
		$id = $this->uri->segment(3);
		$sil = $this->verimodel->sil($id);
		if($sil==0){
			echo "başarısız";
		}else{
			redirect('Anasayfa/listele');
		}
	}

}

Yukarıda verisil metoduna bir istek geldiğinde ilk olarak verimodel dosyasını yüklüyoruz. (Onu şuan oluşturmadık.) Ardından id değerini yukarıdaki gibi aldık. $sil adında bir değişken var ve bu değişkende verimodel dosyasında birazdan belirleyeceğimiz sil metodunun sonucu tutulacak. Gerisi zaten bir if komutuna bakıyor. İşlem başarılı ise Listele sayfasına gönderiyoruz ve veri silinmiş yeni liste hazır karşımızda duruyor.

Şimdi ise model dosyamızı oluşturalım ve içerisinde bir sil metodu ile controller bölümünün işlev görmesini sağlayalım.

<?php

class verimodel extends CI_Model{
	function __construct(){
		parent:: __construct();
		$this->load->database();
	}
  
        function sil($id){
		$this->db->delete('users',array('id'=>$id));
	}
}

İşte bir satır kod ile fonksiyonda id değeriyle gelen veriyi silebiliyoruz. Tablo ismi ‘users’ ve id değeri gelen id’ye eşit olan değer gitti.

Ufak bir not  : Eğer yönlendirme ve veritabanı bölümlerinde sorun yaşarsanız Application/Config/Autoload dosyasında

$autoload['libraries'] = array(); 
burayı aşağıdaki ile değiştirin.
$autoload['libraries'] = array('database');
Ardından
----------------------------
$autoload['helper'] = array(); satırını da aşağıdaki gibi değiştirin.
$autoload['helper'] = array('url');

Artık her sayfanızda otomatik olarak veritabanı bilgileriniz çekilecek ve url kullanımınıza izin verilecek.

AuthorHarun ALP

Bu adam , bilgi sahibi olduğu konularda makalelerini daha bilgilendirici hale getirip görseller ile süslüyor ve seo uyumlu makaleler ortaya çıkarıyor. Güncel webmaster konularını işlemekten keyif alıyor ve genelde her makale aslında bir sorunun çözümü niteliğinde.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir