[PHP-users 4088] Re: あるSQL テーブルの中でユニークなランクをつけられたユーザのランクを変更する場合の方法

kz-ml php-users@php.gr.jp
Mon, 3 Dec 2001 17:57:02 +0900


すいません、自己レスです。

> $useridはランクを変更したいユーザの固有ID
> $newrank は上記ユーザの新ランク
>
> function move($userid, $newrank){
> 	$sql = "UPDATE テーブル SET ランク=ランク+1 WHERE ランク>=$newrank";
> 	mysql_query($sql);
> 	$sql = "UPDATE テーブル SET ランク=$newrank WHERE ユーザID=$userid";
> 	mysql_query($sql);
> 	$sql = "SELECT ユーザID FROM テーブル ORDER BY ランク,ユーザID ASC";
> 	$i = 0;
> 	while($row=mysql_fetch_array(mysql_query($result))){
> 		$neworder[$i] = row['ユーザID'];
> 		$i++;
> 	}
> 	foreach($neworder as $k=>$v) {
> 		mysql_query("UPDATE テーブル SET ランク=$k WHERE ユーザ
> ID=$v");
> 	}
> }
>

上記の関数ですが、もう少し簡単にできたみたいです。。

function move($userid, $newrank){
	$sql = "UPDATE テーブル SET ランク=ランク+1 WHERE ランク>=$newrank";
	mysql_query($sql);
	$sql = "UPDATE テーブル SET ランク=$newrank WHERE ユーザID=$userid";
	mysql_query($sql);
	$sql = "SELECT ユーザID FROM テーブル ORDER BY ランク,ユーザID ASC";
	$i = 0;
	while($row=mysql_fetch_array(mysql_query($result))){
		mysql_query("UPDATE テーブル SET ランク=$i WHERE ユーザID=$row[ユーザ
ID]");
		$i++;
	}
}