Ваш кодекс - абсолютная катастрофа.
1) Использование echo с повторной конкатенацией строк для вывода html. Посмотрите HEREDOC s, строки в двойных кавычках или просто выход из режима PHP (?>
) для вывода html.
2) Проверка POST путем поиска полей формы. Если вы хотите убедиться, что находитесь в состоянии POST, вместо этого выполните if ($_SERVER['REQUEST_METHOD'] === 'POST') { ... }
. Это на 100% надежно и не зависит от наличия (или отсутствия) определенных полей формы. Если данные были отправлены по почте, это утверждение оценивается как истинное ВСЕГДА.
3) Вы слепо встраиваете предоставленные пользователем данные в строки запроса SQL. Прочитайте о атаках SQL-инъекций , затем подумайте, что произойдет, если кто-то взломает вашу форму и отправит значение флажка ' or 1'
- попрощайтесь с содержимым таблицы флажков.
4) Похоже, у вас в строке вывода флажка "
:
[...snip...] method="post" value"'.$row->id.'" id="checkbox[]" "/></td>
^--here
, который почти наверняка «ломает» вашу форму и приводит к неверной интерпретации последующих атрибутов тега.
5) с другой стороны, мне придется дать вам так много - вы, по крайней мере, проверяете ошибки запросов в двух запросах на удаление, что всегда приятно видеть. Однако это огромный плюс в огромном поле негативов.