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

Форум MySQL

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

 

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

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

тема: Удаление сразу несколько записей с помощью checkbox.
 
 автор: safe_mod   (15.05.2006 в 16:01)   письмо автору
 
 

Есть начало кода

        $sql="SELECT * FROM '".$config['prefix']."_news' ORDER BY news_id DESC";
        $res=mysql_query($sql);
        while($news=mysql_fetch_array($res)) 
        {
        echo "
        <tr><td colspan=\"2\" class=\"admin_menu2\"><input type=\"checkbox\" name=\"id\" id=\"$news[news_id]\" value=\"$news[news_id]\">$news[news_title] @ $news[news_date]</td></tr>";
        }
...
    $id = intval($_POST['id']);
    $sql = "DELETE FROM ".$config['prefix']."_news WHERE news_id='$id' ";
    mysql_query($sql);
    if (!mysql_error())

А конец не как не могу написать
Суть такова когда отмечаешь срузу несколько checkbox он удаляет только одну запись стоящию в самом низу. Помогите пожалуста сколько читал не как не могу понять как сделать. Может кто поделиться готовым скриптом? Буду очень благодарен.

   
 
 автор: WebTech   (15.05.2006 в 16:23)   письмо автору
 
   для: safe_mod   (15.05.2006 в 16:01)
 

Надо каждому чекбоксу назначить уникальное имя, например, счетчик цикла, а в качестве значения присваивать id записи. Кроме того, в обработчик надо будет передать количество чекбоксов. Например,


$num_news = mysql_num_rows($sql)
$i = 0;
while($news=mysql_fetch_array($res))
{
$i++;
echo '<input type="checkbox" name="id'.$i.'" value="'.$news['news_id'].'">';
}
echo '<input type="hidden" name="num_news" value="'.$num_news.'">';


Обработчик

for ($i=0; $i<$_POST['num_news']; $i++)
{
$id = $_POST['id'.$i];
if ($id)
   {
   $sql = 'DELETE FROM '.$config['prefix'].'_news WHERE news_id='.$id;
   $res = mysql_query($sql);
   }
}

   
 
 автор: Trianon   (15.05.2006 в 16:28)   письмо автору
 
   для: WebTech   (15.05.2006 в 16:23)
 

Не стоит делать кучу SQL-запросов там, где можно обойтись одним. :)

   
 
 автор: Trianon   (15.05.2006 в 16:24)   письмо автору
 
   для: safe_mod   (15.05.2006 в 16:01)
 

Позволяем форме создать массив id-ов, для чего добавляем квадратные скобки после имени:
" ...  <input ... name=\"id[]\" value=".$news['news_id']." > ... "


А в обработчике обрабатываем этот массив, формируя список:
<?
$list 
= array();
foreach(
$_POST['id'] as $id$list[] = intval($id);
$list implode(',' $list);
$sql "DELETE FROM ...... WHERE news_id IN ($list) ";
?>

   
 
 автор: WebTech   (15.05.2006 в 16:27)   письмо автору
 
   для: Trianon   (15.05.2006 в 16:24)
 

ИМХО, Trianon красивее показал :-)

   
 
 автор: safe_mod   (15.05.2006 в 18:46)   письмо автору
 
   для: WebTech   (15.05.2006 в 16:27)
 

Спасибо все работает

   
Rambler's Top100
вверх

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