如何添加剩余值

vs3odd8k  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(212)
$get_data = "SELECT * FROM stats WHERE x < max_x and y < max_y";
$get_data_query = mysqli_query($conn,$get_data);

while ($data= mysqli_fetch_assoc($get_data_query)) {

    $update = "UPDATE stats SET 
                                x = x + (max_x / 11.11111111111111),
                                y = y + (max_y / 11.11111111111111)

              WHERE id = '".$data['id']."' ";

              mysqli_query($conn,$update); }

在上面的数据中,我有一个代码来确定每个用户的max\ux和max\uy值
我正试图使用上面的代码作为“cron job”
但有一个问题。
让我们考虑案例1:
最大x=600,最大y=100
如果我把这个代码运行11次,它会像这样

==>  X/Y

1 ==> 54/9

2 ==> 108/18

3 ==> 162/27

4 ==> 216/36

5 ==> 270/45

6 ==> 324/54

7 ==> 378/63

8 ==> 432/72

9 ==> 486/81

10 ==> 540/90

11 ==> 594/99

情况2:最大x=1200,最大y=200

...11 ==> 1188/198

那么如何确保x=+6和y=+1在这个例子1中相加呢
在第二种情况下,x=+12和y=+2
如中所述,如何确保添加“剩余”值时不超过max\u值

lf5gs5x2

lf5gs5x21#

在php中执行计算部分,在那里更容易(更合适)实现程序逻辑,然后只需将新值传递给更新脚本。

$get_data = "SELECT * FROM stats WHERE x < max_x and y < max_y";
$get_data_query = mysqli_query($conn,$get_data);

 while ($data= mysqli_fetch_assoc($get_data_query)) {
    // added one-liners if you want a bit cleaner code
    // $x_new = $x + ($max_x / 11.11111111111111) < $max_x ? x + (max_x / 11.11111111111111) : $max_x;
    // $y_new = $y + ($max_y / 11.11111111111111) < $max_y ? y + (max_y / 11.11111111111111) : $max_x;
    $x_new = $x + ($max_x / 11.11111111111111);
    if ($x_new > $max_x) { 
        $x_new = $max_x;   
    } 
    $y_new = $y + ($max_y / 11.11111111111111);
    if ($y_new > $max_y) { 
        $y_new = $max_y;   
    } 
    $update = "UPDATE stats SET 
                                x = '".$x_new."',
                                y = '".$y_new."'

              WHERE id = '".$data['id']."' ";

              mysqli_query($conn,$update); }

相关问题