掲示板スクリプト用のカスタムメダル/賞システムを作成しようとしています。PHPスクリプトのヘルプ
私が問題を抱えているのは、メダルを受け取ることができるユーザーを確認するために10分ごとに実行されるタスクです。
が// select all medals from database
$query = $db->simple_select("medals", "*", "");
$medals = $db->fetch_array($query);
// select users
$query_users = $db->simple_select("users", "*", "");
$results = $db->fetch_array($query_users);
foreach($medals as $medal)
{
foreach($results as $result)
{
if($result['postnum'] >= $medal['postnum'])
{
$insert = array(
"mid" => $medals['id'],
"muid" => $result['uid'],
"mtime" => TIME_NOW,
);
$db->insert_query("users_medals", $insert);
}
}
}
上記のコードのための意図は、ユーザーによって「ウォン」の対象のすべてのメダルを保持しているmedals
テーブルを照会することです:
は、ここに私の現在のコードです。 users
テーブルはかなり自明です - フォーラムボードのユーザーを保持します。ユーザーがメダルの要件を満たしている場合、メダルは、メダルID、ユーザーID、およびメダルが授与された時刻とともにuser_medals
テーブルに挿入されます。
しかし、タスクが実行されるたびに、30個以上の行が挿入されます(2人しかテストボードを使用していないので、1人のユーザーのみが少なくとも2つの投稿を持つユーザーのメダル)。
誰かが私にこれを手伝ってもらえますか?
ありがとうございました。
あなたは 'var_dump($ medals)'と 'var_dump($ results)'から得たものを投稿することができます –
メダルdbのすべてのpostnum値を結果dbのすべてのpostnum値と比較しているようです。あなたは1対1だけを比較したくないですか?同様に、結果の最初の行/列をメダルの最初の行/列と比較します。すべてをすべてと比較しているような気がしますが、あなたはIF文に複数のTRUEレスポンスを得る必要があります。 – bozdoz
私は問題を修正しました。私は間違った変数を使用していました... – Spencer