Php`de Çoklu Kayıt Silme

Programlama06/09/2012


Varolan bir kayıt listesinden belli kayıtları seçerek işlem yaptırmak için kullandığım kodları paylaşıyorum.

Mesela aşağıdaki gibi bir tablomuz olsun;

CREATE TABLE `kisiler` (
`id` int(11) NOT NULL auto_increment,
`adisoyadi` varchar(50) NOT NULL,
PRIMARY KEY  (`id`)
)

Bu tablodaki kayıtları bir formda listeleyelim,

form.php

<form action="sil.php" method="post">
<?php $sql=mysql_query("select * from kisiler");
while($sonuc=mysql_fetch_array($sql)){
?>
<input type="checkbox" name="coklu[]" id="checkbox"  value="<? echo $sonuc['id'] ?>"/>
<?php echo $sonuc['adisoyadi']; ?>
<br/>
<? } ?>
<input type="submit" name="button" id="button" value="Sil" />
</form>

Kişilerin Ad Soyad'larını başlarında checkbox olacak şekilde listeledik. Kullanıcı istediklerini seçip Sil Butonuna basınca sil.php sayfasında seçili olan tüm kayıtlar bir dizi şeklinde gelecektir. Biz bu diziyi kullanıp kayıtları ya teker teker yada toplu olark tek bir seferde sildirebiliriz.

TekTek silmek için sil.php

$secilenler=$_POST['coklu'];
foreach($secilenler as $sil){
$sonuc=mysql_query("DELETE FROM kisiler WHERE id='".$sil."'");
}

Toplu tek seferde sildirmek için sil.php

if ($_POST) {
$secilenler = join(", ", $_POST['coklu']);/* veya $secilenler = implode($_POST['coklu'],', '); */
$sonuc = mysql_query("DELETE FROM kisiler WHERE id IN ($secilenler)");
echo ($sonuc) ? "Başarılı" die(mysql_error());
}

Her iki kodlada silme işlemi yapılabilir. Birincide her id için sonuç alınabilmekte diğerinde ise silinecek kayıtlar ard arda aralarına ',' konularak tek bir sql komutuyla silinmekte.

Etiketler: