Çoklu Veri Silme Tablo ve Checkbox'lar
PHP,  WEB TEKNOLOJİLERİ

Çoklu Veri Silme PHP PDO MYSQL6 min read

Merhabalar
Çoklu Veri Silme (Multiple delete) ile uygulamamızda
Checkbox ile Tümünü Seç (MULTIPLE DELETE DATA) seçeneğiyle verileri ve verileri silerken fotolarını silmeyi görmüş olacaksınız.(Fotoları silmek isteğe bağlı gerekli ayarları uygulamanın index.php sayfasından ulaşabilirsiniz.)

Uygulamamız PHP PDO MYSQL ile Yapılmıştır

Tüm Ayrıntılı bilgiler kaynak dosyanın sayfasında açıklama satırıda ayrıntılı bir şekilde anlattım ayrıntıları uygulmanın index.php sayfasında görebilirisinz.

2 Gün önce yayınladığım JQuery Ajax ile Satır İçi Düzenleme | Kayıtları Yerinde Güncelleme PHP PDO linkine tıklayarak ulaşabilirsiniz.

Veritabanımız

Çoklu Veri Silme Veritabanı
MYSQL Çoklu Veri Silme Veritabanı

Veritabanındaki Veriler

Çoklu Veri Silme VT'deki Veriler
Veritabanın’deki Veriler

Veritabanı ayarlarımız (fonk.php).

<?php
$host = '127.0.0.1';
$dbname = 'coklusil';
$username = 'root';
$password = '';
$charset = 'utf8';
//$collate = 'utf8_unicode_ci';
$dsn = "mysql:host=$host;dbname=$dbname;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_PERSISTENT => false,
    PDO::ATTR_EMULATE_PREPARES => false,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    //   PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES $charset COLLATE $collate"
];
try {
    $baglanti = new PDO($dsn, $username, $password, $options);
    $baglanti->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Bağlantı hatası: ' . $e->getMessage();
    exit;
}
?>

Tablomuz ve checkbox’lar (index.php)

Çoklu Veri Silme Tablo ve Checkbox'lar
Anasayfa Tablo ve Checkbox’lar

Seçilenleri sil butonuna tıkladıktan sonra modal ile uyarı

Silme Uyarısı
Modal Silme Uyarısı

İndex.php

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Çoklu SİL</title>
	<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
	<script src="js/tumunusil.js"></script>

	<?php
	include('fonk.php'); // Veritabanımızı bağlıyoruz

	if (isset($_POST['sil'])) { // Eğer Silme İşlemi Checkbox ile Checked yapılıp yapılmadığı kontrol ediliyor
//print_r($_POST);exit();
		$silinecekler = implode(', ', $_POST['sil']);    // Checkbox ile gelen verileri $silinecekler değişkene aktrarıyoruz

		$sorgu = $baglanti->prepare('select * FROM `urunler` WHERE `id` IN (' . $silinecekler . ')'); // Veritabanından gelen ID'leri alıyoruz
		$sorgu->execute(); //sorgu çalıştırılıp veriler alınıyor

		while ($sonuc = $sorgu->fetch()) { // Gelen veriler while döngüsü ile döndürülüyor

        @unlink('img/' . $sonuc["foto"]);//eski dosyalar siliniyor. isteğe bağlı dilerseniz bu kodu kullanmayabilirsiniz
    }

    $sorgu = $baglanti->prepare('DELETE FROM `urunler` WHERE `id` IN (' . $silinecekler . ')'); // Gelen veriler ID'lere göre Silinme sorgumuz
    $sorgu->execute(); // Sorgu Çalıştırılıyor

    if ($sorgu) { // Eğer sorgumuz çalıştırysa index.php sayfamıza yönlendiriyoruz
    	header("location:index.php");
    }

}
?>
</head> 

<body>
	<div class="container">
		<div class="row">
			<div class="col-md-8">
				<!-- Tablomuza Form ekliyoruz , Form olması gereklidir , aksi takdirde veriler post edilmez , çalışmaz -->
				<form action="" method="post">
					<!-- Tablomuz-->
					<table class="table table-hover">

						<!-- Seçilenleri Sil Butonumuzu Modal ile Uyarı vermesini sağlıyoruz-->

						<a class="btn btn-danger font-18" href="#" data-toggle="modal"
						data-target="#tumunuSil"><i class="fa fa-trash"> Seçilenleri sil</i></a>
						<!-- Logout Modal-->
						<div class="modal fade" id="tumunuSil" tabindex="-1" role="dialog"
						aria-labelledby="exampleModalLabel" aria-hidden="true">
						<div class="modal-dialog" role="document">
							<div class="modal-content">
								<div class="modal-header">
									<h5 class="modal-title" id="exampleModalLabel">İçerik</h5>
									<button class="close" type="button" data-dismiss="modal"
									aria-label="Close">
									<span aria-hidden="true">×</span>
								</button>
							</div>
							<div class="modal-body">
								<h1 class="text-center">Önemli Uyarı !</h1>
								<h3 class="text-center">Seçilen tüm ürünler silinecektir.</h3></div>
								<div class="modal-footer">
									<button type="submit" class="btn btn-danger font-18 "><i class="fa fa-trash"> Seçilenleri
									sil</i></button>
									<button class="btn btn-secondary" type="button"
									data-dismiss="modal">Kapat
								</button>

							</div>
						</div>
					</div>
				</div>    <!-- Seçilenlenleri sil modalımızın Sonu-->


				<thead class="thead-dark">
					<th>     
						<!--Tablomuzun En Üstüne Tümünü Seç Checkboxumuzu tablomuzun thead kısmına yerleştiriyoruz-->
						<div class="checkbox">
							<input type="checkbox" id="tumunu_sec" value=""> <!--checkboxımıza id verip javascipt kodlarıyla tümünü seçilmesini sağlıyoruz  -->	
						</div>
					</th>
					<th>ID</th>
					<th>Foto</th>
					<th>Başlık</th>
					<th>İçerik</th>
				</thead>
				<?php
				$sorgu = $baglanti->prepare("SELECT * FROM urunler"); // Veritabanından veri çekiliyor
				$sorgu->execute();  //Sorgumuz Çalıştırılıyor

				while ($sonuc=$sorgu->fetch())  // Veritabanından Gelen veriler While Döngüsü ile döndrülüyor.

				{  // While Başlangıcı ile verilerimiz çoğaltılıyor

					?>

					<tbody>
						<td>
							 <!--Silinen Verileri belirlemek için Checkbox kullanıyoruz-->
							<div class="checkbox">
								<input class="chck" type="checkbox" name="sil[]" 
								value="<?php echo $sonuc['id']; ?>"><!--Çoklu Silme sorgumuza tanınması için checkboxumza name ile isim belirliyoruz-->
								<label for="<?php echo $sonuc['id']; ?>"></label>  <!--Checkboxuma veritabanından ID Gönderiyoruz-->
							</div>
						</td>
						<td><?= $sonuc['id']?></td>
						<th><img src="img/<?= $sonuc["foto"] ?>" width="150px"/></th>
						<td><?= $sonuc['baslik']?></td>
						<td><?= $sonuc['icerik']?></td>						
					</tbody>
					<?php 
				}  // While Sonu ile verilerimizi çekip Sorgumuz bitiyor

				?>

			</table>
		</form>
	</div>
</div>
</div>

 <!--Tümünü Seç checkboxumuza tıklayınca tüm checkboxların checked olması için javascript kodumuzu ekliyoruz-->
<script type="text/javascript">
	$(document).ready(function () {
		$('#tumunu_sec').on('click', function () {
			if ($('#tumunu_sec:checked').length == $('#tumunu_sec').length) {
				$('input.chck:checkbox').prop('checked', true);
			} else {
				$('input.chck:checkbox').prop('checked', false);

			}
		});
	});
</script>
<script src="js/jquery-3.4.1.min.js"></script>	
<script src="js/bootstrap.min.js"></script>
</body>
</html>

Bu uygulamayı birçok farklı projenizde kullanabilirisiniz. umarım sizler için faydalı bir yazı olmuştur. görüşlerinizi yorum veya emoji ile belirtebilirisiniz.

Uygulamayı ve veritabanını şuradan bulabilirsiniz ==> CokluVeriSil.zip

Görüşleriniz bizim için değerli , emoji bırakarak yada yorum yazarak görüşlerinizi bize belirtebilirsiniz. 

Herkese İyi Kodlamalar 🙂