PHP / MYSQL平均每一行

时间:2013-08-07 22:18:27

标签: php html mysql

我有一个X列数量的表格,标记为C1,C2,C3..to CX。我还有一个标有“Average”的列,另一个标有“Target”。 “Average”列找到列C1-CX中每行的平均值。当用户填写表单时,“平均”列是否可以动态更改?如果是这样,怎么样?

如果无法做到这一点,那么在提交带有编辑过的C1-CX值的表单后,如何让“平均”列更新其值?

只是寻找有关如何处理平均值的提示。我已经使用了预定义字段的C1-CX列,这些字段保存到MYSQL数据库。

3 个答案:

答案 0 :(得分:3)

添加一个事件处理程序,当任何CX表单字段值发生更改时触发(例如,用户更改其中的值),然后重新计算平均值并将其显示在平均列中。

假设您的CX表格是输入,可能类似于以下内容:

document.getElementById("C1").addEventListener("input", function(){
    // Any time the user changes a value in form 'C1',
    // this function will be called so you can re-calculate
    // a new average and stuff...
});

答案 1 :(得分:0)

给所有人一个特定的类(例如“cx”),然后使用JavaScript和jQuery: http://jsfiddle.net/yw3Hy/4/

$(document).ready(function() {
    $(".cx").change(function() {
        var count = 0;
        var sum = 0;
        $(".cx").each(function() {
            count++
            sum = parseFloat(sum) + parseFloat($(this).val());
        });
        var avg = sum/count;
        alert(avg);
    });
});

答案 2 :(得分:0)

使用mysql触发器在记录更新时自动更新Average字段。

在您的数据库上运行此触发器(例如,对于3 CX字段):

DELIMITER $$
CREATE TRIGGER `trigger_name` BEFORE UPDATE ON `table_name`
    FOR EACH ROW BEGIN
        SET NEW.Average = (NEW.C1 + NEW.C2 + NEW.C3) / 3;
    END;
$$
DELIMITER ;

此处还介绍了mysql触发器可能有用: http://net.tutsplus.com/tutorials/databases/introduction-to-mysql-triggers/