一度に複数のユーザーを削除できる管理領域があります。これは、削除を処理するコードの一部です。基本的に、ユーザー ID を調べて、チェック済みのマークが付けられた各 ID を削除します。
if ($_POST['doDelete'] == 'Delete') {
if (!empty($_POST['u'])) {
foreach ($_POST['u'] as $uid) {
$id = escape($uid);
$delete = Nemesis::query("DELETE FROM users WHERE id = '{$id}' AND id <> '{$_SESSION[user_id]}'");
if (!$delete) {
$msg->add('e', QUERY_ERROR);
redirect('users.php');
exit();
}
}
}
/* we need a way to iterate over users deleted */
$msg = new Messages();
$msg->add('s', QUERY_DELETE_SUCCESS);
redirect('users.php');
exit();
}
function get_user_name_from_id($user_id)
{
if ($_SESSION['user_level'] == ADMIN_LEVEL) {
$viewUserMod = 1;
} else {
$config = Nemesis::select("usr_view_cm", "config");
$row_config = $config->fetch_assoc();
$viewUserMod = $row_config['usr_view_cm'];
}
if (is_numeric($user_id) && $viewUserMod == 1) {
$sql = Nemesis::select("full_name", "users", "id = {$user_id}");
if ($sql->num_rows > 0) {
$user_name = $sql->fetch_assoc();
return $user_name['full_name'];
} else {
// user name cannot be matched with db, either error, or most likely user was deleted
return 'User ' . $user_id;
}
} else {
return $user_id;
}
}
「削除されたボブ、ジャック、ティム」QUERY_DELETE_SUCCESS
などを出力したいと言っているところに、ユーザーIDを使用して名前を取得する関数があります。問題は、反復が完了するとです。明らかに、それらのユーザーはデータベースに存在しなくなり、名前を取得できません。ループ中にこの関数を実行し、文字列または配列を作成する方法はありますか。メッセージの代わりに出力できますか?