Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Калькулятор метража, 4 услуги, а так же скидки на каждую!
 
 автор: Panker   (22.06.2006 в 14:40)   письмо автору
 
 

Вот задача такая блин :(
Есть значит 4 услуги Дизайн-проект Инж. Проект Строительство Отделка
на каждую услугу есть свои цены
так же есть свои скидки!
Просто цены бы я думаю помучался бы сделал но не знаю как быть со скидками!
Помогите сооброзть, до вечера надо сделать, или скажите сколько возмёте за такой кункулятор блин :(
Корчое прайсик вот
Вид услуг Цена за метр2 0-100 100-150 150-300 300-800 800-более
Дизайн-проект---------кнопка------60----------55-----------45----------45-----------40
Инж. Проект------------кнопка------30----------25-----------25----------22----------20
Строительство---------кнопка------650------- 650----------600--------550--------500
Отделка-----------------кнопка------400--------380---------360--------360---------350
Кнопочка подсчитать всё!
Кнопка это типа чет бокс!
Скрин прикрепил в аттач!
Помогите сделать или какой принцип если считать со скидками :(

   
 
 автор: valenok   (22.06.2006 в 14:47)   письмо автору
 
   для: Panker   (22.06.2006 в 14:40)
 

Ну ты так:
 <?
$sum
=0;

$metraz=$_POST['metraz'];
$dizain=$_POST['dizain'];
$ingener=$_POST['ingener'];
$stroitelstvo=$_POST['stroitelstvo'];
$otdelka=$_POST['otdelaka'];

$skidaka_na_dizain=0.2// 20%
$dizain_cena_na_metr=100// 100 рублей без скидки

if($dizain=="True"){$sum+=$metraz*$dizain_cena_na_metr*(1-$skidaka_na_dizain);}


И так со всеми.
В итоге echo $sum;

   
 
 автор: Panker   (22.06.2006 в 14:53)   письмо автору
 
   для: valenok   (22.06.2006 в 14:47)
 

не много не понел ваш вариант (
Но вот есть мысль, описал как смог, оброзно так как бы!
Подскажите верно иду или нет?

Можно сделать так!
Если Дизайн будет $diz а метраж $m2_diz то при выбори галочки Дизайна
А цены обозночать так
$cena_na_diz_ot_0_do_100metrov="60$";
$cena_na_diz_ot_100_do150metrov="55$";
$cena_na_diz_ot_150_do_300metrov="45$";
$cena_na_diz_ot_300_do800metrov="45$";
$cena_na_diz_ot_800metrov="40$";
Далее 
Сравнваем что у нас в текст поле
Если цифра до 100 тоисть 
if ( m2_diz == < 100 )
{ $cena == $cena_na_diz_ot_0_do_100metrov };
else { echo " какаета ошибка в этом канкуляторе, держащейся на чесном слове"; }
Длаее мы мебёрм
$cena и умножаем её на $md2_diz
результат пишим в $rezultat
и в конце концов выводим 
<? echo " Цена на Дизайн-проект будет равна $rezultat....ваш метраш $md2_diz...цена на квадратный метр была.....$cena"?>

   
 
 автор: valenok   (22.06.2006 в 15:07)   письмо автору
 
   для: Panker   (22.06.2006 в 14:53)
 

Проверяем - пометил ли друг дизайн.
Если да, то прибавляем к конгечной сумме метраж умноженный на цену за метр и вычитаем скидку.

   
 
 автор: Panker   (22.06.2006 в 15:15)   письмо автору
 
   для: valenok   (22.06.2006 в 15:07)
 

Глупо )) но не напомните умноженяи деления ну и так далее )) а то книги перевернул, не нащёл где там со сложением и вычитанием )

   
 
 автор: valenok   (22.06.2006 в 15:17)   письмо автору
 
   для: Panker   (22.06.2006 в 15:15)
 

Я вас не понял.

   
 
 автор: Panker   (22.06.2006 в 15:18)   письмо автору
 
   для: Panker   (22.06.2006 в 15:15)
 

всё с умножением разобрался )
ща посижу не много свопросами так или иначе приду :)

   
 
 автор: valenok   (22.06.2006 в 15:20)   письмо автору
 
   для: Panker   (22.06.2006 в 15:18)
 

Умножение: $a * $b ;
Деление: $a / $b ;
Сложение: $a + $b ;
Вычитание: $a - $b ;
Модуль: $a % $b; // Тоесть остаток от деления $a на $b -> 6%4 = 2

   
 
 автор: Panker   (22.06.2006 в 15:21)   письмо автору
 
   для: Panker   (22.06.2006 в 15:18)
 

