Вычисления из формы [php]

12
KianoT
На сайте с 04.04.2012
Offline
95
1482

Уважаемые, подскажите пожалуйста! Не хватает знаний в php.

Есть форма (form), в которой чекбоксом выбираешь от 1 до 3 заранее известных числа (три чекбокса - три числа).

<form>

<input type="checkbox" name="quant[one]" value="73000" />

<input type="checkbox" name="quant[two]" value="83000" />

<input type="checkbox" name="quant[three]" value="93000" />

<input type="submit" />

</form>

После того, как в форме поставил галочки, всё это дело отправляется на следующую страницу, кликая в форме на кнопку submit. За передачу на следующую страницу отвечает такой код:

session_start();

$_SESSION['order'] = array();
if (!empty($_POST)) {
if (!empty($_POST['quant']['one'])) {
$_SESSION['order'][] = array(
'name' => 'Первое значение',
'price' => (int)$_POST['quant']['one']
);
}
if (!empty($_POST['quant']['two'])) {
$_SESSION['order'][] = array(
'name' => 'Второе значение',
'price' => (int)$_POST['quant']['two']
);
}
if (!empty($_POST['quant']['three'])) {
$_SESSION['order'][] = array(
'name' => 'Третье значение',
'price' => (int)$_POST['quant']['three']
);
}

if (!empty($_SESSION['order'])) die(header('Location: /page/order.php'));
else die(header('Location: '.$_SERVER['REQUEST_URI']));
}

Если вкратце, то на следующую страницу передаются в таблицу из двух колонок 'name' и 'price' и высчитывается итог $total:

<table style="width:100%" id="order-kp">
<tr>
<td><b>Название значения</b></td>
<td><b>Само число из чекбокса</b></td>
</tr>';
$c = 1;
$total = 0;
foreach ($_SESSION['order'] as $item) {
$body .=
'<tr>
<td>'.$item['name'].'</td>
<td>'.$item['price'].'</td>
</tr>';
$total += round($item['price']+$item['price']);
}
$body .=
'<tr>
<td style="border: 0;"></td>
<td>Итого: '.$total.'</td>
</tr>';

$body .= '</table>';

Как видите, стронгом выделен сам вопрос:

$total += round($item['price']+$item['price']); - в данном случае у меня числа сами себя плюсуют(скрин ниже), но как сделать так, чтобы числа складывались число+число+число= итого

Заранее благодарен за помощь!!!

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#1

Что за бред?! Вы же в цикле плюсуете.

Ну сделайте понятнее:

$total = $item['price']+$total;

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
KianoT
На сайте с 04.04.2012
Offline
95
#2

LEOnidUKG, пошёл изучать цикл в php. Ваш ответ решил задачу. Благодарю вас!!!

Заодно спрошу...

Как можно настроить число из input, чтобы на выходе в таблице(скрин выше) были пробелы, например 312 000, вместо 312000?

Z0
На сайте с 03.09.2009
Offline
756
#3
KianoT:
LEOnidUKG, пошёл изучать цикл в php. Ваш ответ решил задачу. Благодарю вас!!!

Заодно спрошу...
Как можно настроить число из input, чтобы на выходе в таблице(скрин выше) были пробелы, например 312 000, вместо 312000?

echo number_format(312000, 0, '', ' ' );
S
На сайте с 13.10.2014
Offline
171
#4

просуммировать все эл-ты массива можно при помощи функции php

number array_sum ($_POST['quant'])

чтоб вывести х числел [пример: 1000+3000+5000] можно поступить так

string implode ('+',$_POST['quant'])

KianoT
На сайте с 04.04.2012
Offline
95
#5
ziliboba0213:
echo number_format(312000, 0, '', ' ' );

А если другое число?

Можно ли формат задать для разделения разрядом чисел пробелами 1 000, 10 000, 100 000?

silicoid:
просуммировать все эл-ты массива можно при помощи функции php
number array_sum ($_POST['quant'])

чтоб вывести х числел [пример: 1000+3000+5000] можно поступить так
string implode ('+',$_POST['quant'])

Прошу прощения, но где размещать эти функции?

Z0
На сайте с 03.09.2009
Offline
756
#6
KianoT:
А если другое число?
Можно ли формат задать для разделения разрядом чисел пробелами 1 000, 10 000, 100 000?

Да там любое, как я понял, можно вставлять :)

Вставьте свой $total

echo number_format($total, 0, '', ' ' );
KianoT
На сайте с 04.04.2012
Offline
95
#7

ziliboba0213, ошибка syntax error, unexpected T_ECHO - не туда видимо размещаю

Есть такая функция: $total = $item['price']+$total; - считает

и такая: Итого: '.$total.' - выводит

Куда именно и что заменить/удалить?

Z0
На сайте с 03.09.2009
Offline
756
#8
KianoT:
ziliboba0213, ошибка syntax error, unexpected T_ECHO - не туда видимо размещаю

Есть такая функция: $total = $item['price']+$total; - считает
и такая: Итого: '.$total.' - выводит

Куда именно и что заменить/удалить?

$total = number_format($total, 0, '', ' ' ); 
S
На сайте с 30.09.2016
Offline
469
#9

Это не вместо, а после. ;)

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
KianoT
На сайте с 04.04.2012
Offline
95
#10

Усё) Понял! Спасибо комрады!

---------- Добавлено 16.07.2018 в 23:56 ----------

Ещё такая задача, в принципе тоже самое, только с разницей в количестве помноженном на число-1 (Скрин ниже)


'<tr>
<td>'.$item['name'].'</td> - название
<td>'.$item['quant'].'</td> - кол-во
<td>'.$item['price'].'</td> - число-1
<td>'.$item['price']*$item['quant'].'</td> - число-2 (число-1 умножается на кол-во)
</tr>'

$total = $item['price']+$total;

Итого: '.$total = number_format($total, 0, '', ' ' ).'

Помогите пожалуйста, нужно чтобы в таблице Число-1(73 000) продублировалось в Число-2, а Итого посчитал все числа в колонке Число-2 (Пример: 73 000+9 000).

Заранее благодарю!!!

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий