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 :: создание калькулятора тарифов с нуля

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
bubanay
Отправлено: 21 Февраля, 2012 - 13:59:05
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Срочно нужно сделать калькулятор как тут www[dot]md-cargo[dot]ru/calc_avia[dot]html

То есть имею Excel файл с таблицей тарифов как на сайте примере внизу, калькулятор должен считать итоговую сумму исходя из данных таблицы (как в примере).

Подскажите в общих чертах как можно подробнее как это проще реализовать (логику самого процесса поэтапно) и какие темы стоить основательно почитать. Возможно порекомендуете какую нибудь литературу.
 
 Top
Zuldek
Отправлено: 21 Февраля, 2012 - 14:13:24
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




логика такая:
1.Загружаете экселевский прайс на сайт в виде csv-файла.
2. Обработчик разбирает прайс на параметры и значения.
3. По этим параметрам строит калькулятор.
пример:
товар1;450;350;50;
товар2;500;400;10;
Выводим выпадающий список товаров.
При выборе товара выводим цену за единицу - 450, выводим количество для оптовой скидки - 50, выводим поле для ввода количества. Если количетсво >=50 применяем оптовую цену 350 за единицу и выводим итоговую цену.
 
 Top
DlTA
Отправлено: 21 Февраля, 2012 - 14:16:10
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




а сложность то в чем?
данные получили, проверили подставили
в формулу засунули посчитали, вернули
 
 Top
bubanay
Отправлено: 21 Февраля, 2012 - 17:09:39
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Zuldek подскажите что можно почитать по пунктам 2 и 3
DlTA да ясно что все это просто, я где-то примерно так и представлял, но знаний нет, это будит первая работа с масивами

(Отредактировано автором: 21 Февраля, 2012 - 17:09:53)

 
 Top
Zuldek
Отправлено: 22 Февраля, 2012 - 14:29:31
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.     <?
  3.    // если пришли данные для подсчета - считаем
  4.    if(isset($_POST['amount'])){
  5.    $sum=((int)$_POST['amount'])>=((int)$_POST['discount_amount'])?((int)$_POST['price_discount']*(int)$_POST['amount']):((int)$_POST['price']*(int)$_POST['amount']);
  6.    }
  7.    // test.csv содержит - 1;450;350;50  где 1 артикуд, 450 цена, 350 оптовая цена, 50 оптовое количество
  8.    $fp = fopen ("test.csv","r");
  9.    while (!feof($fp)){
  10.    //прочитал в массив
  11.    $data[] = fgetcsv($fp, 1000, ";");
  12.    }
  13.    // пишем калькулятор суммы
  14.    ?>
  15. <html>
  16. <head>
  17. <title>calc</title>
  18. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  19. </head>
  20. <body>
  21.     <form name="calc" action="#" method="post">
  22.     <input type="text" name="tovar" value="<?=$data[0][0];?>"/><br/>
  23.     <input type="text" name="price" value="<?=$data[0][1];?>"/><br/>
  24.     <input type="text" name="price_discount" value="<?=$data[0][2];?>"/><br/>
  25.     <input type="text" name="discount_amount" value="<?=$data[0][3];?>"/><br/>
  26.     <label>Введите количества товара</label><br/>
  27.     <input type="text" name="amount"/><br/>
  28.     <label>Тоговая цена</label><br/>
  29.     <input type="text" name="sum" value="<? if(isset($sum)) echo $sum;?>"/><br/>
  30.     <input type="submit" value="Посчитать">
  31.     </form>
  32. </body>
  33. </html>
  34.  

Для многострочного прайса дописать не сложно.

upd. исправил ошибку в условном операторе.

(Отредактировано автором: 22 Февраля, 2012 - 14:59:13)

 
 Top
bubanay
Отправлено: 22 Февраля, 2012 - 14:41:58
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




я в php почти ноль, это сразу обработчик с формой? Их можно прям в 1 файл поместить?Поковыряюсь сейчас
 
 Top
Zuldek
Отправлено: 22 Февраля, 2012 - 15:00:03
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