Поэтапно лучше!
Мне надо сравнить метраж!
Если он больше 100 то цена одна если мнеьше то друга!
Как мне это сделат ь:)
Вот я вроде правельно делаю но на дели нет :)

<?
if($metraz 100)
$cena == $cena_na_diz_ot_0_do_100metrov }
echo 
"$cena"?>

что не так ? :)

   
 
 автор: valenok   (22.06.2006 в 15:22)   письмо автору
 
   для: Panker   (22.06.2006 в 15:21)
 

Так.
If ( $metraz < 100 ) { $cena == $cena_na_diz_ot_0_do_100metrov ;};

   
 
 автор: valenok   (22.06.2006 в 15:24)   письмо автору
 
   для: valenok   (22.06.2006 в 15:22)
 

Как видишь - у тебя всё правильно, только скобки круглые у if'а и кривые у того что делать..
И ещё я добавил точку с запятой в конце того что в кривых скобках.

   
 
 автор: Panker   (22.06.2006 в 15:27)   письмо автору
 
   для: valenok   (22.06.2006 в 15:24)
 

Что то я не так навреное ТВОРЮ :)

Parse error: parse error, unexpected T_VARIABLE in z:\home\kankuliator\www\submit.php on line 2

код

<? Error_Reporting(E_ALL & ~E_NOTICE)
$cena_na_diz_ot_0_do_100metrov="123";
If ( 
$metraz 100 ) { $cena == $cena_na_diz_ot_0_do_100metrov;};
echo 
"$cena"?>

   
 
 автор: valenok   (22.06.2006 в 15:29)   письмо автору
 
   для: Panker   (22.06.2006 в 15:27)
 

<? Error_Reporting(E_ALL & ~E_NOTICE) ;

   
 
 автор: valenok   (22.06.2006 в 15:30)   письмо автору
 
   для: valenok   (22.06.2006 в 15:29)
 

Я бы тебе посоветовал пока убрать эту строку Еrror_Reporting(E_ALL & ~E_NOTICE) ;
А потом когда закончишь - добавить.
Так будет проще ошибки отлавливать.

   
 
 автор: Panker   (22.06.2006 в 15:32)   письмо автору
 
   для: valenok   (22.06.2006 в 15:29)
 

АГА, до смешного доходит ((
Блин нерничаю!
Вот корчое
сейчас я делаю так

<? Error_Reporting(E_ALL & ~E_NOTICE);
$cena_na_diz_ot_0_do_100metrov="60$"
$cena_na_diz_ot_100_do150metrov="55$"
$cena_na_diz_ot_150_do_300metrov="45$"
$cena_na_diz_ot_300_do800metrov="45$"
$cena_na_diz_ot_800metrov="40$";
If ( 
$metraz 100 ) { $cena == $cena_na_diz_ot_0_do_100metrov;};
echo 
"$cena"?>

надеялся что echo "$cena"; ?> вывидит что то но фиг мне ))

   
 
 автор: valenok   (22.06.2006 в 15:38)   письмо автору
 
   для: Panker   (22.06.2006 в 15:32)
 

="45$";
Первращает перемнную в строку
А сделать 22+привет=
Не очень..

$cena_na_diz_ot_800metrov=40;
echo $cena."$"; ?>
...

   
 
 автор: Trianon   (22.06.2006 в 14:56)   письмо автору
 
   для: valenok   (22.06.2006 в 14:47)
 

а вот эту штуку имеет смысл слепить на JS

   
 
 автор: Panker   (22.06.2006 в 15:00)   письмо автору
 
   для: Trianon   (22.06.2006 в 14:56)
 

Если бы я знал этот JS )))
мне бы как нить сделат ь:) друг попросил до вечера, я с дуру ляпнул ВСЁ БУДИТ ТИП ТОП ))
Сидел думал ))
Система выходит не хуже поисковика :)))))))))))))))))))))))

   
 
 автор: kolobokk   (22.06.2006 в 15:33)   письмо автору
 
   для: Panker   (22.06.2006 в 14:40)
 

две связанные таблицы
uslugi (id_usl, naimen_usl)
skidki (id_skidki, interval, price, id_usl)
в interval записываешь только верхние пределы в порядке возрастания
у checkbox ов значения value соответствуют id_usl


$qry=$mysql_query("select price from skidki where id_usl='".$_POST['value_checkbox']."' and '".$_POST['value_text_field']."' >interval");
$itog_price=mysql_fetch_array($qry);
$summa=$_POST['value_text_field']*$itog_price;

   
 
 автор: Panker   (22.06.2006 в 15:35)   письмо автору
 
   для: kolobokk   (22.06.2006 в 15:33)
 

