Как выбрать много пользователей через чекбоксы и выполнить sql запрос?

Ссылка скопирована
22 марта 2026 1 ответ

в общем у меня есть таблица куда через цикл for each выводятся пользователи так же там есть чекбоксы где в value id пользователей затем при нажатии добавить тест выходит модалка куда через js выводятся id выбранных пользователей , т.е эта часть с id уже работает, так вот мне надо взять их id через php условие и добавить в таблицу available tests id юзеров и самого теста тест есть в выпадашке

<?php if (isset($users) && is_array($users)) : ?>               <?php foreach ($users as $user) : ?>                 <tr>                   <th scope="row" class="applications-table__info"><?php echo $user['id']; ?></th>                    <td>                     <input type="checkbox" class="selectSingle" name="selected_users[]" value="<?php echo $user['id']; ?>" data-user-id="<?php echo $user['id']; ?>">                   </td>                    <td class="applications-table__info"><?php echo $user['name']; ?></td>                   <td class="applications-table__info"><?php echo $user['surname']; ?></td>                   <td class="applications-table__info"><?php echo $user['email']; ?></td>                   <td class="applications-table__info"><?php echo $user['pin']; ?></td>                   <td class="applications-table__info"><?php echo $user['birthdate']; ?></td>                   <td class="applications-table__info"><?php echo $user['region']; ?></td>                   <td class="applications-table__info"><?php echo $user['district']; ?></td>                   <td class="applications-table__info"><?php echo $user['school']; ?></td>                   <td class="applications-table__info"><?php echo $user['grade']; ?></td>                  </tr>               <?php endforeach; ?>             <?php endif; ?>

<?php if (isset($users) && is_array($users)) : ?> <?php foreach ($users as $user) : ?> <tr> <th scope="row" class="applications-table__info"><?php echo $user['id']; ?></th> <td> <input type="checkbox" class="selectSingle" name="selected_users[]" value="<?php echo $user['id']; ?>" data-user-id="<?php echo $user['id']; ?>"> </td> <td class="applications-table__info"><?php echo $user['name']; ?></td> <td class="applications-table__info"><?php echo $user['surname']; ?></td> <td class="applications-table__info"><?php echo $user['email']; ?></td> <td class="applications-table__info"><?php echo $user['pin']; ?></td> <td class="applications-table__info"><?php echo $user['birthdate']; ?></td> <td class="applications-table__info"><?php echo $user['region']; ?></td> <td class="applications-table__info"><?php echo $user['district']; ?></td> <td class="applications-table__info"><?php echo $user['school']; ?></td> <td class="applications-table__info"><?php echo $user['grade']; ?></td> </tr> <?php endforeach; ?> <?php endif; ?>

Дополнительно:

Фрагменты кода надо размещать в виде текста и оборачивать тэгом code для корректного отображения. Удобно делать кнопкой </>
Это обязательно, см.п.3.8 Регламента.
Сюда же относится traceback, ввод и вывод в консоли и другая структурированная текстовая инфа.

Ответы:

Оборачиваете html-таблицу в форму, с кнопочкой сабмита. Когда отметили нужное, пользователь должен засабмитить форму. В форме нужно указать метод передачи GET или POST и адрес, где будет располагаться серверный скрипт обработки формы.
В скрипте примерно такой код:

&lt;?php // считаем, что данные пришли по POST-у if(isset($_POST['submit'])) // проверяем, что приехали данные формы по submit, в кнопке сабмита атрибут name должен иметь значение submit {    $inserted_user_count = 0;    if(isset($_POST['selected_users'])) // присутствуют отмеченные пользователи    {       $pdo = new PDO(параметры подключения к базе);       foreach($_POST['selected_users'] as $selected_user_id)       {         $stmt = $pdo-&gt;prepare('insert into ваша таблица (атрибуты таблицы) values (значения атрибутов таблицы, кроме user_id, :user_id)');         $stmt-&gt;bindParam(':user_id', $selected_user_id, PDO::PARAM_INT);         // еще байндим какие-то параметры у запроса, если есть плейсхолдеры, кроме :user_id.         $stmt-&gt;execute(); // наконец, выполняем запрос         $pdo-&gt;commit(); // фиксируем изменения в базе данных, если у вас соединение открыто не в режиме автокамита         $inserted_user_count++;       }       $pdo = null; // закрываем соединение с базой    }    echo 'Обработано пользователей: '.$inserted_user_count; } ?&gt;

&lt;?php // считаем, что данные пришли по POST-у if(isset($_POST['submit'])) // проверяем, что приехали данные формы по submit, в кнопке сабмита атрибут name должен иметь значение submit { $inserted_user_count = 0; if(isset($_POST['selected_users'])) // присутствуют отмеченные пользователи { $pdo = new PDO(параметры подключения к базе); foreach($_POST['selected_users'] as $selected_user_id) { $stmt = $pdo-&gt;prepare('insert into ваша таблица (атрибуты таблицы) values (значения атрибутов таблицы, кроме user_id, :user_id)'); $stmt-&gt;bindParam(':user_id', $selected_user_id, PDO::PARAM_INT); // еще байндим какие-то параметры у запроса, если есть плейсхолдеры, кроме :user_id. $stmt-&gt;execute(); // наконец, выполняем запрос $pdo-&gt;commit(); // фиксируем изменения в базе данных, если у вас соединение открыто не в режиме автокамита $inserted_user_count++; } $pdo = null; // закрываем соединение с базой } echo 'Обработано пользователей: '.$inserted_user_count; } ?&gt;

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Антон С. Ответ

Для выбора множества пользователей через чекбоксы и выполнения SQL запроса, вам потребуется создать форму, в которой будут отображаться чекбоксы для каждого пользователя. Ниже приведен пример кода на языке PHP, который демонстрирует этот процесс:

```php
connect_error) {
die("Connection failed: " . $conn->connect_error);
}

// Выборка пользователей из базы данных
$sql = "SELECT id, username FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
echo "";
while($row = $result->fetch_assoc()) {
echo "" . $row['username'] . "
";
}
echo "";
echo "";
} else {
echo "0 results";
}

$conn->close();
?>
```

В этом примере мы создаем форму, в которой отображаются чекбоксы для каждого пользователя из базы данных. После выбора нужных пользователей и отправки формы, данные будут отправлены на страницу process.php для выполнения SQL запроса.

```php
connect_error) {
die("Connection failed: " . $conn->connect_error);
}

// Обработка данных из формы
if(isset($_POST['user'])) {
$users = implode(',', $_POST['user']);

// Выполнение SQL запроса
$sql = "SELECT * FROM users WHERE id IN ($users)";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
// Вывод результатов запроса
echo "ID: " . $row['id'] . " - Username: " . $row['username'] . "
";
}
} else {
echo "0 results";
}
}

$conn->close();
?>
```

В этом коде мы обрабатываем данные из формы, соединяем выбранных пользователей в строку и выполняем SQL запрос, который выбирает всех пользователей с указанными ID. Результаты запроса выводятся на экран.

Таким образом, вы можете выбрать много пользователей через чекбоксы и выполнить SQL запрос, используя PHP и MySQL. Не забудьте проверить входные данные перед выполнением SQL запроса, чтобы избежать SQL инъекций.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно