|
автор: F_w (10.01.2005 в 06:34) |
|
| Есть проблема: как организовать удаление данных из базы данных. Т.е. я вывожу результаты из БД через цикл, но нужно чтобы каждый результат можно было удалить из БД. Т.е. против каждого результата должна находится кнопка "Удалить". | |
|
|
|
|
|
|
|
для: F_w
(10.01.2005 в 06:34)
| | Можно так сделать.
<table>
$field="field";
$sql="SELECT * FROM data_base"
$query=mysql_query($sql);
while ($row=mysql_fetch_array($query))
{
echo "<tr>";
echo "<td>".$row[$field]."</td>";
echo "<td><a href=delete.php?id=".$row['id'].">удалить строку</a></td>";
echo "<tr>";
}
</table>
|
файл delete.php
$sql="DELETE FROM data_base WHERE id=$id";
mysql_query($sql);
|
то есть в таблице должно быть ключевое поле 'id', по которому можно найти и удалить строку. | |
|
|
|
|
|
|
|
для: F_w
(10.01.2005 в 06:34)
| | Можно напротив каждого из элементов выводить checkbox, а кнопку для удаления одну - в этом случае можно удалять сразу несколько элементов:
<form action=handler.php method=post>
<input type='checkbox' name='type[]' value='1'>Первый флажок<br>
<input type='checkbox' name='type[]' value='2'>Второй флажок<br>
<input type='checkbox' name='type[]' value='3'>Третий флажок<br>
<input type='checkbox' name='type[]' value='4'>Четвёртый флажок<br>
<input type='checkbox' name='type[]' value='5'>Пятый флажок<br>
<input type='checkbox' name='type[]' value='6'>Шестой флажок<br>
<input type='checkbox' name='type[]' value='7'>Седьмой флажок<br>
<input type=submit>
</form>
|
Обработчик handler.php должен иметь следующий вид
<?php
// Удалить сразу несколько записей можно при
// помощи запроса "DELETE FROM base WHERE id IN (1,3,5,7)"
// Получаем список отмеченных флажков
$type = $_POST['type'];
if(!empty($type))
{
// Начинаем формировать переменную, содержащую этот список
// в формате "(3,5,6,7)"
$query = "(";
foreach($type as $val) $query .= "$val,";
// Удаляем последнюю запятую, заменяя её закрывающей скобкой )
$query = substr($query, 0, strlen($query) - 1).")";
// Завершаем формирование SQL-запроса на удаление
$query = "DELETE FROM base WHERE id IN ".$query;
// Выполняем запрос
if(!mysql_query($query))
{
echo mysql_error()."<br>";
echo $query."<br>";
}
}
?>
|
PS Только вместо value-значений следует подставлять реальные значения первичного ключа и HTML-форму генерировать в цикле.
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=427 | |
|
|
|
|
|
|
|
для: cheops
(10.01.2005 в 11:25)
| | А не проще организовать цикл?
// base_count функция подсчёта строк в запросе
<form action=handler.php method=post>
for ($i=1;$i<=base_count;$i++)
{
<input type='checkbox' name='type[]' value='<?echo $i;?>'><?echo $i?> флажок<br>
}
<input type=submit>
</form>
|
| |
|
|
|
|
|
|
|
для: Axxil
(10.01.2005 в 11:38)
| | Проще :))) цикл я развернул для наглядности. | |
|
|
|
|
|
|
|
для: cheops
(10.01.2005 в 11:25)
| | >и HTML-форму генерировать в цикле.
[записывает себе в ежедневник] Надо быть внимательнее... | |
|
|
|