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

Форум PHP

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

 

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

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

тема: функция удаления из субд через checkbox
 
 автор: elenaM   (22.06.2007 в 14:18)   письмо автору
 
 

посмотрите пожалуста с чем проблема, как правильно сделать чтоб можно было удалять сразу несколько строк
в цикле
<input name='type[]' type='checkbox' value='1'>


оброботка
if (isset($_POST['del']))
{
$type=$_POST['type'];
$query="(";
foreach($type as $val)$query.="$val,";
$query=substr($query,0, strlen($query)-1).")";
$query="DELETE from Diski where id in .$query";
if (!mysql_query($query))
{
echo " Ошибка<br>";
echo $query."<br>";
}
} или где посмотреть пример

   
 
 автор: cheops   (22.06.2007 в 15:00)   письмо автору
 
   для: elenaM   (22.06.2007 в 14:18)
 

Сообщения об ошибках какие-нибудь выводятся? Здесь удобнее воспользоваться функцией implode
<?php
  
if (isset($_POST['del'])) 
  { 
     
$query="DELETE from Diski where id in (" .implode(",",$_POST['type']) .")"
     if (!
mysql_query($query))
     {
       echo 
" Ошибка<br>";
       echo 
$query."<br>"
    }
  } 
?>

   
 
 автор: elenaM   (22.06.2007 в 15:05)   письмо автору
 
   для: cheops   (22.06.2007 в 15:00)
 

Нет никаких сообщений об ошибках нет, пустой экран
Может с формой что то не так

while($row=mysql_fetch_array($result))
{
echo "<tr><td width='10'><input name='type[]' type='checkbox' value='1'> </td><td>",
$row['Name'],"</td>
<td>", $row['CID_Name'], "</td>
<td>", $row['Price'],"</td>
</tr>";

}
echo"</table>";
echo"<input type='submit' value= 'Удалить' name='del'></form>\n";

   
 
 автор: elenaM   (22.06.2007 в 15:10)   письмо автору
 
   для: elenaM   (22.06.2007 в 15:05)
 

Notice: Undefined index: type in z:\home\localhost\www\magazin\del.php on line 8

Warning: implode(): Bad arguments. in z:\home\localhost\www\magazin\del.php on line 8
Ошибка
DELETE from Diski where id in ()
если не отметить ничего , то выдает

   
 
 автор: Unkind   (22.06.2007 в 15:11)   письмо автору
 
   для: elenaM   (22.06.2007 в 15:05)
 

Собственно, тут и нет формы...Где открытие тега "<form>"?

   
 
 автор: elenaM   (22.06.2007 в 15:12)   письмо автору
 
   для: Unkind   (22.06.2007 в 15:11)
 

$result=mysql_db_query("magazin","select*from Diski");
echo "<html><head></head> <body><div style ='margin-left:.2in'>
<h3>Какой товар вас интересует</h3>\n";
echo"<form method='post' action='del.php'>\n";
echo "<Table border='1' width='100%'>";
echo "<tr>";
echo "<TH>Выбор</TH><TH>Наименование</TH><TH>Категория</TH><TH>Цена</TH> ";
echo "</tr>";

while($row=mysql_fetch_array($result))
{
echo "<tr><td width='10'><input name='type[]' type='checkbox' value='1'> </td><td>",
$row['Name'],"</td>
<td>", $row['CID_Name'], "</td>
<td>", $row['Price'],"</td>
</tr>";

}

echo"</table>";
echo"<input type='submit' value= 'Удалить' name='del'></form>\n";


?>

   
 
 автор: Unkind   (22.06.2007 в 15:25)   письмо автору
 
   для: elenaM   (22.06.2007 в 15:12)
 

echo "<tr><td width='10'><input name='type[]' type='checkbox' value='1'> </td><td>",
А почему value='1'? По идее должно быть что-то вроде

<input name='type[]' type='checkbox' value='" . $row["id"] . "' />


Notice: Undefined index: type in z:\home\localhost\www\magazin\del.php on line 8
Вы хотя бы один чекбокс отметили?

   
 
 автор: elenaM   (22.06.2007 в 15:31)   письмо автору
 
   для: Unkind   (22.06.2007 в 15:25)
 

Нет не отметила не один,
пример из книги
echo "<tr><td width='10'><input name='type[]' type='checkbox' value='1'> </td><td>",
не могу найти как правильно написать, я не знаю принципов checkbox',

   
 
 автор: Unkind   (22.06.2007 в 15:41)   письмо автору
 
   для: elenaM   (22.06.2007 в 15:31)
 


<?php
$_POST
['type'] = isset($_POST['type']) ? (array) $_POST['type'] : array();
$_POST['type'] = array_map("intval"$_POST['type']);

    if(isset(
$_POST['del']) && !empty($_POST['type']))  
    {  
    
$query="DELETE FROM `Diski` WHERE `id` IN (" .implode(","$_POST['type']) .")";  

        if(!
mysql_query($query)) 
        { 
            echo(
            
"Ошибка<br />\r\n" 
            
$query "<br />\r\n"
            
);  
        } 
    } 
?>

   
 
 автор: GAV   (22.06.2007 в 15:40)   письмо автору
 
   для: elenaM   (22.06.2007 в 14:18)
 

Попробуй так:

if (isset($_POST['del'])) 

  $type=$_POST['type'];
  $query="(";
  foreach($type as $val)$query.=$val.",";
  $query=substr($query,0, strlen($query)-1).")";
  $query="DELETE from Diski where id in ".$query; 
  if (!mysql_query($query))
  {
    echo " Ошибка<br>";
    echo $query."<br>"; 
  }
}

   
 
 автор: elenaM   (22.06.2007 в 15:44)   письмо автору
 
   для: GAV   (22.06.2007 в 15:40)
 

Всем огормнейшее спасибо заработало!

   
Rambler's Top100
вверх

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