Как удалить отмеченные чекбоксом?

На PHP немного псевдокод сделал, но смыл того что есть показывает. Сейчас главное как-то по нажатию кнопки сделать массив, после этого буду думать как дальше передать в запрос на удаление.

Это в PHP:
$delete = array();

for ($i = 0; $i < $Num; $i++) {
  <tr>
  <td><form method="post" action=""><input type=checkbox name=delete[] value=$i></form></td>
  <td>$item</td>
  </tr>
}

if(isset($_POST['delete'])) {
  // Эмм... как массив-то из input собрать для удаления?
}


Это в HTML-части страницы:
<form method="post" action="">
<input type="submit" name="delete" value="Удалить" />
</form>
  • Вопрос задан
  • 4540 просмотров
Решения вопроса 1
@koigva
<form method="post">
	<input name="delete[]" value="1" type="checkbox">
	<input name="delete[]" value="2" type="checkbox">
	<input name="delete[]" value="3" type="checkbox">
    <input type="submit">
</form>

<?php
print_r($_POST);
?>

Получаем:
Array ( [delete] => Array ( [0] => 2 [1] => 3 ) )
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
BuriK666
@BuriK666
Компьютерный псих
<input type="checkbox" name="delete_elem[]" value="$i" />


if(isset($_POST['delete'])) {
  foreach ($_POST['delete_elem'] as $i) {
  // do delete element $i
  }
}
Ответ написан
Комментировать
nobodynoone
@nobodynoone
Если без JS, то тогда все делайте в форме и все :)
<form action="/action-url" method="post">
    <table>
        <tbody>
            <tr>
                <td>
                    <input name="delete[]" value="<?=$value; ?>" type="checkbox">
                </td>
            </tr>
        </tbody>
    </table>
    
    <input type="submit" value="Delete selected">
</form>
Ответ написан
Комментировать
lexxpavlov
@lexxpavlov
Программист, преподаватель
Вам надо сделать весь цикл внутри формы, а не создавать отдельные формы в каждой строке:
echo "<form method=\"post\" action=\"\">";
echo "<table>";
for ($i = 0; $i < count($items); $i++) {
  $id = $items[$i]['id'];
  $text = $items[$i]['text'];
  echo "  <tr>
    <td><label><input type=\"checkbox\" name=\"delete[]\" value=\"$id\"> Удалить</label></td>
    <td>$text</td>
  </tr>\n";
}
echo "</table>";
echo "<input type=\"submit\">";
echo "</form>";

Все отмеченные id, и только отмеченные, появятся в массиве $_POST['delete'].
С ними нужно уже делать то, что вам там надо - например, передать в SQL запрос DELETE.
Только помните, что в массиве могут прийти не только числа, хакер может передать туда строчки с sql-инъекцией.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы