[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Checkbox - удаление нескольких записей.
Acidrain
Всем привет! Этот вопрос не раз освещался на страницах данного форума, но, к сожалению, содержания тредов мне не помогли. Поэтому выкладываю свой код:

<form method="post">
<div
style="width: 11640px; height: 950px; overflow: auto;">
<div
style="width: 540px; height: 950px; float: left;">
<?php

$sql = "SELECT * FROM message ORDER BY id_m ASC";
$message_result = mysql_query($sql, $db);
mysql_close();

while($row_message = mysql_fetch_array($message_result))
{
echo "<div id='del_messDiv' class='bdr'>
<div id='checkMessBox'><input type='checkbox' name='message[]' value='
$row_message[0]' /></div>
<div id='del_messAuthor'>
$row_message[2]</div>
<div id='del_messMessage'>
$row_message[1]</div>
</div>"
;
}

if(isset($_POST['delMessSub']))
{
if(!empty($_POST))
{
$val = array();

foreach($_POST['message'] as $value)
{
if(preg_match("|^[/d]*$|", $value))
{
$val[] = $value;
}
}

}


$sql_del = "DELETE FROM message WHERE id_m IN (".implode(",", $val).")";
mysql_query($sql_del, $db);

if(mysql_query($sql_del, $db))
{
echo "<script>window.location.href='./../panel.php?del_message'</script>";
}
}

?>
</div>
</div>
<div
id="admBtn" style="margin: 0 auto;"><input name="delMessSub" id="defBtn" type="submit" value="Удалить" /></div>
</form>



Мне необходимо удалить несколько записей, отмеченных чекбоксами, из базы данных. Но удаления не происходит.
Когда писал скрипт, то опирался на книгу Кузнецов/Симдянов "Головоломки на PHP для хакера".



Спустя 15 минут, 31 секунда (19.05.2012 - 22:06) redreem написал(а):
name='message[]' - у всех инпутов будет только такое имя. думается в этом проблема.
сделай

if(isset($_POST['delMessSub']))
{
print_r($_POST)

и посмотри что в посте приходит.

Спустя 12 минут, 1 секунда (19.05.2012 - 22:18) Acidrain написал(а):
Цитата (redreem @ 19.05.2012 - 18:06)
if(isset($_POST['delMessSub']))
{
print_r($_POST)

и посмотри что в посте приходит.

Выводит это:
один чекбокс: Array ( [message] => Array ( [0] => 5 ) [delMessSub] => Удалить )
два чекбокса: Array ( [message] => Array ( [0] => 4 [1] => 5 ) [delMessSub] => Удалить )

4 и 5 соответствуют значениям выбранных чекбоксов.

Спустя 7 минут, 12 секунд (19.05.2012 - 22:25) redreem написал(а):
напиши после

 $sql_del = "DELETE FROM message WHERE id_m  IN (".implode(",", $val).")";


echo $sql_del;

Спустя 1 минута, 22 секунды (19.05.2012 - 22:27) Acidrain написал(а):
Но стоит мне пропустить все через это конструкцию:

if(!empty($_POST))
{
$val = array();
foreach($_POST['message'] as $value)
{
if(preg_match("|^[/d]*$|", $value))
{
$val[] = $value;
}
}

}


то

print_r($val);

выглядит так: Array ( ) .

Спустя 1 минута, 54 секунды (19.05.2012 - 22:29) Acidrain написал(а):
Цитата (redreem @ 19.05.2012 - 18:25)
echo $sql_del;

DELETE FROM message WHERE id_m IN ()

Спустя (19.05.2012 - 22:29) redreem написал(а):
а $row_message[0] как выглядит?

Спустя 7 минут, 2 секунды (19.05.2012 - 22:36) Acidrain написал(а):
Цитата (redreem @ 19.05.2012 - 18:29)
а $row_message[0] как выглядит?

Да с этим все в порядке, не раз проверял. Каждому сообщению присваивается родной id.

Спустя 4 минуты, 54 секунды (19.05.2012 - 22:41) redreem написал(а):
это к тому, что для понимания регулярки нужно видеть что распарсивается. в регулярке может вместо * поставить +

Спустя 6 минут, 12 секунд (19.05.2012 - 22:47) Acidrain написал(а):

if(preg_match("|^[/d]*$|", $value))
{

}



Закомментировал это условие и все удалилось на ура!
Array ( [0] => 3 [1] => 4 [2] => 5 [3] => 6 [4] => 7 [5] => 8 )
DELETE FROM message WHERE id_m IN (3,4,5,6,7,8)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.