Поставлена задача - внедрить в административную панель CMS checkbox, позволяющие массово удалять данные из базы данных. Система не моя, а хрензнаетоткуда взята Погуглив на эту тему подредактировал cms Интегрировал в tpl PHP: <input type=\"checkbox\" name=\"{$_POST['itemid']}\"> и PHP: <?php // проверка на существование данных в переменной if (!isset($_POST['itemid'])) { die("Вы не выбрали элемент!"); } // присваивние переменных $_POST['itemid'] = $itemid; $col = 0; // обрабатываем данные массива, переменной $check_del foreach ($itemid as $check) { // счетчик количества выделенных элементов $col = $col + 1; $itemid = null; echo "Элемент ".$check." удален!!!<br>"; // ПРИ НЕОБХОДИМОСТИ ВЫ МОЖЕТЕ ИСПОЛЬЗОВАТЬ НИЖЕ ПРИВЕДЕННЫЕ ФУНКЦИИ, УБРАВ КОММЕНТАРИЙ /* и в конце */ //***** удаление выделенных элементов из базы данных ***************************** $table_bd = "modulecataloguegroups"; // название таблицы из которой надо удалить выделенный элемент $result = mysql_query ("DELETE FROM ".$table_bd." WHERE id='".$check."'"); //********************************************************************************* // ************************************************************** // вывод результата с автоматическим определнием окончаний // определение окончаний чисел от 1 до 5 if ($col > 1 and $col < 5) { $t1 = 'а'; $t2 = 'о'; } // определение окончаний чисел от 4 до 21 if ($col > 4 and $col < 21) { $t1 = 'ов'; $t2 = 'о'; } echo "<br>".$col." элемент".$t1." успешно удален".$t2."!"; // ************************************************************** ?> } При попытке удаления данных из базы данных checkbox, выдает ошибку но ничего не удаляет: Уважаемые, в чем же дело? В Цикле? Или в том, что неправильно указал массивы?
Да, $_POST['itemid'] = $itemid; Замни на, $itemid = $_POST['itemid']; Code: $result = mysql_query ("DELETE FROM ".$table_bd." WHERE id='".$check."'"); Без фильтрации не ок запросы делать, через DELETE вроде с базы лишнего не выташиш но начудить наудалять можно.
Фильтрацию я передвинул на второй план. Нечего фильтровать, если вроде запросы идут, но не исполняются. Переставил местами, сделал фильтрацию - а результат все тот же. В самой cms параметры передаются по другому: PHP: if(($_GET['ctype']=='group')||($_GET['ctype']=='groupdelimg')||($_GET['ctype']=='groupimageupload')||($_GET['type']=='groupupdate')){ $sql = "SELECT * FROM `modulecataloguegroups` WHERE `id` = '".$_GET['itemid']."'"; $result = mysql_query($sql); $line = mysql_fetch_array($result, MYSQL_ASSOC); Может из-за того, что везде $_GET['itemid'], а я указываю как $_POST['itemid']?
Один полностью сплошной корявый скрипт *=__= Фильтрацию делать надо для того, чтобы sql запрос не внедрили и не получили нужные данные. Хотя в твоём случае это уже будет не критично, т.к. доступ в админку нужен, а если его получат, то и твой дырявый скрипт нахрен не понадобится. get - передача параметров в урле. http://site.com/admin/delete.php?item_id=666 Code: <input type="checkbox\" name=\"{$_POST['itemid']}\"> {$_POST['itemid']} везде в шаблоне именно так происходит подстановка айдишки на страницу? Если нет, то сделай так как в других местах шаблона. К тому же если ты хочешь использовать цикл для обработки (а по другому будет неправильно), то имя надо указывать так HTML: <input type="checkbox\" name=\"itemid[]\" value=\"{$_POST['itemid']}\"> Хотя о какой массовости при таким коде (как я се вижу его по отрывку) может идти речь. Вот тебе алгоритм. 1. шаблон рисует страницу со строками в которых твой чек бокс HTML: <input type="checkbox\" name=\"itemIdsToDelete[]\" value=\"{$currentItemId}\"> 2. ты что-то там нажимаешь и методом указанным в <form method="ИМЯ МЕТОДА GET or POST"> отправляются данные на сервер. 3. принимаешь свой массив $toDelete = $_ИМЯМЕТОДА_ОТПРАВКИ_ДАННЫХ['itemIdsToDelete']; 4. В цикле перебираешь массив $toDelete и делаешь запрос к базе на удаление. 5. Формируешь хтмл с ответом о статусе удаления (сохранения, хз чего там у тя). UPDATE. Вытащишь, например если включено отображение sql ошибок.