我正在尝试为公告板脚本创建自定义奖牌/奖励系统。
我遇到问题的部分是每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
表非常自我解释 - 它拥有论坛板的用户。当用户满足奖牌的要求时,奖牌将被插入user_medals
表中,其中包含奖牌ID,用户ID和奖牌获奖时间。
但是,每次运行任务时,它都会插入超过30行(我使用的测试板只有两个用户,所以它应该只插入1行,因为只有1个用户满足了奖牌的要求对于至少有2个帖子的用户。)
有人可以帮我这个吗?
感谢。
答案 0 :(得分:1)
问题在于:
if($result['postnum'] >= $medal['postnum'])
使用每个循环输出$result['postnum']
和$medal['postnum']
的值以检查其值。您会发现第一个值始终大于或等于第二个值,因此循环始终执行。