Вам необходимо поместить флажок в тег формы и отправить его с помощью кнопки. Похоже, что вы в данный момент просто нажимаете на ссылку, которая не будет отправлять ничего, кроме данных в ссылкеЯ специально упустил ссылки, чтобы все было просто. На что обратить внимание:
- постоянно использует
get
(или post)
как в форме, так и в сценарии обработки. Я использовал post
здесь, но это должно работать в любом случае, пока вынепротиворечивый. - флажок использует синтаксис массива
name="devices[]"
. Это позволяет PHP обращаться к нему как к обычному массиву. - Следующий пример кода предназначен для запуска в одном скрипте. Формаотправляет самому себе, когда атрибут
action
опущен. Вы можете легко разделить его на форму и скрипт обработки, добавив атрибут action
к форме, который указывает на скрипт обработки. Наконец, вам придется вырезать / вставитькод PHP под формой в сценарий обработки.
Script:
<?php
// Not sure what your data source is, so I've just hardcoded an array for now.
$devices = [
['id' => 1],
['id' => 2],
['id' => 3],
];
?>
<!-- I decided to use `post` here but `get` would work too as long as you're consistent. -->
<!-- Also, notice I didn't include an `action` here. If you don't, it will submit to itself; which I wanted to do in this case to keep it as simple as possible. -->
<form method="post">
<?php foreach ($devices as $device): ?>
<div>
<label>
<!-- Give it a name using the array syntax. -->
<input type="checkbox" name="devices[]" value="<?php echo $device['id']; ?>">
<!-- Output a label. -->
<?php echo $device['id']; ?>
</label>
</div>
<?php endforeach; ?>
<input type="submit" name="submit" value="Submit Form">
</form>
<?php
// The form was submitted, so process it.
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// At least 1 _checked_ checkbox was submitted.
// If no checkboxes were checked, this array would not exist. That's why you should check for its existance before trying to access it.
if (isset($_POST['devices']) && is_array($_POST['devices'])) {
// Loop over the array to access each selected item.
foreach ($_POST['devices'] as $deviceId) {
var_dump($deviceId);
}
}
}