Basically what is happening is with each iteration of the main foreach loop (foreach ($challenges as challenge)), it is adding records from the previous loop to $all_users. For example, after the first loop, $all_users = array('bob, brett, brian'). Those are all the users who completed the first challenge. So, the second loop should show only users who completed second challenge (we'll call them Rob, Randy, Roger), however when I print the results, $all_users = array('bob, brett, brian, rob, randy, and roger'). Third iteration shows those 6 + whoever else is new. I'm not sure what I am doing wrong, I included the full code in case you wanted a better idea. Would appreciate any help. Thanks!
CODE
$a = mysql_query("SELECT id, created FROM daily_challenges WHERE (DATE_FORMAT(created, \"%Y-%m-%d\")='2008-06-03')");
while ($row = mysql_fetch_assoc($a))
$challenges[]=array('id'=>$row['id'], 'created'=>date('Y-m-d', strtotime(''.$row['created'].'')));
foreach($challenges as $challenge)
{
$usrs = mysql_query("SELECT user_id FROM daily_challenge_votes WHERE poll_id=".$challenge['id']."");
while($row2 = mysql_fetch_assoc($usrs))
$all_users[] = array('user_id'=>$row2['user_id']);
foreach ($all_users as $user)
{
print "\n\n";
print "showing user: ";
print_r($user);
$q1 = mysql_query("SELECT poll_response_id FROM daily_challenge_votes WHERE user_id=".$user['user_id']." AND poll_id=".$challenge['id']." LIMIT 1");
$poll_response_id = mysql_fetch_assoc($q1);
$q2 = mysql_query("SELECT correct_choice FROM daily_challenge_responses WHERE id=".$poll_response_id['poll_response_id']." LIMIT 1");
$choice = mysql_fetch_assoc($q2);
$dr = mysql_query("SELECT daily_wins, daily_losses FROM daily_challenge_users WHERE user_id=".$user['user_id']." AND created=".$challenge['created']." LIMIT 1");
$daily_record = mysql_fetch_assoc($dr);
$ovr = mysql_query("SELECT total_wins, total_losses FROM daily_challenge_users WHERE user_id=".$user['user_id']." AND created=0000-00-00");
$overall_record = mysql_fetch_assoc($ovr);
if ($choice['correct_choice']=='1') {
if (empty($daily_record))
mysql_query("INSERT INTO `daily_challenge_users` (id, user_id, daily_wins, daily_losses, created) VALUES (NULL, ".$user['user_id'].", 1, 0, ".$challenge['created'].")");
else {
$updated_daily_wins = $daily_record['daily_wins'] + 1;
mysql_query("UPDATE daily_challenge_users SET daily_wins='".$updated_daily_wins."' WHERE user_id='".$user['user_id']."' AND created='".$challenge['created']."'");
}
if (empty($overall_record))
mysql_query("INSERT INTO `daily_challenge_users` (id, user_id, created, total_wins, total_losses) VALUES (NULL, '".$user['user_id']."', 0000-00-00, 1, 0)");
else {
$updated_total_wins = $overall_record['total_wins'] + 1;
mysql_query("UPDATE daily_challenge_users SET total_wins='".$updated_total_wins."' WHERE user_id='".$user['user_id']."' AND created=0000-00-00");
}
}
else {
if (empty($daily_record))
mysql_query("INSERT INTO daily_challenge_users (id, user_id, daily_wins, daily_losses, created) VALUES (NULL, '".$user['user_id']."', 0, 1, '".$challenge['created']."')");
else {
$updated_daily_losses = $daily_record['daily_losses'] + 1;
mysql_query("UPDATE daily_challenge_users SET daily_losses='".$updated_daily_losses."' WHERE user_id='".$user['user_id']."' AND created='".$challenge['created']."'");
}
if (empty($overall_record))
mysql_query("INSERT INTO daily_challenge_users (id, user_id, created, total_wins, total_losses) VALUES (NULL, '".$user['user_id']."', 0000-00-00, 0, 1)");
else {
$updated_total_losses = $overall_record['total_losses'] + 1;
mysql_query("UPDATE daily_challenge_users SET total_losses='".$updated_total_losses."' WHERE user_id='".$user['user_id']."' AND created=0000-00-00");
}
}
}
}