チェックボックスと、ユーザーを「承認」できるボタンを備えたテーブルがあります。データベース内の単純な 1 は、承認されたことを示しています。エラーメッセージを表示できるように、ユーザーがすでに承認されているかどうかを最初に確認したいと思います。ただし、このコードで最終的に発生するのは、何らかの理由でコードが基になる sql を実行しますが、エラー メッセージをそのまま表示するか、!$check
常に成功メッセージを表示する場合です。さまざまなバリエーションを試しましたが、問題は $check sql ロジックにあると感じています。私はそれを見ることができないようです。
if ($_POST['doApprove'] == 'Approve') {
if (!empty($_POST['u'])) {
foreach ($_POST['u'] as $uid) {
$id = filter($uid);
$username[] = get_user_name_from_id($id);
$check = Nemesis::select("approved", "users", "id = '{$id}' AND approved <> '1'"); // issue?
$set_approve = Nemesis::update("users", "approved = '1'", "id = '{$id}'");
if ($check) { // issue?
$fail[] = $username;
} elseif (!$set_approve) {
$fail[] = $username;
} else {
$pass[] = $username;
$user_details = Nemesis::select("*", "users", "id = '{$id}'");
$ud_row = $user_details->fetch_assoc();
authMail('register', $ud_row['user_email'], $ud_row['pwd'], $ud_row['user_name'], NULL, 'admin');
}
}
}
$msg = new Messages();
if (!empty($pass)) {
$passed = implode(', ', $pass);
$message = "Approved: {$passed}";
$msg->add('s', $message);
}
if(!empty($fail)){
$failure = implode(', ', $fail);
$message = "Could not approve {$failure}";
$msg->add('e', $message);
}
redirect('users.php');
}