[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удаление нескольких записей через checkbox
dmitruha
PHP не выдает ошибок, но и зписи не удаляются из базы.

<form action="drop_v_a.php" method="post">	

<?php mysql_query ("SET NAMES cp1251");

$result = mysql_query
("
SELECT id,naim
FROM egrul
"
);


$myrow = mysql_fetch_array($result);

do
{

echo $myrow['id'];
echo $myrow['naim'];
echo '<input type="checkbox" name="item[]" value="'.$myrow['id'].'" />';

}

while ($myrow = mysql_fetch_array($result));

?>
<p><input name="submit" type="submit" value="Удалить заявку" /></p>
</
form>

<?php mysql_query ("SET NAMES cp1251");


// Удалить сразу несколько записей можно
// при помощи запроса "DELETE FROM table_1 WHERE id IN (1,3,5,7)"
// Получаем список отмеченных checkbox

$type = $_POST[`type`];
if(!empty($type))
{
// Начинаем формировать переменную, содержащую этот список
// в формате "(3,5,6,7)"

$query = "(" ;
foreach($type as $val) $query.= "$val,";
// Удаляем последнюю запятую, заменяя ее закрывающей скобкой)
$query = substr($query, 0, strlen($query) - 1 ). ")" ;
// Завершаем формирование SQL-запроса на удаление
$query = "DELETE FROM egrul WHERE id IN ".$query;
// Выполняем запрос
if(!mysql_query($query))
{
echo mysql_error()."<br>";
echo $query."<br>";
} else {echo "OK!";}
}

?>





Спустя 10 минут, 38 секунд (23.07.2011 - 13:24) Haotarez написал(а):
1) никогда не используйте do{ } while(); для обработки рузультата запроса в mysql за исключением случая, когда вне зависимости от результата выборки как минимум 1 раз проход по циклу обязан произойти.
2)
$type = $_POST[`type`];
нет такого поля в форме следовательно дальнейший цикл невозможен.


Ларчик:
<form action="drop_v_a.php" method="post">    
<?php
mysql_query ("SET NAMES cp1251");
$result = mysql_query("SELECT id,naim FROM egrul");
$myrow = mysql_fetch_array($result);
while ($myrow = mysql_fetch_assoc($result)){
echo $myrow['id'];
echo $myrow['naim'];
echo '<input type="checkbox" name="item[]" value="'.$myrow['id'].'" />';
}
?>
<p><input name="submit" type="submit" value="Удалить заявку" /></p>
</
form>
<?php
mysql_query ("SET NAMES cp1251");
// Удалить сразу несколько записей можно
// при помощи запроса "DELETE FROM table_1 WHERE id IN (1,3,5,7)"
// Получаем список отмеченных checkbox

if(count($_POST['item'])) {
// Начинаем формировать переменную, содержащую этот список
// в формате "(3,5,6,7)"

$last_id = array_pop($_POST['item']);
$query = "(";
foreach($_POST['item'] as $val){
$query.= "{$val},";
}
// Завершаем формирование SQL-запроса на удаление
$query.= "{$last_id})";
$query = "DELETE FROM egrul WHERE id IN ".$query;
// Выполняем запрос
if(!mysql_query($query)){
echo mysql_error()."<br>";
echo $query."<br>";
} else {
echo "OK!";
}
}

?>

