Удаление нескольких строк с помощью флажков, PHP и MySQL

Как следует из названия, я хочу удалить несколько строк из моей базы данных. Для этого у меня есть два файла – файл переднего конца, который генерирует таблицу, в которой отображаются файлы, которые пользователь может удалить, которые выбраны с помощью флажков.

Файл back end должен обрабатывать выбранные флажки и использовать оператор SQL для удаления выбранных файлов.

Проблема, с которой я столкнулась, заключается в передаче идентификатора выбранного файла с переднего конца на задний план. Код для обоих файлов приведен ниже:

Внешний интерфейс

//Build Table Query $query="SELECT * FROM documents"; $result= mysqli_query($con, $query) or die("Invalid query"); $count = mysqli_affected_rows($con); ?> <table width="400" border="0" cellspacing="1" cellpadding="0"> <tr> <td><form name="form1" method="post" action="deletefilesback.php"> <table width="800" border="0" cellpadding="3" cellspacing="2" bgcolor="#CCCCCC"> <tr> <td colspan="5" bgcolor="#FFFFFF" align="center"><strong>Delete Multiple Files</strong></td> </tr> <tr> <td align="center" bgcolor="#FFFFFF">#</td> <td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Title</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Description</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>File Location</strong></td> </tr> <?php while($row = mysqli_fetch_array($result)){ ?> <tr> <td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<?php echo $rows['id']; ?>"></td> <td bgcolor="#FFFFFF"><?php echo $row['id']; ?></td> <td bgcolor="#FFFFFF"><?php echo $row['title']; ?></td> <td bgcolor="#FFFFFF"><?php echo $row['description']; ?></td> <td bgcolor="#FFFFFF"><?php echo $row['doc_link']; ?></td> </tr> <?php } ?> <tr> <td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete Files"></td> </tr> </table> </form> </td> </tr> </table> 

Назад

 $delete = $_POST['checkbox']; //Then do what you want with the selected items:// foreach ($delete as $id) { $query="DELETE FROM documents WHERE id = '".$id."'"; $result= mysqli_query($con, $query) or die("Invalid query"); } //Show that the items have been successfully removed.// if (mysqli_affected_rows($con) > 0) { echo '<p>The selected items have been successfully deleted.</p>'; } else { echo '<p>An error has occurred while processing your request</p>'; } ?> 

В качестве примечания, как только это будет работать, я буду использовать функцию unlink для удаления файла на сервере, используя часть doc_link таблицы на лицевой стороне. благодаря

в html-странице это так

 <input name="checkbox[<?php echo $row['id']?>]" 

и в заднем конце делайте так

 foreach ($delete as $id => $val) { if($val=='checked'){ $query="DELETE FROM documents WHERE id = '".$id."'"; $result= mysqli_query($con, $query) or die("Invalid query"); } } 

** MYSQL Code ** Описание: этот код изначально создает базу данных для использования. В терминале MySQL:

 `CREATE database `tester`;` 

Теперь создайте таблицу для этой базы данных:

 `USE tester;` `CREATE TABLE `test_mysql` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(80) NOT NULL, `lastname` VARCHAR(80) NOT NULL, `e_mail` VARCHAR(100) NOT NULL) ENGINE = MYISAM;` 

Теперь вставьте некоторые записи в вашу вновь созданную таблицу:

 `INSERT INTO `test_mysql` (`id`, `name`, `lastname`, `e_mail`) VALUES (NULL, 'Billly', 'Blueton', 'bb5@phpeasystep.com'), (NULL, 'Jame', 'Campbell', 'jame@somewhere.com'), (NULL, 'Mark', 'Jackson', 'mark@phpeasystep.com'), (NULL, 'Linda', 'Travor', 'lin65@phpeasystep.com'), (NULL, 'Joey', 'Ford', 'fordloi@somewhere.com'), (NULL, 'Sidney', 'Gibson', 'gibson@phpeasystep.com');` 

Затем создайте файл PHP (HTML) с именем index.php:

** PHP и HTML-код **

 `<h1>Deleting Multiple Records using PHP &amp; MySQL</h1> <p>&nbsp;</p> <?php $host="localhost"; // Host name $username="root"; // Mysql username $password=""; // Mysql password $db_name="tester"; // Changed database name $tbl_name="test_mysql"; mysql_connect($host, $username, $password)or die("cannot connect"); mysql_select_db($db_name)or die("cannot select DB"); $sql="SELECT * FROM $tbl_name"; $result=mysql_query($sql); $count=mysql_num_rows($result); ?> <table width="400" border="0" cellspacing="1" cellpadding="0"> <tr><td><form name="form1" method="post" action=""> <table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC"><tr> <td bgcolor="#FFFFFF">&nbsp;</td> <td colspan="4" bgcolor="#FFFFFF"><strong>Delete multiple rows in mysql</strong> </td> </tr> <tr><td align="center" bgcolor="#FFFFFF">#</td> <td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Name</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Lastname</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Email</strong></td></tr> <?php while($rows=mysql_fetch_array($result, MYSQL_ASSOC)){ ?> <tr><td align="center" bgcolor="#FFFFFF"> <input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['id']; ?>"> </td><td bgcolor="#FFFFFF"><?php echo $rows['id']; ?></td><td bgcolor="#FFFFFF"> <?php echo $rows['name']; ?></td><td bgcolor="#FFFFFF"><?php echo $rows['lastname']; ?> </td> <td bgcolor="#FFFFFF"><?php echo $rows['e_mail']; ?> </td></tr> <?php } ?> <tr><td colspan="5" align="center" bgcolor="#FFFFFF"> <input name="delete" type="submit" id="delete" value="Delete"></td></tr> <?php if(isset($_POST['delete'])){ $checkbox = $_POST['checkbox']; for($i=0;$i<count($_POST['checkbox']);$i++){ $del_id = $checkbox[$i]; $sql = "DELETE FROM $tbl_name WHERE id='$del_id'"; print $sql; $result = mysql_query($sql);} if($result){echo "<meta http-equiv=\"refresh\" content=\"0;URL=index.php\">";}} mysql_close(); ?> </table></form></td></tr></table> <p>Record count: <?php echo number_format($count) ?></p>`