06.04.2015, 20:03
|
Аспирант
|
|
Регистрация: 06.04.2015
Сообщений: 52
|
|
Сообщение от laimas
|
Хранение данных в сессии никак не оправдывает substr(number_format($produc t['price'] * $quantity ,2), 0, 10), это глупость, ибо в контексте типа данных с которыми вы работаете, этого совсем не требуется, тем более htmlspecialchars и trim.
Об остальном тоже хорошо подумайте. Вы изначально поступаете непотребным способом, и ваш код грешит тем, что может огрести кучу мусора, и скушать его.
|
Ну так что думать то, если я не представляю, как можно из JS id="product-price" сделать PHP $tprice?????????
A number_format нужен для числовых выражений, и substr ограничиваю количество символов (хотя это нужно для ввода в форме)
|
|
06.04.2015, 20:30
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
У вас общая концепция ни к черту не годиться, а вы решаете проблему как из чего-то вытащить.
Если речь о price, то значит либо товары, либо услуги. Значит в сессии должна храниться корзина выбранных клиентом товаров/улуг.
Выбор клиента, это отправка на сервер идентификатора товара/услуги и количество выбранного.
Товар/услуга добавляется в корзину только в том случае, если запрос в базу возвращает цену товара/услуги для указанного идентификатора.
Хранить в сессии общее количество выбранных товаров/услуг и их общую сумму вообще не требуется, это можно быстро просчитать функциями РНР.
number_format нужен только при выводе на страницу.
Отправка почтой, это уже оформление заказа, а не реакция на выбор каждого товара/услуги на странице.
В этой теме речь идет о корзине, нечто похожее должно быть и у вас.
|
|
06.04.2015, 20:42
|
Аспирант
|
|
Регистрация: 06.04.2015
Сообщений: 52
|
|
Сообщение от laimas
|
В этой теме речь идет о корзине, нечто похожее должно быть и у вас.
|
Почему концепция не годится? Пока не появился выбор типа доставки с использованием JS - всё отлично работало. Теперь полный тупик.....
И корзина с добавлением у меня совсем по другому работает.
А можно из value достать значение в переменную php не используя JS???
<input type="radio" name="nameRadio" value="300" > Наш курьер
А то с ним полная засада получается...
|
|
06.04.2015, 20:44
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Почему концепция не годится?
Потому, что, если цену товара определяет не сервер, а клиент, то ваша концепция, это котел для сбора мусора.
|
|
06.04.2015, 20:47
|
Аспирант
|
|
Регистрация: 06.04.2015
Сообщений: 52
|
|
Сообщение от laimas
|
если цену товара определяет не сервер, а клиент, то ваша концепция, это котел для сбора мусора.
|
Цена товара, как все параметры товара, достаётся из БД sql-запросом SELECT
|
|
06.04.2015, 20:56
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
То есть $produc t['price'] - это значение выборки? Тогда нормально, но почему при выборе каждого товара вы производите расчет количества?
Выбор это добавление в корзину, и считать нужно то, что в корзине. Добавлять же в нее вы можете как угодно, хоть руками записывать, а вот просчитать, так для этого есть готовые функции.
<input type="radio" name="nameRadio" value="300" >
При отправке формы на сервере будет получено в массиве GET/POST как 'nameRadio' => 300. Что тут вытаскивать да еще средствами JS я не понимаю.
|
|
06.04.2015, 21:04
|
Аспирант
|
|
Регистрация: 06.04.2015
Сообщений: 52
|
|
Сообщение от laimas
|
а вот просчитать, так для этого есть готовые функции.
<input type="radio" name="nameRadio" value="300" >
При отправке формы на сервере будет получено в массиве GET/POST как 'nameRadio' => 300. Что тут вытаскивать да еще средствами JS я не понимаю.
|
Про готовые функции ничего не слышал.....
Средствами JS я вытаскиваю значение value для показа "общей суммы заказа" в <output></output> без перезагрузки страницы с учётом стоимости доставки.
И у меня на этой же странице order.php собирается и отправляется mail(), куда я хочу "засунуть" значение id='product-price' с учётом стоимости доставки, а не старую $total_price, где доставка не учитывается.
|
|
06.04.2015, 21:14
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Про готовые функции ничего не слышал.....
А вы читали по ссылке? Если товары в корзине, это массив, ключами которого являются идентификаторы товаров, а его значениями массив, где первый элемент, это количество товара, а второй его цена, то:
$total_cnt = array_sum(array_map('current', $array_name)); //количество товаров в корзине
$total_sum = array_sum(array_map('array_product', $array_name)); //сумма товаров в корзине
Зачем вам брать на клиенте какую-то стоимость с чем-то или без чего-то, если в это с успехом можете высчитать на сервере, ведь на нем у вас все данные о корзине есть?
|
|
06.04.2015, 21:18
|
Аспирант
|
|
Регистрация: 06.04.2015
Сообщений: 52
|
|
Сообщение от laimas
|
Про готовые функции ничего не слышал.....
$total_cnt = array_sum(array_map('current', $array_name)); //количество товаров в корзине
$total_sum = array_sum(array_map('array_product', $array_name)); //сумма товаров в корзине
Зачем вам брать на клиенте какую-то стоимость с чем-то или без чего-то, если в это с успехом можете высчитать на сервере, ведь на нем у вас все данные о корзине есть?
|
С вышеприведённом кодом вообще ничего не понял. У меня даже намёка на такой скрипт нету.
И у меня в корзине собрана вся информация о продукте или продуктах, но там нет стоимости доставки. Её я выбираю уже на странице order.php и здесь нужно внести изменения в "общую стоимость заказа".
|
|
06.04.2015, 21:29
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Если вы не поняли, значит вы не знаете РНР, тут увы я вам не помогу. Если вы считаете количество товаров в корзине и их суму как проходом в цикле, значит структура вашей корзине неудачна.
Просчитать с учетом доставки, значит получить от клиента не ее стоимость, а параметры ее определяющие (ну не клиент же ее определяет), а уж сервер должен по этим параметрам высчитать стоимость доставки, добавив ее к стоимости заказа (суммы товаров в корзине). Клиенту вы должны возвращать эту рассчитанную сервером стоимость. Как вы ее выбираете на странице order.php, что на ней делается я не знаю.
|
|
|
|