- Подробности
-
Категория: PHP. Базы данных
Удаление и выборка нескольких записей
В web-программировании, особенно при создании различных панелей администрирования, часто встает задача множественного выбора или удаления сразу нескольких записей из базы данных. Пусть имеется таблица items, содержащая два поля: первичный ключ таблицы id и текстовое поле title.
Для удаления записей обычно создается HTML-форма с набором флажков:
<input type="checkbox" name="item[]" value="5" /><br/>
<input type="checkbox" name="item[]" value="7" /><br/>
<input type="checkbox" name="item[]" value="12" /><br/>
<input type="checkbox" name="item[]" value="25" /><br/>
<input type="checkbox" name="item[]" value="32" /><br/>
Скрипт, формирующий список элементов input формы, и удаляющий выбранные записи может выглядеть так:
<?php
echo '<h2>Список</h2>';
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">';
$query = "SELECT id, title FROM items WHERE 1";
$res = mysql_query( $query );
echo '<table border="1">';;
echo '<tr><th>ID</th><th>Наименование</th><th>Удл.</th></tr>';
while ( $item = mysql_fetch_array( $res ) )
{
echo '<tr>';
echo '<td>'.$item['id'].'</td>';
echo '<td>'.$item['title'].'</td>';
echo '<td><input type="checkbox" name="item[]" value="'.$item['id'].'" /></td>';
echo '</tr>';
}
echo '</table>';
echo '<input type="submit" name="submitForm" value="Удалить отмеченные" />';
echo '</form>';
if ( isset ( $_POST['item'] ) )
{
$ids = implode( ',', $_POST['item'] );
$query = 'DELETE FROM items WHERE id IN ('.$ids.')';
mysql_query( $query );
header( 'Location: '.$_SERVER['PHP_SELF'] );
}
?>
Массив $_POST['item'] содержит ID всех отмеченных checkbox-ов (не отмеченные на сервер не передаются). Запрос к БД на удаление выглядит так
DELETE FROM items WHERE id IN (6,9,11,12);
Если стоит задача не удаления записей, а их выборки, то вместо оператора DELETE следует использовать оператор SELECT.