<ysql не подходит :(

   
 
 автор: Trianon   (22.06.2006 в 15:37)   письмо автору
 
   для: Panker   (22.06.2006 в 15:35)
 


<html>

<head>
  <title></title>
<script>
function calc(x)
{
   discount = [100,150,300,800];
   price =  [[60,55,45,45,40],
             [30,25,25,22,20],
             [650,650,600,550,500],
             [400,380,360,360,350]];

   v = x.elements.Sq.value;
   for(i  = 0; i < discount.length; i++) if(v < discount[i]) break;
    for(s = 0, j = 0; j < 4; j++)
      if(x.elements[j+1].checked)
      s += price[j][i];
    x.elements.sum.value =  s*v;


}
</script>

</head>

<body>
<form name=fnm>
<br/>Метраж, м<sup>2</sup> <input name='Sq' value=0>
<br/><input type=checkbox name=r value=0> Дизайн-проект
<br/><input type=checkbox name=r value=1> Инж. Проект
<br/><input type=checkbox name=r value=2> Строительство
<br/><input type=checkbox name=r value=3> Отделка
<br/><input type=button value=Calculate onClick="calc(this.form);" >
     <input name=sum value=0 >
<form>

</body>

</html>

   
 
 автор: Trianon   (22.06.2006 в 15:40)   письмо автору
 
   для: Trianon   (22.06.2006 в 15:37)
 

Или нужен непрерывный нарастающий итог?
Тогда чуть сложнее будет. На строку - две. :)

   
 
 автор: kolobokk   (22.06.2006 в 15:40)   письмо автору
 
   для: Trianon   (22.06.2006 в 15:37)
 

отличный вариант :)))

   
 
 автор: kolobokk   (22.06.2006 в 15:38)   письмо автору
 
   для: Panker   (22.06.2006 в 15:35)
 

тоже самое можно попробовать организовать и на файлах

   
 
 автор: valenok   (22.06.2006 в 15:40)   письмо автору
 
   для: kolobokk   (22.06.2006 в 15:33)
 

$qry=$mysql...
Убери знак доллара перед названием функции. Тоесть $qry=mysql_q...

   
 
 автор: Panker   (22.06.2006 в 15:59)   письмо автору
 
   для: kolobokk   (22.06.2006 в 15:33)
 

Trianon
Блин )) я уже говорил что я буду малится на этот форум ) тотем поставлю и по 2 часа в день стаьбильно ))
Помойму всё отлично )) если что обращусь, но на врятли что то понадобится ) канкулятор шикарный )))

   
 
 автор: Trianon   (22.06.2006 в 16:37)   письмо автору
 
   для: Panker   (22.06.2006 в 15:59)
 

>Trianon
>Блин )) я уже говорил что я буду малится на этот форум )
>тотем поставлю и по 2 часа в день стаьбильно ))

лоб не разбейте :)

>Помойму всё отлично )) если что обращусь, но на врятли что
>то понадобится ) канкулятор шикарный )))

Всё же нарастающий итог будет правильней.
И с точки зрения заказчика, и с точки зрения бухгалтера.
Иначе на стыках цен получаются рывки стоимости заказа.
Так что вот так:

<html><head> <title></title><script>
function calc(x)
{
   discount = [0-100,100-150,150-300,300-800, 800-2000000000];
   price =  [[60,55,45,45,40],
             [30,25,25,22,20],
             [650,650,600,550,500],
             [400,380,360,360,350]];
   v = x.elements.Sq.value;
   for(t=p=q=i=0; i < discount.length; i++, v -= q, t += s)
    for(q = Math.min(-discount[i],v), s=j= 0; j < 4; j++)
      if(x.elements[j+1].checked)
      s += price[j][i]*q;
   x.elements.sum.value =  t;
}
</script>

</head>

<body>
<form name=fnm>
<br/>Метраж, м<sup>2</sup> <input name='Sq' value=0>
<br/><input type=checkbox name=r value=0> Дизайн-проект
<br/><input type=checkbox name=r value=1> Инж. Проект
<br/><input type=checkbox name=r value=2> Строительство
<br/><input type=checkbox name=r value=3> Отделка
<br/><input type=button value=Calculate onClick="calc(this.form);" >
     <input name=sum value=0 >
<form></body></html>

   
 
 автор: Panker   (23.06.2006 в 14:15)   письмо автору
 
   для: Trianon   (22.06.2006 в 16:37)
 

Туго сооброжаю ) Лоб расшиб :)))
Спасибочки большое ))
Всё поставил всё сделал ))) Не упал в глазах друга ))) хех ))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования