
Öncelikle merhabalar bu makalemde sizlere Çoklu Veri Silme nasıl yapılır ? ondan bahsedeceğim. İlk olarak masaüstü bilgisayarımıza gerekli olan programları indirmemiz gerekiyor. Bunlar da aşağıdaki gibidir;
- WAMPSERVER
- HEİDSQL
- SUBLİMETEXT3
Bu Programlar değişkenlik gösterebilir. Örneğin WampServer kurulumu sırasında sizlerin bazı ekstra programlarını indirip kurmanız gerekiyor. Bunlar da görsel c++ programlarıdır. İşlemi yapmadan önce, WampServer programını başlatmanız gerekmektedir.
Programın yeşil ışığı yanacak ve tüm servislerin katlanmasından emin olacaktır. İşlemi yaparken, önce bir veri tabanı oluşturmamız gerekir. Bu veri tabanı ismi “çoklusil” şekilde oluşturulacaktır. Oluşturduğumuz veri tabanını tabloya bağlayan ismine “blog” adını verelim.
Çoklu Veri Silme | Veritabanı İşlemleri
Veri tabanı oluşturunca ismini “coklusil” yaptığını unutmayalım. Daha sonra “blog” adında tablo oluşturup sırasıyla alanları aşağıda görüldüğü gibi ekleyelim.


Böylece veri tabanı ve tablomuzu oluşturmuş durumdayız. Şimdi ise oluşturulmuş yerde veri tabanı PHP PDO ile sayfaya ekleme zamanı. Bu ayarlar PDO yapısından faydalanıp “fonc.php” sayfamızı oluşturuyoruz.
Bu sayfa veri tabanının bağlanması sayfa eğer ki veri tabanı herhangi bir bağlantı hatası var ise, hatasını yazdırıyoruz. Eğer veri tabanı oluşturulmadıysa bulaşık hatası gerçekleştiriyoruz.
Bundan dolayı oluşturulan veritabanınızın tamamını doğru yazdığınızdan ve doğru bir şekilde satır ve sütunları oluşturduğunuza emin olun. Çünkü hata ile karşılaşabilirsiniz.
fonc.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 {
$connect = new PDO($dsn, $username, $password, $options);
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection error: ' . $e->getMessage();
exit;
}
?>
Evet bu bilgilerin ardından ana sayfaya ve veri tabanı ile ilgili çağrılacak herhangi bir işlem için bu programa “include” etiketi ile diğer sayfalarımıza dahil olabilirsiniz.
Ana Sayfa bölümündeki tüm verilerin silinmesi için oluşturacağımız bazı şeyler;
- Tüm Verileri Sil Butonu
- Chechbok ile tümünü seç
- Tüm Seçilenleri Silmesi için Modal Uyarı Butonu
- Tüm verilerin silinmesi için gerekli olacak Java Script sayfası,
Bu özellikleri tüm kullanarak seçilmişleri silebiliriz. Fakat Ana Sayfa başına daha önce dosya içerisinde eklenmiş olan eski fotoğrafları silmemiz için “bağlantıyı kaldır” seçeneğini seçebilirsiniz. Bu sayede eski kayıtlı dosyaları silebiliyoruz.
<!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="tumunusil.js"></script>
<?php
include('fonc.php'); // We include our database on our page
if (isset($_POST['sil'])) { // Checking if the deletion Checkbox is Checked
$verisec = implode(', ', $_POST['sil']); // We pass it to the variable "$selecteddata" that comes with Checkbox
$query = $connect->prepare('select * FROM `blog` WHERE `id` IN (' . $verisec . ')'); // We get the IDs from the database
$query->execute(); //executing query and getting data
while ($result = $query->fetch()) { // Incoming data is returned with a while loop
@unlink('img/' . $result["photo"]);// Old files (photos) are deleted. optional, you can not use this code
}
$query = $connect->prepare('DELETE FROM `blog` WHERE `id` IN (' . $verisec . ')'); // Our deletion query according to incoming data IDs
$query->execute(); // Running Query
if ($query) { // If our query worked, we are redirecting to our index.php page
header("location:index.php");
}
}
?>
BootStrap eklentisinden “modal” eklentisini kullanarak uyarı mesajını oluşturalım. Modal içerisinde bulunan düğme kısmındaki id bölümüne değişken atıyoruz.
Değişken ismine ise “tümünüsil” adını veriyoruz. Daha sonra kullanıcı verilerinin silinmesinden emin ise veri tabanı üzerinden silme işlemini gerçekleştiriyoruz.
Modal ile Uyarı İşlemleri

