2013-08-07 4 views
0

У меня есть форма с X количеством столбцов, которые обозначены C1, C2, C3..to CX. У меня также есть столбец с надписью «Average», а другой - «Target». Столбец «Средний» находит среднее значение для каждой строки в столбцах C1-CX. Возможно ли динамическое изменение столбца «Средний» во время заполнения пользователем формы? Если да, то как?PHP/MYSQL Усреднение каждой строки

Если это невозможно, то как мне добавить столбец «Средний» его значение после отправки формы с отредактированными значениями C1-CX?

Просто ищите подсказки о том, как справляться со средними значениями. У меня уже есть рабочие столбцы C1-CX с предопределенными полями, которые сохраняются в базе данных MYSQL.

+0

да, с помощью JavaScript. –

+0

1. Нормализуйте свои данные – Strawberry

+0

Это, безусловно, возможно, я бы проверил AJAX, начиная с JQuery или Dojo в отношении запросов HTTP. – hd1

ответ

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... 
}); 
0

дать всем им определенный класс (например, "сх"), а затем с 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); 
    }); 
}); 
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/

Смежные вопросы