It looks to me like you're upping the rank on all of them because your second query has no way to differentiate among those with the same rank. One (or more) is updated, then in a subsequent iteration the second query finds it again, and it's updated again. Or something like that; I'm not sure. Anyway, it might help to select a unique field (such as "player_id") in the first query and use that in the update query.
$updateallotherranks = mysql_query("SELECT player_id, rank FROM users
WHERE rank >= '$newrank' AND rank < '$rankupper'");
while ($updatealllink1 = mysql_fetch_array($updateallotherranks)) {
$otherplayeroldrank = $updatealllink1['rank'];
$newotherplayerrank = $otherplayeroldrank + 1;
$updateotherplayerranks = mysql_query("UPDATE users SET rank = '$newotherplayerrank'
WHERE rank = '$otherplayeroldrank'
AND player_id = $updatealllink1['player_id']");
}
I hope this helps, but I'm not real sure I read your code or your problem right. For instance, when you say it updates "all of them to the same value", do you mean all the records in the table, or all that are selected by the first query?
It would help others if, for future posts, you learn how to post highlighted code. The lack of highlighting and formatting, and your choices of variable names make it difficult.