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

Форум MySQL

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

 

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

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

тема: как из базы данных удалить за раз несколько полей
 
 автор: zorg84   (18.08.2011 в 13:34)   письмо автору
126.3 Кб
 
 

Cделал работает но как всегда появляется другая проблема, Допустим я отметил три пункта для удаления они удалились но выводится три раза надпись "Ваш комментарий удален!" и три раза блок с навигацией одним словом всё выводиться как в цикле сколько отмеченых столько и выводится

Подскажите что не правильно сделал



<?php 
include ("lock.php");
include (
"blocks/bd.php");
if (!empty(
$_POST['id'])) {$id $_POST['id'];}

foreach( 
$id as $idd ){
 
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>обрабочик</title>
<link href="style.css" rel="stylesheet" type="text/css">



</head>

<body>
<table width="1006" align="center" class="transparent">
  <tr>
   <?php include ("blocks/header.php");?>
  </tr>
  
  
  <tr>
    <td height="508" align="center" valign="top" bgcolor="#000000"><table width="1000" border="0" class="semiopacity">
      <tr>
      
      
       <?php include ("blocks/lefttd.php");?>
       <td width="642" align="left" valign="top" bgcolor="#000000">
     
               <?php 
if (isset($id))


{
$query "DELETE FROM  comments 
          WHERE id='
$idd'";
$result mysql_query($query) or die(mysql_error());

if (
$result == 'true') {echo "<p>Ваш коментарий успешно удалена!</p>" ;}
else {echo 
"<p>Ваш коментарий не удален!</p>";}

}
         
else 

{
echo 
"<p>Вы запустили данный фаил без параметра id и поэтому, удалить коментарий невозможно </p>";
}
}    
     
?>
   </td>
      <?php include ("blocks/righttd.php");?>
      </tr>
   
   
    </table></td>
  </tr>
  <tr>
    <?php include ("blocks/downtd.php");?>
  </tr>

База данных простая id и text

  Ответить  
 
 автор: cheops   (18.08.2011 в 14:09)   письмо автору
 
   для: zorg84   (18.08.2011 в 13:34)
 

Не осуществляйте удаление в цикле, а формируйте запрос, который бы удалял сразу все записи
<?php
  
...
  
$query "DELETE FROM  comments  
          WHERE id IN ("
.implode(", "$_POST['id']).")'";
  ...
?>

  Ответить  
 
 автор: zorg84   (18.08.2011 в 14:48)   письмо автору
 
   для: cheops   (18.08.2011 в 14:09)
 

Заменил но нечего не получилось подскажи что не так сделал

  Ответить  
 
 автор: zorg84   (18.08.2011 в 15:01)   письмо автору
 
   для: zorg84   (18.08.2011 в 14:48)
 

да ещё я передаю не просто переменную а массив
  input name='id[]' type='checkbox' value='%s'>     

  Ответить  
 
 автор: cheops   (18.08.2011 в 15:11)   письмо автору
 
   для: zorg84   (18.08.2011 в 14:48)
 

1) Записи удаляются?
2) Цикл foreach убрали?

PS Выведите запрос $query при помощи echo - как он сейчас выглядит.

  Ответить  
 
 автор: zorg84   (18.08.2011 в 15:14)   письмо автору
 
   для: cheops   (18.08.2011 в 15:11)
 

подожди сейчас проверю

  Ответить  
 
 автор: zorg84   (18.08.2011 в 15:17)   письмо автору
 
   для: zorg84   (18.08.2011 в 15:14)
 

Цикл foreach удалил

-----------------------------------
DELETE FROM comments WHERE id IN (331)'

Ваш коментарий не удален!
-----------------------------

  Ответить  
 
 автор: cheops   (18.08.2011 в 15:19)   письмо автору
 
   для: zorg84   (18.08.2011 в 15:17)
 

Ага, кавычка просочилась, исправьте запрос следующим образом
<?php 
  
... 
  
$query "DELETE FROM  comments   
          WHERE id IN ("
.implode(", "$_POST['id']).")"
  ... 
?>

  Ответить  
 
 автор: zorg84   (18.08.2011 в 15:22)   письмо автору
 
   для: cheops   (18.08.2011 в 15:19)
 

id передаёт но выводит

DELETE FROM comments WHERE id IN (330, 331, 332, 333)

Ваш коментарий не удален!

  Ответить  
 
 автор: zorg84   (18.08.2011 в 15:23)   письмо автору
 
   для: zorg84   (18.08.2011 в 15:22)
 

вот на всякий случай структура базы




CREATE TABLE `comments` (
  `id` int(5) NOT NULL auto_increment,
  `post` varchar(5) NOT NULL,
  `author` varchar(100) NOT NULL,
  `text` text NOT NULL,
  `date` date NOT NULL,
  `email` varchar(250) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=334 ;

  Ответить  
 
 автор: zorg84   (18.08.2011 в 15:32)   письмо автору
 
   для: zorg84   (18.08.2011 в 15:23)
 

пропустил запрос
$query = "DELETE FROM comments
WHERE id IN (".implode(", ", $_POST['id']).")";
mysql_query($query) or die(mysql_error());
echo $query;


Большое спасибо

  Ответить  
 
 автор: cheops   (18.08.2011 в 15:35)   письмо автору
 
   для: zorg84   (18.08.2011 в 15:22)
 

Хм... странно, что вы сравниваете со строкой "true", так вообще не делают, обычно поступают так
<?php
...
if (
mysql_query($query)) {echo "<p>Ваш коментарий успешно удалена!</p>" ;} 
else {echo 
"<p>Ваш коментарий не удален!</p>".mysql_error();}
...
?>

  Ответить  
 
 автор: zorg84   (18.08.2011 в 15:43)   письмо автору
 
   для: cheops   (18.08.2011 в 15:35)
 

сейчас так и сделаю потому что как раз неправильно выводится при удалении пишется

" Ваш коментарий не удален "

  Ответить  
 
 автор: zorg84   (18.08.2011 в 16:00)   письмо автору
 
   для: zorg84   (18.08.2011 в 15:43)
 

Спасибо

  Ответить  
Rambler's Top100
вверх

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