Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: PHP+SQL: удаление данных
 
 автор: F_w   (10.01.2005 в 06:34)
 
 

Есть проблема: как организовать удаление данных из базы данных. Т.е. я вывожу результаты из БД через цикл, но нужно чтобы каждый результат можно было удалить из БД. Т.е. против каждого результата должна находится кнопка "Удалить".

   
 
 автор: axxil   (10.01.2005 в 11:03)   письмо автору
 
   для: 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', по которому можно найти и удалить строку.

   
 
 автор: cheops   (10.01.2005 в 11:25)   письмо автору
 
   для: 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($query0strlen($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

   
 
 автор: Axxil   (10.01.2005 в 11:38)   письмо автору
 
   для: 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>
  

   
 
 автор: cheops   (10.01.2005 в 11:58)   письмо автору
 
   для: Axxil   (10.01.2005 в 11:38)
 

Проще :))) цикл я развернул для наглядности.

   
 
 автор: Axxil   (10.01.2005 в 14:09)   письмо автору
 
   для: cheops   (10.01.2005 в 11:25)
 

>и HTML-форму генерировать в цикле.
[записывает себе в ежедневник] Надо быть внимательнее...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования