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

Форум MySQL

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

 

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

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

тема: удаление множества значений из бд
 
 автор: FaStY   (27.01.2006 в 09:04)   письмо автору
 
 

И снова чекбоксы: на форуме я нашел про удаление при помощи чекбоксов данных с файла. А не подскажите как это осуществить в MySQL базе?
Вот страница index.php



<?php
//подключение к базе данных
$link mysql_connect("localhost""fasty""")
  or die (
"Could not connect to MySQL");
 
//выбор базы
mysql_select_db ("mail2mail")
  or die (
"Could not select database");
//составление запроса
  
$query "SELECT pismoot, pismoto, theme, text, id, readed, date   FROM message  WHERE pismoto='$user' "$query ."ORDER BY  readed  DESC ";
  
$result mysql_query ($query)
    or die (
"Query failed");
    
$countrow=mysql_num_rows($result );
    print 
'Всего сообщений: '.$countrow.'<br>';
    
//составление запроса на новые сообщения
  
$new_query "SELECT pismoot, pismoto, theme, text, id, readed  FROM message  WHERE readed='1' AND  pismoto='$user' ";
  
$new_result mysql_query ($new_query)
    or die (
"Query failed");
    
$new_countrow=mysql_num_rows($new_result );
    
//проверка на количество новых писем
if ($new_countrow =='0'){

$new_countrow='нет';

}

    print 
'Новых сообщений: '.$new_countrow;
      
//table ne v cicle

     
print "<table border=0 ><form name='delete' method='post' action='delete_mes.php'><table width='100%' border='0' cellspacing='0'  >
  <tr>
  <td>действие</td>
    <td>тема</td>
    <td>от</td>
     <td>дата</td>
  </tr>  <tr>"
;
//начало цкла
while ( $row mysql_fetch_row ($result) ):
    
$ids $row[4];
    
$readed $row[5];

//проверка на новые письма
if (!  $readed =='0'){

$read=' (Новое)';

}
else {
$read'';
}
    
    
     print 
"
<td><input type='checkbox' name=''type[]' value='
$ids'></td>
    <td><a href='message.php?id=
$ids'>$row[2]  <font color='#FF0000'>$read </font></a></td>
    <td><a href='whrite.php?touser=
$row[0]'>$row[0] </a></td>
     <td>
$row[6]</td> </tr>
  "
;
  
//конец цикла
endwhile;
print 
" <input type=submit>
</table></form></table>"
;

?>

вот страница delete_mes.php



<META http-equiv=Content-Type content=text/html;charset=windows-1251>
<?php 
//подключение к базе данных
$link mysql_connect("localhost""fasty""")
  or die (
"Could not connect to MySQL");
 
//выбор базы
mysql_select_db ("mail2mail")
  or die (
"Could not select database");
//составление запроса

   
     
$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 message WHERE id='$id' ";
    
// Выполняем запрос 
    
if(!mysql_query($query)) 
    { 
      echo 
mysql_error()."<br>"
      echo 
$query."<br>"
    } 
  } 
?>   

Что неправильно?

   
 
 автор: WebTech   (27.01.2006 в 12:01)   письмо автору
 
   для: FaStY   (27.01.2006 в 09:04)
 

Ох, тяжело чужой код разгребать! :-)
В общем надо так. В форме надо каждому чекбоксу сделать уникальное имя, например id0, id1,id2 и т.д.

<input type="checkbox" name="id$i">

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

<input type="hidden" name="num_checkbox" value="$num">

здесь переменная $num содержит количество чекбоксов

Затем в файле-обработчике пишем

<?php
$num 
$_POST['num_checkbox'];
for (
$i=0$i<$num$i++)
{
// смотрим очередной чекбокс
$checkbox $_POST['id'.$i];
if (
$checkbox == 'on')
   {
   
// если чекбок отмечен, т.е. равен 'on', то выполняем запрос
   
$res mysql_query('delete from message where id='$i);
   if (!
$res)
      {
      echo 
'Не удалось удалить запись';
      exit;
      }
   }
}
?>

   
 
 автор: cheops   (27.01.2006 в 14:04)   письмо автору
 
   для: FaStY   (27.01.2006 в 09:04)
 

Решение вы найдёте в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=427

PS Вопросы, посвящённые MySQL лучше сразу размещать в форуме MySQL.

   
Rambler's Top100
вверх

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