Yükleniyor ...

Üye giriş

E-posta adresiniz
Şifreniz
Şifremi unuttum

Üye Kayıt

Kullanıcı adı
E-posta adresiniz
Şifreniz
Şifre tekrar
Giriş yap

PHP - PDO ile çoklu veri silme

MySQL in kullanımı sayesinde kolay bir şekilde çoklu veri silebiliriz. Biz dersimizde "deneme" adlı bir veritabanı oluşturup bu veritabanı üzerinden örnek yapacağız. Deneme adlı veritabanımızı oluşturduktan sonra içerisine kategoriler adında bir tablo açalım. İsterseniz aşağıdaki kodu sql bölümüne yapıştırarak tabloyu oluşturabilirsiniz.

CREATE TABLE `deneme`.`kategoriler` ( 
	`kategori_id` INT NOT NULL AUTO_INCREMENT , 
	`kategori_baslik` VARCHAR(200) NOT NULL , 
	PRIMARY KEY (`kategori_id`)
) ENGINE = InnoDB;

Şimdi bir kaç tane test verisi ekleyelim. İsterseniz aşağıdaki kodu kopyalayıp SQL bölümüne yapıştırabilirsiniz.

INSERT INTO `kategoriler` (`kategori_id`, `kategori_baslik`) VALUES 
(NULL, 'PHP dersleri'), 
(NULL, 'Javascript dersleri'), 
(NULL, 'CSS dersleri'), 
(NULL, 'Java dersleri'), 
(NULL, 'Asp.net dersleri'), 
(NULL, 'C# dersleri')

Artık PHP kodlamasına geçebiliriz laughing. Şimdi bir tane php dosyası oluşturalım ve veritabanı bağlantımızı yapalım. 

<?php 

try {
	$db = new PDO("mysql:host=localhost;dbname=deneme;charset=utf8","root","");
} catch (Exception $e) {
	die($e->getMessage());
}

?>

Bu şekilde deneme adlı veritabanımıza bağlandık sizin bilgileriniz farklı ise bağlantınızı kendinize göre ayarlayın. Şimdi silme işlemine geçmeden önce verilerimizi listeletelim.

<?php
$listele = $db->query("SELECT * FROM  kategoriler");
$dizi = $listele->fetchAll(PDO::FETCH_ASSOC);
?>
<ul>
<form action="" method="POST">

<?php
foreach ($dizi as $row) {
?>
<li><input type="checkbox" name="kategori_id[]" value="<?php echo $row["kategori_id"];?>"><?php echo $row["kategori_baslik"];?></li>
<?php
}
?>
<button type="submit">Seçilenleri sil</button>
</form>
</ul>

Burda dikkat etmemiz gereken en önemli nokta checkbox'a verdiğimiz isimdir. Name değerini verdikten sonra köşeli parantezlerimizi açıp kapatıyoruz bu şekilde birden fazla değeri depolayabiliriz. Şimdi seçilen değerleri görelim. Aşağıdaki kodu veritabanı bağlantımızın hemen altına ekleyelim.

if($_POST)
{
	$id = $_POST["kategori_id"];
	echo "<pre>";
	print_r ($id);
	echo "</pre>";
}

Seçtiğimiz verilerinin id değerlerini dizi olarak gördük. Şimdi artık silme işlemini yapalım. Post edilme kısmını aşağıdaki gibi yeniden düzenleyelim.

if($_POST)
{
	$id = $_POST["kategori_id"];
	$in  = str_repeat('?,', count($id) - 1) . '?';  // Dizideki veri sayısı kadar soru işareti koy
	$sil = $db->prepare("DELETE FROM kategoriler WHERE kategori_id IN($in)"); // Soru işaretlerini sorguya ekle
	$sil->execute($id); // Seçilen id değerlerini gönder
	$hata = $sil->errorInfo();
	if($hata[2])
	{
		echo "Silme işlemi başarısız";
	}else
	{
		echo "Silme işlemi başarılı";
	}

}

Bu şekilde In kullanarak birden fazla seçilen veriyi silebiliriz. Eğer In yerine NOT IN yazarsak seçtiğimiz veriler dışındaki tüm verileri siler.

 

Yorumlar(0)

Yorum yapmak için lütfen giriş yapın veya üye olun