0 / 0 / 0
Регистрация: 28.10.2017
Сообщений: 2
1

Вывести стоимость отдыха

28.10.2017, 20:07. Показов 1239. Ответов 3
Метки нет (Все метки)

Пытаюсь решить задачу.
Пользователь выбирает из выпадающего списка страну (Турция, Египет или Италия), вводит количество дней для отдыха и указывает, есть ли у него скидка (чекбокс). Вывести стоимость отдыха, которая вычисляется как произведение количества дней на 400. Далее это число увеличивается на 10%, если выбран Египет, и на 12%, если выбрана Италия. И далее это число уменьшается на 5%, если указана скидка.

Вот мой код

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<html>
    <head>
    </head>
    <body>
    <form method="post" name="forma" action="<?=$_SERVER['PHP_SELF']?>">
        <label>Выберите страну:</label>
        <select name="country">
            <option value="1">Турция</option>
            <option value="2">Египет</option>
            <option value="3">Италия</option>
        </select><br/><br/>
        <label>Введите количество дней:</label>
        <input type="number" name="days"/><br/><br/>
        <label>У Вас есть скидка?</label>
        <select name="disc">
            <option value="4">Да</option>
            <option value="5">Нет</option>
        </select><br/><br/>
        <input type="button" name="vich" value="Подсчитать"/><br/><br/>
    </form>
    <?php
$z=isset($_POST["days"]);
$x=isset($_POST["country"]);
$y=isset($_POST["disc"]);
$s=$z*400;
if (isset($_POST["vich"])){
    if ($x=="1"){
        if($y=="4"){
            $s=$s+$s*5/100;
            echo "$s";}
        elseif($y=="5"){
            echo "$s";}
    }
    elseif ($x=="2"){
        if($y=="4"){
            $s=$s+$s*15/100;
            echo "$s";}
        elseif($y=="5"){
            $s=$s+$s*10/100;
            echo "$s";}
    }
    elseif ($x=="3"){
        if($y=="4"){
            $s=$s+$s*17/100;
            echo "$s";}
        elseif($y=="5"){
            $s=$s+$s*12/100;
            echo "$s";}
    }   
}
?>
    </body>
</html>
При попытке подсчитать стоимость ничего не происходит. Помогите пожалуйста, я новичок и уже неделю мучаюсь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2017, 20:07
Ответы с готовыми решениями:

Как при выборе select вывести количество и стоимость
Как при выборе значений из select'a(данные берутся из БД) в колонку &quot;Кол-во&quot; и &quot;Цена&quot; - вписывать 1...

Использование while: вывести прогнозируемую стоимость товара к концу текущего года и в последующие годы
Пусть стоимость товара равна 100 р. в начале текущего года. Процент инфляции в этом году по...

Вывести стоимость всех товаров в начале рабочего дня и стоимость всех не проданных товаров.
Продаются товары двух видов. Запросить с клавиатуры для каждого вида товаров цену, количество в...

Вывести стоимость
Вывести стоимость двух товаров и вывести насколько дороже первый чем второй

3
767 / 323 / 157
Регистрация: 26.05.2016
Сообщений: 2,127
28.10.2017, 22:51 2
Цитата Сообщение от Alexandra1988 Посмотреть сообщение
$z=isset($_POST["days"]); $x=isset($_POST["country"]); $y=isset($_POST["disc"]);
вместо этого

так:
PHP
1
$z=$_POST["days"]; //и тд

вместо этого

HTML5
1
   <input type="button" name="vich" value="Подсчитать"/><br/><br/>

так


HTML5
1
   <input type="submit" name="vich" value="Подсчитать"/><br/><br/>
0
3322 / 2842 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
29.10.2017, 01:31 3
Цитата Сообщение от Alexandra1988 Посмотреть сообщение
ничего не происходит
С этим вам уже помог andyyy выше, а меня слегка смущают ваши расчеты. В частности, "скидку" вы не отнимаете, а прибавляете, тем самым увеличиваете стоимость вместо её уменьшения. И тут еще вопрос в в последовательности: то ли надбавка за страну и скидка должны высчитываться от стартовой стоимости, то ли к стартовой стоимости прибавляется надбавка, а уже потом, если есть скидка, вычитается 5%?
Могу предложить такие варианты:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
$data = filter_input_array(INPUT_POST, [
  'country' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 1, 'max_range' => 3, 'default' => 1]],
  'days' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 1, 'default' => 0]],
  'disc' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 4, 'max_range' => 5, 'default' => 4]],
]);
if (!empty($data['days'])) {
  // Стоимость одного дня
  $day_cost = 400;
  // % надбавки для стран
  $country_surcharge = [
    1 => 0,
    2 => 0.1,
    3 => 0.12
  ];
  // % скидки
  $discount_percent = [
    4 => 0.05,
    5 => 0
  ];
 
  // Расчеты по первому варианту
  $start_cost = $data['days'] * $day_cost;
  $total = $start_cost + $start_cost * $country_surcharge[$data['country']] - $start_cost * $discount_percent[$data['disc']];
 
 
  // Расчеты по второму варианту
  /*
  $total = $data['days'] * $day_cost;
  $total += $total * $country_surcharge[$data['country']];
  $total -= $total * $discount_percent[$data['disc']];
  */
  echo $total;
}
И еще вот это
Цитата Сообщение от Alexandra1988 Посмотреть сообщение
есть ли у него скидка (чекбокс)
Элемента с типом checkbox, я у вас в коде не увидел. Если всё-таки вы решите его добавить, то укажите ему сразу значение равное 0.05
HTML5
1
<input type="checkbox" name="disc" value="0.05">
В этом случае нам не понадобится массив $discount_percent и в фильтрации нужно будет изменить тип фильтра и опции:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$data = filter_input_array(INPUT_POST, [
  'country' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 1, 'max_range' => 3, 'default' => 1]],
  'days' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 1, 'default' => 0]],
  'disc' => ['filter' => FILTER_VALIDATE_FLOAT, 'options' => ['default' => 0]],
]);
if (!empty($data['days'])) {
  // Стоимость одного дня
  $day_cost = 400;
  // % надбавки для стран
  $country_surcharge = [
    1 => 0,
    2 => 0.1,
    3 => 0.12
  ];
  
  // Расчеты по первому варианту
  $start_cost = $data['days'] * $day_cost;
  $total = $start_cost + $start_cost * $country_surcharge[$data['country']] - $start_cost * $data['disc'];
 
  // Расчеты по второму варианту
  /*
  $total = $data['days'] * $day_cost;
  $total += $total * $country_surcharge[$data['country']];
  $total -= $total * $data['disc'];
  */
  echo $total;
}
0
0 / 0 / 0
Регистрация: 28.10.2017
Сообщений: 2
29.10.2017, 19:46  [ТС] 4
Ура! Заработало! Спасибо всем за подсказки! В расчетах я действительно напутала. В итоге у меня вот что получилось:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<html>
    <head>
    </head>
    <body>
    <form method="post" name="forma" action="<?=$_SERVER['PHP_SELF']?>">
        <label>Выберите страну:</label>
        <select name="country">
            <option value="1">Турция</option>
            <option value="2">Египет</option>
            <option value="3">Италия</option>
        </select><br/><br/>
        <label>Введите количество дней:</label>
        <input type="number" name="days"/><br/><br/>
        <label>У Вас есть скидка?</label>
        <select name="disc">
            <option value="4">Да</option>
            <option value="5">Нет</option>
        </select><br/><br/>
        <input type="submit" name="vich" value="Подсчитать"/><br/><br/>
    </form>
    <?php
$z=$_POST["days"];
$x=$_POST["country"];
$y=$_POST["disc"];
$s=$z*400;
if (isset($_POST["vich"])){
    if ($x=="1"){
        if($y=="4"){
            $s=$s-$s*0.05;
            echo "Стоимость Вашего отдыха:   ","$s"," руб.";}
        elseif($y=="5"){
            echo "Стоимость Вашего отдыха:   ","$s"," руб.";}
    }
    elseif ($x=="2"){
        if($y=="4"){
            $s=$s-$s*0.05+$s*0.1;
            echo "Стоимость Вашего отдыха:   ","$s"," руб.";}
        elseif($y=="5"){
            $s=$s+$s*0.1;
            echo "Стоимость Вашего отдыха:   ","$s"," руб.";}
    }
    elseif ($x=="3"){
        if($y=="4"){
            $s=$s-$s*0.05+$s*0.12;
            echo "Стоимость Вашего отдыха:   ","$s"," руб.";}
        elseif($y=="5"){
            $s=$s+$s*0.12;
            echo "Стоимость Вашего отдыха:   ","$s"," руб.";}
    }   
}
?>
    </body>
</html>
Может можно было сделать код и попроще, но я эту задачу вижу так.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2017, 19:46
Помогаю со студенческими работами здесь

Вывести стоимость конфет
Дано вещественное число — цена 1 кг конфет. Вывести стоимость 1, 2, … , 10 кг конфет. нужно...

For: Вывести стоимость 0.1, 0.2, ... , 1 кг конфет
For. Дано вещественное число — цена 1 кг конфет. Вывести стоимость 0.1, 0.2, ... , 1 кг конфет. ...

Вывести стоимость 10 кг конфет
Помогите решить пожалуйста,у меня сейчас идет практика.

Вывести стоимость 10 кг конфет
Дано вещественое число 1кг конфет. вывести стоимость 0,1 0,2 ... 1 кг конфет. называйте темы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru