06.04.2015, 13:22
|
Аспирант
|
|
Регистрация: 06.04.2015
Сообщений: 52
|
|
Как передать значение из JS в переменную PHP
Всем привет! Стоит задача, с которой пока справиться не смог. Есть:
document.getElementById('product-price').innerHTML = rezultatRadio + totalPrice;
мне нужно передать значение
'product-price'
из
document.getElementById('product-price').innerHTML
в php-переменную, типа
$product_price
Выводить на этой же странице результат получается вот так:
<output id="product-price"></output>
И нужно значение id='product-price' передать новой переменной $product_price функцией mail(), которая находится на этой же странице order.php... Заранее благодарен!
Последний раз редактировалось arhat78, 06.04.2015 в 13:33.
|
|
06.04.2015, 13:33
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Опшен ваш является элементом списка, а список элементом формы. При отправке формы получайте, присваивайте, отправляйте почтой, какие проблемы?
|
|
06.04.2015, 18:49
|
Аспирант
|
|
Регистрация: 06.04.2015
Сообщений: 52
|
|
Сообщение от laimas
|
Опшен ваш является элементом списка, а список элементом формы. При отправке формы получайте, присваивайте, отправляйте почтой, какие проблемы?
|
Ну а как можно присвоить значение JS переменной PHP???
|
|
06.04.2015, 18:55
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
На сервере не будет никакой js-переменной. Если речь идет о форме, то в зависимости от метода ее передачи ее данные будут на сервере в массиве $_GET или $_POST, можно их получить и из массива $_REQUEST. А чтобы элемент формы передавался на сервер, у него должен быть атрибут name, который будет ключом в вышеуказанных массивах.
|
|
06.04.2015, 19:06
|
Аспирант
|
|
Регистрация: 06.04.2015
Сообщений: 52
|
|
Сообщение от laimas
|
Если речь идет о форме, то в зависимости от метода ее передачи ее данные будут на сервере в массиве $_GET или $_POST, можно их получить и из массива $_REQUEST. А чтобы элемент формы передавался на сервер, у него должен быть атрибут name, который будет ключом в вышеуказанных массивах.
|
laimas, у меня и форма оформления заказа, и код отправки на почту находится на одной странице.
В письме общая сумма заказа отправлялась таким образом:
$tprice = substr(htmlspecialchars(trim(number_format($product['price'] * $quantity ,2))), 0, 1000000);
$message .= 'Общая сумма: ' . $tprice . '<br />';
Но после добавления функции выбора типа доставки появился этот код:
<input type="radio" name="nameRadio" value="300" > Наш курьер (Стоимость доставки 300 руб)
<input type="radio" name="nameRadio" value="0">Самовывоз
<p class="total" align="center">Общая сумма заказа: <span class="product-price"><output id="product-price"></output> руб</span></p>
Вот как теперь $tprice поменять на id="product-price", вот в чём вопрос??????
|
|
06.04.2015, 19:17
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
substr(htmlspecialchars(trim(number_format($produc t['price'] * $quantity ,2))), 0, 1000000); - вы можете объяснить зачем здесь htmlspecialchars, а trim после number_format, и весь этот бедлам еще и должен быть обработан substr?
Вот как теперь $tprice поменять на id="product-price", вот в чём вопрос??????
Поменять где, на сервере? Никак. Вставить видимо нужно $tprice в id="product-price"?
<output id="product-price"><?=$tprice ? $tprice : null?></output>
|
|
06.04.2015, 19:25
|
Аспирант
|
|
Регистрация: 06.04.2015
Сообщений: 52
|
|
Сообщение от laimas
|
Поменять где, на сервере? Никак. Вставить видимо нужно $tprice в id="product-price"?
<output id="product-price"><?=$tprice ? $tprice : null?></output>
|
Ну а какой смысл в этой вставке???? Нужно как раз этой переменной $tprice присвоить значение, которое несёт в себе id="product-price", чтобы отправить общую сумму заказа учитывая стоимость доставки.
|
|
06.04.2015, 19:31
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Тег output не является элементом формы, более того, он доступен только в современных браузерах. А не являясь элементом формы, он как ее значение не передается на сервер. Если вам нужно передать текст из этого тега, помещайте его в скрытое поле формы на клиенте. Но если этот тег содержит produc t['price'] * $quantity, то какой смысл его передавать?
А вот это substr(htmlspecialchars(trim(number_format($produc t['price'] * $quantity ,2))), 0, 1000000); - полнейшая чушь, выбрасывайте это.
$produc t['price'] - цену продукта должен знать сервер, передавать ее с клиента не стоит. Клиент должен сообщать серверу только количество выбранного.
|
|
06.04.2015, 19:46
|
Аспирант
|
|
Регистрация: 06.04.2015
Сообщений: 52
|
|
Сообщение от laimas
|
А вот это substr(htmlspecialchars(trim(number_format($produc t['price'] * $quantity ,2))), 0, 1000000); - полнейшая чушь, выбрасывайте это.
$produc t['price'] - цену продукта должен знать сервер, передавать ее с клиента не стоит. Клиент должен сообщать серверу только количество выбранного.
|
substr(number_format($produc t['price'] * $quantity ,2), 0, 10);
Существует сессия: $_SESSION['total_price'], так я выводил "общую сумму заказа" до появления выбора типа доставки с JS.
$total_price = $_SESSION['total_price'];
$total_price я заносил в БД "общую сумму заказа"
Теперь с помощью JS общая сумма заказа заносится в id="product-price"
<script>
window.onload = function(){ totalPrice = "<?=$_SESSION['total_price']?>"; }
window.onclick = function onclickRadio() {
var nameRadio = document.getElementsByName('nameRadio');
for (var i = 0; i < nameRadio.length; i++) {
if (nameRadio[i].type === 'radio' && nameRadio[i].checked) {
rezultatRadio = nameRadio[i].value;
}
}
document.getElementById('rezultatRadio').innerHTML = rezultatRadio;
document.getElementById('product-price').innerHTML = new Number (+rezultatRadio) + new Number (+totalPrice);
}
</script>
И вот как теперь значение данного id можно передать переменной PHP, чтобы можно было это дальше обрабатывать в PHP?
|
|
06.04.2015, 19:52
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
<script>
window.onload = function(){ totalPrice = "<?=$_SESSION['total_price']?>"; }
var totalPrice = "<?=$_SESSION['total_price']?>";
Хранение данных в сессии никак не оправдывает substr(number_format($produc t['price'] * $quantity ,2), 0, 10), это глупость, ибо в контексте типа данных с которыми вы работаете, этого совсем не требуется, тем более htmlspecialchars и trim.
Об остальном тоже хорошо подумайте. Вы изначально поступаете непотребным способом, и ваш код грешит тем, что может огрести кучу мусора, и скушать его.
|
|
|
|