Сложный калькулятор php+javascript

mus

Новичок
Сложный калькулятор php+javascript

Стоит задача сделать калькулятор исходной суммы товаров при формировании комплекта. Что это значит. Пишу интернет-магазин, в данный момент дошел до добавления комплектов. Комплект, это смесь нескольких товаров, хранящихся в БД.
Так вот, зазазчик просит написать на джаве функцию, которая бы автоматом вставляла цену товара в любое поле (можно сразу в цену, можно в отдельное спец. сделанное для этого поле.
Так вот, сложность задачи состоит в том, что я практически не знаю javascript, и посему прошу помочь.
Товары, это чекбоксы, с именем-массивом. Тоесть мы выбираем тот, или иной товар, вбиваем кол-во товара, затем нажимаем на кнопку посчитать, которая перебирает все выбранные чекбоксы и цену товара, соответствуюещго этому чебоксу умножает на кол-во товара, указанное в поле кол-во(ниже пример полей). В случае, если чел захочет пересчитать снова функцию нужно чтобы калькулятор обнулял, а потом снова пересчитывал цену, хотя это пустяк, обнуление, кажется, не сложно...
Наглядно демонстрирую:
PHP:
echo "<li><input type=\"checkbox\" $checked name=\"good[".$tovar['ID']."]\" value=\"1\"\"><a href=\"view_good.php?ID=".$tovar['ID']."\" target=_blank>&nbsp;".$tovar['Name']."</a>&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"text\" name=\"Quantity[".$tovar['ID']."]\" size=\"3\" value=\"$Quantity\">&nbsp;&nbsp;штук</li>\n";
Объясняю
1. Имя-массив: good[1],good[2]...good[N], где N - ID товара в БД.
2. Quantity[".$tovar['ID']."] - этот массив отвечает за кол-во товара.

Помогите пожалуйста написать обработчик и передачу данных в javascript. Как можно скорее.
Заранее благодарю.
 

fixxxer

К.О.
Партнер клуба
Не наблюдаю попытки сделать это самостоятельно.
"Напишите за меня" - это в форум "Работа".
 

mus

Новичок
Попытка была, но все ступориться в логике построения оного калькулятора..
Во-первых - данный массив не передается по-нормальному.
Хотя бы помогите сформировать нормальную передачу, функцию то я постараюсь написать...

-~{}~ 29.04.05 19:07:

Вот даже грубо:

PHP:
function pricing(name, price, quantity) {
        if(document.form1.name.checked == true)
        {
                alert("checked")
        }
        else
        {
                alert("uncheked")
        }
};
И та не работает. То унчекед пишет, то черти что...
Я обработчик события писал онКлик внутри инпата чекбокса, не передает имя-массив
Помогите с правильным составлением обработчика и вызова джава функции с корректными аргументами. Буду очень признателен.
 

fixxxer

К.О.
Партнер клуба
Во-первых, JavaScript - это не Java.
Далее. Поскольку у тебя в именах квадратные скобки, то обращаться к элементу надо так:
document.form1.elements['good[1]']

good[1] с точки зрения браузера - это просто имя, ни о каком элементе твоего "массива" он понятия не имеет.

если нужно перебрать в цикле - перебирай document.form1.elements и смотри .name.
 

mus

Новичок
document.form1.elements['good[1]']
Спасибо!
Этого я и пытался добиться!

-~{}~ 29.04.05 20:30:

ГОСПОДА, а теперь такой трабл.
Я сделал спец. поле с параметром лишь для чтения, в него теперь скалдываю и вычитаю сумму товара, но как мне получить доступ к переменной quantity, которая тоже является именем-масивом, у меня цена должна умножаться на кол-во товара, а не получается. Привожу код функции:
PHP:
function pricing(name, price, quantity) {
        if(document.form1.elements[name].checked == true)
        {
                 price = Number(price)
                 document.form1.CalcPrice.value = Number(document.form1.CalcPrice.value)+price;
        }
        else
        {
                 price = Number(price)
                 document.form1.CalcPrice.value = Number(document.form1.CalcPrice.value)-price;
        }
Так вот, в строках document.form1.CalcPrice.value = Number(document.form1.CalcPrice.value)-price и +price на цену должно умножаться кол-во данного товара, передаваемого в аргументе функции, но однако обработать у меня это значение через elements не получается...Как и не получается получить к нему доступ даже на алерт...
Поможете? В принципе тут уже последняя стадия!
 
Сверху