bubanay пишет:
Их можно прям в 1 файл поместить?

да.
 
 Top
bubanay
Отправлено: 25 Февраля, 2012 - 11:55:13
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Не ругайтесь сильно, возможно я задаю очевидные вопросы, но вопрос создания калькулятора стоит остро((

Это место понятно

PHP:
скопировать код в буфер обмена
  1.    $fp = fopen ("test.csv","r");
  2.  
  3.     while (!feof($fp)){
  4.  
  5.     //прочитал в массив
  6.  
  7.     $data[] = fgetcsv($fp, 1000, ";");


а тут не совсем

PHP:
скопировать код в буфер обмена
  1.  if(isset($_POST['amount'])){
  2.  
  3.     $sum=((int)$_POST['amount'])>=
  4. ((int)$_POST['discount_amount'])?
  5. ((int)$_POST['price_discount']*(int)$_POST['amount']):
  6. ((int)$_POST['price']*(int)$_POST['amount']);
  7.     }


не нашел описания условий с переменными с помощью ? и :

По логике тут если количество товара больше оптового количества умножаем это количество на оптовую цену если нет то на обычную, к этим условиям прикрутить еще условий так и не удалось, пробовал нагромождать с помощью if else не вышло.

Подскажите как можно задать еще условий. Таблица состоит из 6 колонок (я ее на всякий случай прикрепил) :
1. название
2. от 30-50 кг цена1
3. от 50-100 кг цена 2
4. от 100-300 кг цена 3
5. от 300-500 кг цена 4
6. от 500-1000 кг цена 5

Как в строке
PHP:
скопировать код в буфер обмена
  1. <input type="text" name="tovar" value="<?=$data[0][0];?>"/><br/>
сделать выпадающий список городов мыслей вообще никаких(((

В итоге должно быть 3 поля:
1. Выберите пункт назначения и там выпадающий список городов.
2. Вес груза.
3. Итоговая стоимость.
Скачать файл: таблица тарифов.xlsx
Скачан раз: 105
 
 Top
Okula
Отправлено: 25 Февраля, 2012 - 12:51:03
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




условие ? значение1 : значение2
Это тернарный оператор. Сокращённая запись от if(...) {...} else {...}
 
 Top
bubanay
Отправлено: 25 Февраля, 2012 - 13:22:07
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  if(isset($_POST['amount'])){
  2.      $sum=((int)$_POST['amount'])>=
  3. ((int)$_POST['discount_amount'])?
  4. ((int)$_POST['price_discount']*(int)$_POST['amount']):
  5. ((int)$_POST['price']*(int)$_POST['amount']);
  6.     }


Попробовал переписать развернуто, где ошиблась?

PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['amount']))
  2. {
  3. if ($sum=((int)$_POST['amount'])>= ((int)$_POST['discount_amount'])
  4. {
  5. (int)$_POST['price_discount']*(int)$_POST['amount'];
  6. }
  7. else
  8. {
  9. (int)$_POST['price']*(int)$_POST['amount'];
  10. }

(Добавление)
нашел, скобочку забыл
 
 Top
bubanay
Отправлено: 27 Февраля, 2012 - 13:46:38
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




по аналогии получилось где-то вот так
PHP:
скопировать код в буфер обмена
  1. <?
  2.  
  3.     // test.csv содержит - 1;450;350;50  где 1 артикуд, 450 цена, 350 оптовая цена, 50 оптовое количество
  4.  
  5.     $fp = fopen ("test.csv","r");
  6.  
  7.     while (!feof($fp)){
  8.  
  9.     //прочитал в массив
  10.  
  11.     $data[] = fgetcsv($fp, 1000, ";");
  12.  
  13.     }
  14.  
  15.     // пишем калькулятор суммы
  16. $a=30;
  17. $b=50;
  18. $c=100;
  19. $d=300;
  20. $e=500;
  21. $g=1000;
  22. $data1=$data[0][1]; //цена1
  23. $data2=$data[0][2]; //цена2
  24. $data3=$data[0][3]; // цена3
  25. $data4=$data[0][4]; // цена4
  26. $data5=$data[0][5]; // цена5
  27.  
  28. if (isset($_POST['$amount']))
  29. {
  30.         if ($sum = $a < $_POST['$amount'] and $_POST['$amount'] < $b) //цена до 50
  31.  {$data1*(int)$_POST['amount'];}
  32.  
  33.         elseif($sum = $b < $_POST['$amount'] and $_POST['$amount'] < $c) //цена от 50-100
  34.  {$data2*(int)$_POST['amount'];}
  35.  
  36.  elseif($sum = $c < $_POST['$amount'] and $_POST['$amount'] < $d) //цена от 100-300
  37.  {$data3*(int)$_POST['amount'];}
  38.  
  39.   elseif($sum = $d < $_POST['$amount'] and $_POST['$amount'] < $e) //цена от 300-500
  40.  {$data4*(int)$_POST['amount'];}
  41.  
  42.   elseif($sum = $e < $_POST['$amount'] and $_POST['$amount'] < $g) //цена от 500-1000
  43.  {$data5*(int)$_POST['amount'];}
  44.  
  45. }
  46.     ?>
  47. <html>
  48.  
  49. <head>
  50.  
  51. <title>calc</title>
  52.  
  53. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  54.  
  55. </head>
  56.  
  57. <body>
  58.  
  59.     <form name="calc" action="#" method="post">
  60.  
  61.     <input type="text" name="tovar" value="<?=$data[0][0];?>"/><br/>
  62.    
  63.     <label>Введите количества товара</label><br/>
  64.  
  65.     <input type="text" name="amount"/><br/>
  66.  
  67.     <label>Тоговая цена</label><br/>
  68.  
  69.     <input type="text" name="sum" value="<? if(isset($sum)) echo $sum;?>"/><br/><!--isset определяет, установлена ли переменная-->
  70.  
  71.     <input type="submit" value="Посчитать">
  72.  
  73.     </form>
  74.  
  75. </body>
  76.  
  77. </html>


Но не работает, наверняка ошибся где-то и не уверен что вот эти строки коректно сделал
 
 Top
bubanay
Отправлено: 03 Марта, 2012 - 17:30:13
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Ищу человека который платно сделал бы мне калькулятор для тарифов. Единственно есть пара дополнительных пожеланий. Если интересно стучите в пм.
(Добавление)
Полное тезническое задание:
Нужно создать калькулятор тарифов похожий на калькулятор www[dot]md-cargo[dot]ru/calc_avia[dot]html

Прайс включает поля
1. Название компании которая везет груз (будет штуки 3 наверно)
2. Город в которой нужно вести груз
3. Поле с ценой до 50кг
4. Поле с ценой от 50-100
5. Поле с ценой от 100-300кг
6. Поле с ценой от 300-50кг
7. Поле с ценой свыше 500кг

Форма калькулятора должна включать поля:
1. Выпадающий список городов из прайса (1 стартовый пункт выберите пункт назначения).
2. Вес (вес груза который везет клиент)
3. Объем груза

Результат должен выводиться справа от таблички и долен включать в себя все совпадения по направлениям перевозок. То есть должна быть табличка с полями:
1. Первая ячейка строки Какая компания везет.
2. Направление
3. Итоговая сумма перевозки.

Итоговая сумма считается через объемный вес. То есть клиент допустим вбивает груз 50кг и объем груза 2. Объем груза умножается на коэффициент (постоянно 167) и потом умножается на цену перевозки из прайса +авианакладная. То есть 2*167*цену+стоимость авианакладной 500р.

Поля вес груза и объем груза обязательные для заполнения, в случае незаполнения сообщение Такие-то поля не заполнены. И при любых вариантах под таблицей итога надпись По вопросам обращайтесь по такому то телефону

Работу нужно выполнить как можно быстрее. Пишите сюда или на bubanay@yandex.ru

(Отредактировано автором: 03 Марта, 2012 - 18:36:04)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB