Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как передать значение из JS в переменную PHP (https://javascript.ru/forum/misc/54913-kak-peredat-znachenie-iz-js-v-peremennuyu-php.html)

arhat78 06.04.2015 20:03

Цитата:

Сообщение от laimas (Сообщение 365297)

Хранение данных в сессии никак не оправдывает substr(number_format($produc t['price'] * $quantity ,2), 0, 10), это глупость, ибо в контексте типа данных с которыми вы работаете, этого совсем не требуется, тем более htmlspecialchars и trim.

Об остальном тоже хорошо подумайте. Вы изначально поступаете непотребным способом, и ваш код грешит тем, что может огрести кучу мусора, и скушать его.

Ну так что думать то, если я не представляю, как можно из JS id="product-price" сделать PHP $tprice?????????

A number_format нужен для числовых выражений, и substr ограничиваю количество символов (хотя это нужно для ввода в форме)

laimas 06.04.2015 20:30

У вас общая концепция ни к черту не годиться, а вы решаете проблему как из чего-то вытащить.

Если речь о price, то значит либо товары, либо услуги. Значит в сессии должна храниться корзина выбранных клиентом товаров/улуг.

Выбор клиента, это отправка на сервер идентификатора товара/услуги и количество выбранного.

Товар/услуга добавляется в корзину только в том случае, если запрос в базу возвращает цену товара/услуги для указанного идентификатора.

Хранить в сессии общее количество выбранных товаров/услуг и их общую сумму вообще не требуется, это можно быстро просчитать функциями РНР.

number_format нужен только при выводе на страницу.

Отправка почтой, это уже оформление заказа, а не реакция на выбор каждого товара/услуги на странице.

В этой теме речь идет о корзине, нечто похожее должно быть и у вас.

arhat78 06.04.2015 20:42

Цитата:

Сообщение от laimas (Сообщение 365303)

В этой теме речь идет о корзине, нечто похожее должно быть и у вас.

Почему концепция не годится? Пока не появился выбор типа доставки с использованием JS - всё отлично работало. Теперь полный тупик.....

И корзина с добавлением у меня совсем по другому работает.

А можно из value достать значение в переменную php не используя JS???
<input type="radio" name="nameRadio" value="300" > Наш курьер
А то с ним полная засада получается... :(

laimas 06.04.2015 20:44

Почему концепция не годится?

Потому, что, если цену товара определяет не сервер, а клиент, то ваша концепция, это котел для сбора мусора.

arhat78 06.04.2015 20:47

Цитата:

Сообщение от laimas (Сообщение 365306)
если цену товара определяет не сервер, а клиент, то ваша концепция, это котел для сбора мусора.

Цена товара, как все параметры товара, достаётся из БД sql-запросом SELECT

laimas 06.04.2015 20:56

То есть $produc t['price'] - это значение выборки? Тогда нормально, но почему при выборе каждого товара вы производите расчет количества?
Выбор это добавление в корзину, и считать нужно то, что в корзине. Добавлять же в нее вы можете как угодно, хоть руками записывать, а вот просчитать, так для этого есть готовые функции.

<input type="radio" name="nameRadio" value="300" >

При отправке формы на сервере будет получено в массиве GET/POST как 'nameRadio' => 300. Что тут вытаскивать да еще средствами JS я не понимаю.

arhat78 06.04.2015 21:04

Цитата:

Сообщение от laimas (Сообщение 365309)
а вот просчитать, так для этого есть готовые функции.

<input type="radio" name="nameRadio" value="300" >

При отправке формы на сервере будет получено в массиве GET/POST как 'nameRadio' => 300. Что тут вытаскивать да еще средствами JS я не понимаю.

Про готовые функции ничего не слышал.....

Средствами JS я вытаскиваю значение value для показа "общей суммы заказа" в <output></output> без перезагрузки страницы с учётом стоимости доставки.

И у меня на этой же странице order.php собирается и отправляется mail(), куда я хочу "засунуть" значение id='product-price' с учётом стоимости доставки, а не старую $total_price, где доставка не учитывается.

laimas 06.04.2015 21:14

Про готовые функции ничего не слышал.....

А вы читали по ссылке? Если товары в корзине, это массив, ключами которого являются идентификаторы товаров, а его значениями массив, где первый элемент, это количество товара, а второй его цена, то:

$total_cnt = array_sum(array_map('current', $array_name)); //количество товаров в корзине
$total_sum = array_sum(array_map('array_product', $array_name)); //сумма товаров в корзине


Зачем вам брать на клиенте какую-то стоимость с чем-то или без чего-то, если в это с успехом можете высчитать на сервере, ведь на нем у вас все данные о корзине есть?

arhat78 06.04.2015 21:18

Цитата:

Сообщение от laimas (Сообщение 365311)
Про готовые функции ничего не слышал.....

$total_cnt = array_sum(array_map('current', $array_name)); //количество товаров в корзине
$total_sum = array_sum(array_map('array_product', $array_name)); //сумма товаров в корзине


Зачем вам брать на клиенте какую-то стоимость с чем-то или без чего-то, если в это с успехом можете высчитать на сервере, ведь на нем у вас все данные о корзине есть?

С вышеприведённом кодом вообще ничего не понял. У меня даже намёка на такой скрипт нету.

И у меня в корзине собрана вся информация о продукте или продуктах, но там нет стоимости доставки. Её я выбираю уже на странице order.php и здесь нужно внести изменения в "общую стоимость заказа".

laimas 06.04.2015 21:29

Если вы не поняли, значит вы не знаете РНР, тут увы я вам не помогу. Если вы считаете количество товаров в корзине и их суму как проходом в цикле, значит структура вашей корзине неудачна.

Просчитать с учетом доставки, значит получить от клиента не ее стоимость, а параметры ее определяющие (ну не клиент же ее определяет), а уж сервер должен по этим параметрам высчитать стоимость доставки, добавив ее к стоимости заказа (суммы товаров в корзине). Клиенту вы должны возвращать эту рассчитанную сервером стоимость. Как вы ее выбираете на странице order.php, что на ней делается я не знаю.


Часовой пояс GMT +3, время: 10:41.