Спустя 51 минута, 32 секунды (23.07.2011 - 14:16) dmitruha написал(а):
C циклом while ($myrow = mysql_fetch_assoc($result)) не выводится первое поле. Скрипт все равно не работает (

Спустя 42 минуты, 6 секунд (23.07.2011 - 14:58) dmitruha написал(а):
Со скриптом разобрался. Цикл while do оставил.

<form action=drop_v_a.php method=post>
<?php mysql_query ("SET NAMES cp1251");

mysql_query ("SET NAMES cp1251");
$result = mysql_query ("

SELECT *
FROM egrul

"
,$db);/*Выбор всех полей из тадлицы filmbd*/

$myrow = mysql_fetch_array ($result);/*заносим в пер. первую запись*/

do {

printf("

<tr>
<td><input type='checkbox' name='type[]' value='%s'><br></td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>

</tr>


"
,$myrow["id"],$myrow["id"],$myrow["date"],$myrow["tv"],$myrow["naim"],$myrow["sv"],$myrow["tm"],$myrow["tg"],$myrow["mailp"],$myrow["spv"],$myrow["com"]);
/*Конец таблицы*/
} while ($myrow = mysql_fetch_array ($result)); /*Выполнять до тех пор пока истина в скобках*/

?>
<input type=submit></form>

Обработчик

<?php mysql_query ("SET NAMES cp1251");
// Удалить сразу несколько записей можно при
// помощи запроса "DELETE FROM base WHERE id IN (1,3,5,7)"
// Получаем список отмеченных флажков

$type = $_POST['type'];
if(!empty($type))
{
// Начинаем формировать переменную, содержащую этот список
// в формате "(3,5,6,7)"

$query = "(";
foreach($type as $val) $query .= "$val,";
// Удаляем последнюю запятую, заменяя её закрывающей скобкой )
$query = substr($query, 0, strlen($query) - 1).")";
// Завершаем формирование SQL-запроса на удаление
$query = "DELETE FROM egrul WHERE id IN ".$query;
// Выполняем запрос
if(!mysql_query($query))
{
echo mysql_error()."<br>";
echo $query."<br>";
}
}

?>

Спустя 2 часа, 38 минут, 8 секунд (23.07.2011 - 17:36) CyberOrcX написал(а):
dmitruha, мучаешься?

могу помочь за 250 рублей

icq: 256223066
skype: orcxcyber

код получишь полностью

Спустя 25 минут, 27 секунд (23.07.2011 - 18:01) Invis1ble написал(а):
dmitruha
Цитата
Цикл while do оставил.

1. не while-do, а do-while
2. зря
3.
Цитата
mysql_query ("SET NAMES cp1251");

mysql_query ("SET NAMES cp1251");

почему всего два раза? надо раз 10 smile.gif
4, 5, ....., n ..........

Спустя 11 минут, 26 секунд (23.07.2011 - 18:13) Haotarez написал(а):
Invis1ble
biggrin.gif да-да я вот тоже хотел написать что меньше 10 раз если не вызвать не прокатит запрос.

... и посеял агнец зла do { } while() семя в обработке результатов запроса и рожден был код и имя ему было дано Быдлокод...

Спустя 10 минут, 1 секунда (23.07.2011 - 18:23) Invis1ble написал(а):
CyberOrcX
думаю, уместнее было написать ТС об этом в личку, а не выставлять на всеобщее обозрение

Haotarez
да уж. Печальнее всего то, что автор, судя по всему, не нуждается в советах, поэтому "оставил". Ну типа работает и работает, а как - это уже 10-й вопрос.

Спустя 3 минуты, 5 секунд (23.07.2011 - 18:26) Haotarez написал(а):
Invis1ble
ну, наше дело маленькое, помочь по мере собственных знаний, а применять наши советы и помощь или нет - дело ТС.

Спустя 1 год, 21 день, 15 часов, 53 минуты, 25 секунд (15.08.2012 - 10:19) Kukaramba написал(а):
Так все таки вопрос остался. Почему он не выводит первую строку?

Спустя 11 минут, 48 секунд (15.08.2012 - 10:31) Winston написал(а):
Потому что нужно убрать строчку
Цитата (dmitruha @ 23.07.2011 - 14:13)
$myrow = mysql_fetch_array($result);

Спустя 37 минут, 20 секунд (15.08.2012 - 11:08) Игорь_Vasinsky написал(а):
просто делать в таком порядке

$query = mysql_query($sql);

if(mysql_num_rows($query))
{
while($row = mysql_fetch_assoc($query))
{
echo $row['name_ceil']; //и т.д.
}
}

else
echo 'Nothing to viewing';
Быстрый ответ:

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