Подсчет значений в полях вебформы
04.12.2012Добрый день. Есть задачка такая, В вебформе которая в свою очередь получает несколько значений из ноды посчитать поля. Просто умножить одно на другое, ну и по возможности применить условия сравнения для применения и вычисления процента дисконта. Понимаю что на пхп можно сделать, но как и где прописать? пробовал в шаблоне вебформы но не могу достучаться до значений полей и главное в поля вывести результат. Буду рад конструктивным ответам. С пхп только начинаю знакомиться но очень хочется. Уберкарт и коммерц не предлагать, не тот случай.
Комментарии (67)
А по подробней? каким образом реализована вебформа - модулем или самописная? Какие значения принимает вебформа из ноды, из полей? Каким образом подгружаете ноду к вебформе?
Вот ссылка на сайт Если нажать перейти к заказу в ноде то выводится вебформа. Вебформа не самописная, ибо еще не умею такого делать, но научиться хочу очень. Реализована она с помощью модуля Webforms. Значения из ноды форма принимает: title и price посредством $_GET. И соответственно рассовывает эти значения в поля формы: наименование и цена. В форме есть поле: количество. Вот мне необходимо чтобы после ввода количества оно перемножалось с ценой и выходил результат который можно вывести либо просто в теле формы, либо, что лучше конечно, в поле: Итоговая сумма. В идеале я еще хотел бы реализовать скидки тут. И написать логику то могу, в смысле сам цикл if.. then.. else... and... но вот как мне в этот код подцепить значения моих полей именно с опросника а не с типа материалла, и как их повыводить.. Да еще и в каком шаблоне лучше прописать.. Вот это и есть вопрос.
так а что вам мешает Price внести в переменную, для поля количества так же создать переменную откуда будут забираться значения.Далее передаете все значения из полей в функцию, которая должна выполнять все ваши действия и после перезагрузки результат отдать браузеру. Т.е. создаете еще один файл PHP, в котором напишите вашу функцию, хотя можно и без функции обойтись. Вешаете submit на файл, что то вроде пересчитать цену и радуетесь результатом. Как работать с формами в php вот ссылка, только там в примере написан вывод информации из формы на экран, а вам необходимо занести их в переменные, произвести все вам необходимые действия и отдать обратно браузеру. Так же что бы вывести результат формы в поле, необходимо темизировать страницу с формой. Принцип действия такой.
А как создать для поля количество переменную? Хотябы с этого начнем.
ну у данного поля вашей формы должно быть название. Поля формы строятся как
далее по submit вы должны присвоить переменную для данного поля, т.е. файл php должен выглядеть так
далее пишите необходимые вам действия
и далее выводите результат уже в необходимом вам поле
Хотя думаю на JS проще реализовать, передавать данные хотя бы ни куда не нужно!
Я вот поломал голову и с помощью одного человека реализовал следующим образом:
в теплейт.пхп написал:
и соответственно в computedform.js :
Алерт вывел для наглядности срабатывания. Все нормуль, только не считает. Ну а если и считает то значение не выводит. Почему?
вообщем вот - пользуйтесь. Написал свой скрипт. Не обязательно использовать template.php, можно просто подключить через info файл вашего шаблона, хотя в вашем случае имеет смысл подгружать скрипт только для этой формы, как впринципе и сделано
Спасибо. А для D7 он пойдет? ничено менять не надо?
Попробовал. Огромнейшее спасибо Вам:) Очень рад такому конструктиву. Скажите а как задать точность вычислений? ну чтобы 2 знака после запятой было? И в идеале хотелось прикрутить сравнение по условию. что то типа:
подскажите как?:)
Это для точности вычислений!
Было бы проще если вы словами объяснили, что нужно в условие вписать! А то смесь JS и PHP - это перебор конечно!:)
Огромное спасибо за скрипт. Очень, очень выручили. Не знаю даже как благодарить. По поводу сравнения. На сайте есть система скидок. Т.е. если результат получается более 300 но меньше 700 тогда скидка 5%, если более 700 но менее 1000 то скидка 10%, и если более 1000 то скидка 15%. Я вот Вам кинул пример того чего пытался сам наковырять, но видимо я еще не достиг того уровня, и у меня не получилось:(
т.е. в поле "Итоговая сумма заказа" вам необходимо вносить результат уже со скидкой? Тогда завтра допишу скрипт, сегодня уже ни как не успеваю!
Так точно, хотелось бы чтобы в итоговой сумме выходил результат со скидкой и может вывести надпись, выше результата, которая бы извещала о том что человеку предоставлена скидка и ее размер. Буду очень благодарен. Спасибо Вам большое за участие и науку.
забирайте!
Добрый день. Огромное спасибо за скрипт:) НО почему то сумма скидки не выводитcя. Или мне необходимо поле такое добавить "skidka p" ?
там скидка в процентах показывается, тип "Скидка 5,10 или 15%"! а вам нужно еще и сумму скидки выводить?
Вообщем что бы сумма скидки еще выводилась:
Спасибо огромное, а чтобы выводилось необходимо поле новое создать?
ничего добавлять не нужно, всё и так выводится!
Странно. У меня не выводится..:(
Нашел косяк, редактор кода для сайта, часть кода съел! Скопируй опять последний вариант! должно работать.
Ура!! Заработало:) Спасибо:) Прямо чудо какое то:) Буду стараться учить чтобы было глупых вопросов поменьше:) Спасибо еще раз!
Помогите пожалуйста!
Как узнать для js скрипта параметры - #edit-submitted-qount и
#webform-component-cena. Пытаюсь повторить скрипт, созданный pantey, но не
получается.. на drupal 6. Прошу прощения за глупый вопрос, но я новичок
Данный скрипт писался под конкретную задачу сайта и под определённую форму, версия Drupal ни причём! #edit-submitted-qount и #webform-component-cena это id полей формы, которая была реализована на сайте. Пиши подробней, что нужно и где можно посмотреть сайт. Тогда можно что то придумать.
Благодарю!
id своих полей формы посмотрел через FireBug, подставил id в скрипт
но не работает...
Форма стандартная, сайт http://slavsvet.ru/node/38?buket=39.
Нужно чтобы в поле итоговая стоимость вычислялось перемноженное содержимое полей цена и количество.
Да, еще нужно вытаскивать из CCK материла значение цены и вставлять в поле вебформ. Это можно сделать через прописывания $_GET[name поля] ??
Разобрался почему не работало - нужно было в скрипте заменить (в моем случае)
заменить $dr на jQuery. А как сделать чтобы в поле итоговая сумма значение изменялось сразу после изменения в поле Количество?
использовать
времени пока нет заняться вашим скриптом, завтра обязательно посмотрю.
спасибо, скрипт заработал, вот только не понятно по какому принципу значение
поля цены в ССК материала передовать в поле цены вебформы.
И функция change в скрипте уже есть, а все же итоговая сумма появляться только после дополнительного клика, как сделать без клика?
Подскажите пожалуйста как это сделать?
Насколько я помню в созданной форме можно задавать значения по умолчанию для полей, посмотрите список токенов при редактировании поля. Для расчёта без клика можно попробовать
вместо
Здравствуйте. Прошу помощи... Не получается переделать ваш скрипт под свою задачу.
Добавляю в форму радиокнопку (для включения в заявку услуги доставки). При клике по ней скрипт к итоговой сумме (количество*цену) должен просто добавить 300 рублей.
Сейчас скрипт некоректно обрабатывает итоговую сумму при изменении поля Количество
Вывод итоговой суммы при изменении поля Количество не происходит. А при клике радиокнопки (услуги) Итоговая сумма выводится.
Как сделать, чтобы при любом событии - изменения в поле Кол-во или при клике по чекбоксу скрипт выводил
итоговую сумму. Сейчас скрипт такой..
А точно ли вам нужно использовать именно радиокнопку, она как бы для других целей предназначена. А так как вариант я вам написал скрипт с чекбоксом.
Сам код скрипта
пример работы можно скачать отсюда, написал по форме - ссылку на которую давали выше. Добавил дополнительный инпут(с чекбоксом) в индексном файле разберетесь, там оставил комментарий.
Спасибо большое!! можно и чекбокс, то что нужно ...
Пожалуйста можете написать суммирование чекбоксов, тоесть множественный выбор чекбоксов и в итоге сумма отмеченных, мне бы хотя бы примерно как будет выглядеть. Писал как вы только не использовал функцию, не получилось:(
вам просто пример как чекбоксы суммировать?
да, тоесть есть чекбоксы, и при каждом нажатие на определенный чекбокс суммируется определенная сумма, выбор чекбоксов множественный. Будьте добры примером:)
чуть чуть разобрался, только вот когда в чекбоксе убираю флажок обратное значение не становится, тоесть отметил флажок, суммировалось определенная сумма к итоговому полю, а когда убираю флажок ничего не меняется. Буду пробовать, но на всякий случай проверьте мой код пожалуйста.
а ссылку на сайт можно?
вроде по первому условию все верно, вам нужно написать скрипт, который будет выполняться если условие дает FALSE, примерно по вашему коду будет выглядеть что-то вроде этого
сайт пока в общем доступе нет, делаю на локалке,
а такой код я вставлял в else условие, не помогает. Спасибо за ответ!
Здравствуйте еще раз, например есть функция вида
как передать значение функции глобально? достаточно ли просто приравнять переменную к функции
не совсем понимаю, что вы подразумеваете под "передать значение глобально"! Если вам необходимо использовать переменную внутри функции, то лучше ее определить в самой функции
если необходимо передать значение из переменной в функцию, то это выглядит вот так
Можно ли переменной присвоить результат значения функции? то есть
Посоветуйте пожалуйста книжки по jquery:)
к сожалению нет, если вам необходимо присвоить переменную к результату работы функции, то можно использовать вот такую конструкцию
на счёт книги, даже не знаю. На просторах интернета, их достаточно, выбирайте любую.
а можно ли использовать переменные заданные в одной функции в другой?
да конечно, вот пример
Ооо спасибо!
Проверьте пожалуйста:
Правильно ли я объединяю реагирование событий? как правильно писать?
вы не можете в выборе селекторов ставить условие, если вам необходимо выполнять одну ф-ю для разных объектов, то можно воспользоваться этой конструкцией
Получилось объединить вот так
единственное что не получается это после того как поставил чекбокс значение поля увеличивается, а при отключение флажка значение не изменяется..