1

チェックボックスと、ユーザーを「承認」できるボタンを備えたテーブルがあります。データベース内の単純な 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');
}
4

1 に答える 1

1
   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("*", "users", "id = '{$id}'");
            $ud_row = $user_details->fetch_assoc();
            $set_approve = Nemesis::update("users", "approved = '1'", "id = '{$id}'");
            if ($ud_row['approved'] || !$set_approve) {
                $fail[] = $username;
            } else {
                $pass[] = $username;
                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');
}
于 2013-07-02T21:29:00.787 に答える