下の表からわかるように、ID が 1 のユーザーは合計で 10 ポイントを持って
います。私がしようとしているのは、フォーム$edit_points
から送信された 1 つの数値をループスルーしてユーザー 1 から減算する
ことです。この数値は、たとえば次 のようになります。
$edit_points = 6
は、最初のレコードから 4 を引き
、次に次のレコードに移動し、残りの 2 だけを引き、
ループから抜け出します。
UserID | TotalPoints
-------------------
1 | 4
1 | 4
1 | 2
4 | 3
3 | 3
5 | 4
これは私がこれまでに得たものです
$pointLeft = $edit_points;//sent from form
while($point = mysqli_fetch_array($output)){
if($pointLeft > $point["TotalPoints"]){//if pointsLeft more than this record
$remainder = $pointLeft-$point["TotalPoints"];//get remainder
$query2 = "UPDATE pointstable SET TotalPoints=0 WHERE UserID=".$UserID;
$output2 = $mysqli->query($query2);
}elseif($pointLeft < $point["TotalPoints"]){
$remainder = $point["TotalPoints"] - $pointLeft;
$query2 = "UPDATE pointstable SET TotalPoints=".$remainder." WHERE UserID=".$UserID;
$output2 = $mysqli->query($query2);
}
$pointLeft = $remainder;
}
それはある程度機能し、残りが保持する最後の値と同じ値をすべてのレコードに入力するようです。ブレークを試み、最初の if の上に if ($pointLeft<=0) を配置しまし
たが、何も機能しません。
助けはありますか?または、できればphpを使用してそれを行うより良い方法