Как выбрать много пользователей через чекбоксы и выполнить sql запрос?
в общем у меня есть таблица куда через цикл 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 и адрес, где будет располагаться серверный скрипт обработки формы.
В скрипте примерно такой код:
<?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->prepare('insert into ваша таблица (атрибуты таблицы) values (значения атрибутов таблицы, кроме user_id, :user_id)'); $stmt->bindParam(':user_id', $selected_user_id, PDO::PARAM_INT); // еще байндим какие-то параметры у запроса, если есть плейсхолдеры, кроме :user_id. $stmt->execute(); // наконец, выполняем запрос $pdo->commit(); // фиксируем изменения в базе данных, если у вас соединение открыто не в режиме автокамита $inserted_user_count++; } $pdo = null; // закрываем соединение с базой } echo 'Обработано пользователей: '.$inserted_user_count; } ?> |
<?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->prepare('insert into ваша таблица (атрибуты таблицы) values (значения атрибутов таблицы, кроме user_id, :user_id)'); $stmt->bindParam(':user_id', $selected_user_id, PDO::PARAM_INT); // еще байндим какие-то параметры у запроса, если есть плейсхолдеры, кроме :user_id. $stmt->execute(); // наконец, выполняем запрос $pdo->commit(); // фиксируем изменения в базе данных, если у вас соединение открыто не в режиме автокамита $inserted_user_count++; } $pdo = null; // закрываем соединение с базой } echo 'Обработано пользователей: '.$inserted_user_count; } ?>
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для выбора множества пользователей через чекбоксы и выполнения 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 инъекций.