İlk olarak ana sayfa kısmında herhangi bir checkbox ekliyoruz daha sonra id kısmına “tumunusec” adını veriyoruz. Eğer bu checkbox tıklandıysa veri tabanı üzerinden gelen tüm verileri seçer ve tüm verileri silmesi için hazırda olur. Onun dışında kullanıcı tek tek veri silmek isteyebilir.
Bundan dolayı while döngüsü ile tekrarlayan verilere bir checkbox daha ekliyoruz. Daha sonra checkbox name kısmına “sil[]” yazıyoruz. Ancak veri tabanı ile bu değişkeni kontrol edip verilerin tek tek silmesini sağlamalısınız.
<?php
$query = $connect->prepare("SELECT * FROM blog"); // Retrieving data from database
$query->execute(); // Running Our Query
while ($result=$query->fetch()) // Data from database is returned with While Loop.
{ // With the start we have data
?>
<tbody>
<td>
<!--We use Checkbox to identify deleted Dataz-->
<div class="checkbox">
<input class="chck" type="checkbox" name="sil[]"
value="<?php echo $result['id']; ?>"><!--We specify a name for the "name" part of the checkbox to be recognized for our multiple deleteme query.-->
<label for="<?php echo $result['id']; ?>"></label> <!--We are sending the ID from the database to Checkbox-->
</div>
</td>
<td><?= $result['id']?></td>
<th><img src="img/<?= $result["photo"] ?>" width="150px"/></th>
<td><?= $result['title']?></td>
<td><?= $result['content']?></td>
</tbody>
<?php
} // With End of While, we pull our data and our query ends.
?>
Çoklu Veri Silme Ana Sayfamız ve Tüm Kodlar

index.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="tumunusil.js"></script>
<?php
include('fonc.php'); // We include our database on our page
if (isset($_POST['sil'])) { // Checking if the deletion Checkbox is Checked
$verisec = implode(', ', $_POST['sil']); // We pass it to the variable "$selecteddata" that comes with Checkbox
$query = $connect->prepare('select * FROM `blog` WHERE `id` IN (' . $verisec . ')'); // We get the IDs from the database
$query->execute(); //executing query and getting data
while ($result = $query->fetch()) { // Incoming data is returned with a while loop
@unlink('img/' . $result["photo"]);// Old files (photos) are deleted. optional, you can not use this code
}
$query = $connect->prepare('DELETE FROM `blog` WHERE `id` IN (' . $verisec . ')'); // Our deletion query according to incoming data IDs
$query->execute(); // Running Query
if ($query) { // If our query worked, we are redirecting to our index.php page
header("location:index.php");
}
}
?>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-8">
<!-- We add a Form to our table, it must be a Form, otherwise the data will not be posted, it will not work. -->
<form action="" method="post">
<!-- Our table-->
<table class="table table-hover">
<!-- We make our Selected Delete Button to give a Warning with Modal.-->
<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">Tüm Verileri Sil</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 veriler silinecek. Onaylıyor musunuz?</h3></div>
<div class="modal-footer">
<button type="submit" class="btn btn-danger font-18 "><i class="fa fa-trash"> Seçili Olanları Sil</i></button>
<button class="btn btn-secondary" type="button"
data-dismiss="modal">İptal
</button>
</div>
</div>
</div>
</div> <!-- End of our delete selected modal-->
<thead class="thead-dark">
<th>
<!--Select All at the Top of Our Table We place our checkbox in the thead part of our table-->
<div class="checkbox">
<input type="checkbox" id="tumunusec" value=""> <!--We give an id to our Checkbox and select all of them with javascript codes. -->
</div>
</th>
<th>ID</th>
<th>Foto</th>
<th>Başlık</th>
<th>Açıklama</th>
</thead>
<?php
$query = $connect->prepare("SELECT * FROM blog"); // Retrieving data from database
$query->execute(); // Running Our Query
while ($result=$query->fetch()) // Data from database is returned with While Loop.
{ // With the start we have data
?>
<tbody>
<td>
<!--We use Checkbox to identify deleted Dataz-->
<div class="checkbox">
<input class="chck" type="checkbox" name="sil[]"
value="<?php echo $result['id']; ?>"><!--We specify a name for the "name" part of the checkbox to be recognized for our multiple deleteme query.-->
<label for="<?php echo $result['id']; ?>"></label> <!--We are sending the ID from the database to Checkbox-->
</div>
</td>
<td><?= $result['id']?></td>
<th><img src="img/<?= $result["photo"] ?>" width="150px"/></th>
<td><?= $result['title']?></td>
<td><?= $result['content']?></td>
</tbody>
<?php
} // With End of While, we pull our data and our query ends.
?>
</table>
</form>
</div>
</div>
</div>
<!--When we click on the "deleteall" checkbox, we add our javascript code so that all checkboxes are checked-->
<script type="text/javascript">
$(document).ready(function () {
$('#tumunusec').on('click', function () {
if ($('#tumunusec:checked').length == $('#tumunusec').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>
güncel indirme linki –> indir
Diğer makalelerime göz at –> php pdo satirici duzenleme