Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Отображение процента от суммы
Покинул форум
Сообщений всего: 36
Дата рег-ции: Сент. 2010
Помог: 0 раз(а)
Здравствуйте гуру и форумчане, возник такой вопрос и никак не могу найти решение этого вопроса.
Суть в следующем, у меня в админке выводится сумма оборота по продажам за выбранный период, и отображается как полная сумма оборота, так и чистая сумма.
Например было офомлено 2 заказа на сумму 1000 руб,. 1 заказ с курьерской доставкой на 100 руб и 1 заказ по почте со стоимостью пересылки 200 руб.
Отображение общей суммы стоит 2300 руб, а чистая сумма 2100 руб, так как сумма пересылки не учитывается.
Но мне нужно сделать отображение ещё одной строки которая будет отображать 30% заработка от чистой суммы, то есть по примеру двух заказов выше, сумма заработка должна составить 630 руб.
Общая сумма 2300 руб.
Чистая сумма 2100 руб.
Заработок 630 руб.
Но вот как написать код формулы которая будет расчитывать эти 30% я никак не могу нигде найти Подскажите пожалуйста как это реализовать?
Вот код запроса к таблице для отображения общей суммы:
$q= db_query("select order_amount, currency_value from ".ORDERS_TABLE." where statusID > 1 and order_time>='".$start." 00:00:00' AND order_time<='".$end." 23:59:59'");
$q= db_query("select order_amount, currency_value, shipping_type, shipping_cost from ".ORDERS_TABLE." where statusID > 1 and order_time>='".$start." 00:00:00' AND order_time<='".$end." 23:59:59'");
$revenue_clear=0;
while($r= db_fetch_row($q))
{
$revenue_clear+=$r[0];
if($r['shipping_type']!='Курьер в пределах метро')
Подскажите пожалуйста, что нужно написать чтоб формула расчитывала и выводила сумму в 30% от чистой суммы?
Заранее благодарен всем откликнувшимся помочь в решении этого вопроса.
(Добавление)
Опа! а немного подумав и сам нашол решение Всё гениальное просто ;)
Просто добавить параметр /100*30
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
Помог: 6 раз(а)
Это же 4-й или 5-й класс. Сколько вам лет?
movEAX
Отправлено: 10 Мая, 2011 - 12:40:51
Частый посетитель
Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009
Помог: 16 раз(а)
Uchkuma пишет:
Это же 4-й или 5-й класс. Сколько вам лет?
оффтоп: где надпись "Адвокааат"?
----- армия.. самое убогое место
Stas11
Отправлено: 10 Мая, 2011 - 18:18:40
Новичок
Покинул форум
Сообщений всего: 36
Дата рег-ции: Сент. 2010
Помог: 0 раз(а)
Uchkuma Как математичесое решение я-то знаю, а вот как написать на языке программирования эту формулу и в каком месте кода вставить, это уже другой вопрос
Но тем не менее разобрался сам.
Зато возник другой вопрос, как можно составить код, чтобы при этом сам код был покомпактнее если учесть что все 3 запроса для сбора инфы идут с одинаковыми параметрами, разница лишь в формуле расчёта и названии переменных.
Вот первый запрос на вывод полной суммы за выбранный период:
$q= db_query("select order_amount, currency_value, shipping_type, shipping_cost from ".ORDERS_TABLE." where statusID > 1 and order_time>='".$start." 00:00:00' AND order_time<='".$end." 23:59:59'");
$revenue_clear=0;
while($r= db_fetch_row($q))
{
$revenue_clear+=$r[0];
if($r['shipping_type']!='Курьер в пределах метро')
$q= db_query("select order_amount, currency_value, shipping_type, shipping_cost from ".ORDERS_TABLE." where statusID > 1 and order_time>='".$start." 00:00:00' AND order_time<='".$end." 23:59:59'");
$revenue_clearpercent=0;
while($r= db_fetch_row($q))
{
$revenue_clearpercent+=$r[0];
if($r['shipping_type']!='Курьер в пределах метро')
$q= db_query("select order_amount, currency_value, shipping_type, shipping_cost from ".ORDERS_TABLE." where statusID > 1 and order_time>='".$start." 00:00:00' AND order_time<='".$end." 23:59:59'");
$revenue_percent2=0;
while($r= db_fetch_row($q))
{
$revenue_percent2+=$r[0];
if($r['shipping_type']!='Курьер в пределах метро')
То есть во всех трёх частях кода запрос к базе на выборку прописан одинаковый, разница лишь в названии переменных $revenue_clear, $revenue_clearpercent и $revenue_percent2
$q= db_query("select order_amount, currency_value, shipping_type, shipping_cost from ".ORDERS_TABLE." where statusID > 1 and order_time>='".$start." 00:00:00' AND order_time<='".$end." 23:59:59'");
$revenue_clear=0;
$revenue_clearpercent=0;
while($r= db_fetch_row($q))
{
$revenue_clear+=$r[0];
$revenue_clearpercent+=$r[0];
if($r['shipping_type']!='Курьер в пределах метро')
При этом расчёт отображается не совсем верно, то есть если 3 части кода по отдельности, то цифры одни, если добавить все переменные в один код и использовать только один запрос к к БД, то цифры немного меньше становятся.
Как правильно составить код, чтобы было и компактно и всё работало?
Я прошу прощения если мои вопросы покажутся смешными и наивными, но я не программист и програмирование изучаю так сказать методом тыка и подсказкам более продвинутых гуру в области программирования
Пока буду ждать ответа, попробую и сам поковыряться, может методом тыка и перестановок кода удастся собрать конструктор с более компактным кодом и рабочим при этом Ведь уверен что если запрос везде одинаковый
$q= db_query("select order_amount, currency_value, shipping_type, shipping_cost from ".ORDERS_TABLE." where statusID > 1 and order_time>='".$start." 00:00:00' AND order_time<='".$end." 23:59:59'");
то как бы нет нужды повторять один и тот же код в трёх местах, можно как то обойтись одним запросом, но при этом заставить обработчик отображать нужные данные с каждой переменной.
Все когда то начинали с нуля и потихоньку достигли высот, я тоже когда начинал знал только <b> и всё, а щас уже ковыряюсь в php и надеюсь с Вашей помощью узнать как оптимизировать данный код.
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
Помог: 6 раз(а)
У вас под одно условие попадают несколько выражений. Кто будет заключать их в фигурные скобки?
Stas11
Отправлено: 10 Мая, 2011 - 23:04:05
Новичок
Покинул форум
Сообщений всего: 36
Дата рег-ции: Сент. 2010
Помог: 0 раз(а)
Uchkuma А поподробнее и желательно на примерах
Я понимаю что надо разделить выражения, но не знаю как и в каком порядке и самое главное как его составить от и до.
if($r['shipping_type']!='Курьер в пределах метро')
$revenue_clear-=$r['shipping_cost'];
$revenue_clearpercent-=$r['shipping_cost'];
Вот например. Судя по табуляциям под условие должно попасть 2 строки, а без фигурных скобок попадает только первая срока, а вторая выполнится даже если условие false.
Для этого нужно брать в фигурные скобки
$q= db_query("select order_amount, currency_value, shipping_type, shipping_cost from ".ORDERS_TABLE." where statusID > 1 and order_time>='".$start." 00:00:00' AND order_time<='".$end." 23:59:59'");
$revenue_clear=0;
$revenue_clearpercent=0;
$revenue_percent2=0;
$revenue_percent=0;
while($r= db_fetch_row($q))
{
$revenue_clear+=$r[0];
$revenue_clearpercent+=$r[0];
$revenue_percent2+=$r[0];
$revenue_percent+=$r[0];
if($r['shipping_type']!='Курьер в пределах метро')
Или через запятую, точно не знаю какой разделитель поставить, или же тот полный код который я привёл выше является окончательным и по другому никак не получится уменьшить код без нарушения работоспособности?
Впринципи и так уже стало намного компактнее, но как говорится нет предела совершенству и хочется больше (Добавление)
Хотя уже сам понял что это самый простой код, проще только удалить строку
Насколько я понял каждое условие должно иметь свой параметр, а чтобы было 4 условия с 1 параметром это только в сказке, интепритатор такого читать не умеет
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.