@redcap152

Почему некорректно работает вычитание?

<?php
$normv = 5.73;
$socv = 3.32;
$year = $_POST ['year'];
$month = $_POST ['month'];
$daycur = $_POST ['daycur'];
$nightcur = $_POST ['nightcur'];
$dayprev = $_POST ['dayprev'];
$nightprev = $_POST ['nightprev'];
$d1 = $daycur - $dayprev;
echo $d1;
echo "<br> $nightprev";
echo "<br> $dayprev";
echo "<br> $daycur";
echo "<br> $nightcur";
$n1 = $nightcur - $nightprev;
echo "<br> $n1";
$sum = $d1 + $n1;
 if ($sum)echo $sum;
if ($sum >=75) {
  $sum2 = $sum-75; 
  $normpay = $sum2*$normv;
  $socpay= 75*$socv; 
} else {
  $normpay = 0;
  $socpay = $sum *75;
}
if ($socpay)echo "<p style = 'color:green; font-weight:700'>Плата за электроэнергию по социальному тарифу (деревня) за $month $year года: $socpay руб</p>";
if ($normpay) echo " <p style = 'color:red; font-weight:700'>Плата за электроэнергию по обычному тарифу (деревня) за $month $year года : $normpay руб</p>"
?>
<form method = "post">
    <p>Текущие показания Т1 (день):</p>
    <input type = "number" name = "daycur">
    <p>Текущие показания Т2 (ночь):</p>
    <input type = "number" name = "nightcur">
    <p>Предыдущие показания Т1 (день):</p>
    <input type = "number" name = "prevday">
     <p>Предыдущие показания Т2 (ночь):</p>
    <input type = "number" name = "prevnight">
    <p>Текущий месяц:</p>
<select name = "month">
<option>Январь</option>
<option>Февраль</option>
<option>Март</option>
<option>Апрель</option>
<option>Май</option>
<option>Июнь</option>
<option>Июль</option>
<option>Август</option>
<option>Сентябрь</option>
<option>Октябрь</option>
<option>Ноябрь</option>
<option>Декабрь</option>
</select>
<p>Текущий год:</p>
<select name = "year">
<option>2016</option>
<option>2017</option>
<option>2018</option>
<option>2019</option>
<option>2020</option>
<input type = "submit" value = "Рассчитать">
</form>

Почему неправильно работает вычитание? Т.е. $n1 = 541011196 при $nightcur = 5410 $dayprev = 5675 $nightprev = 5321 и $daycur=5786
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
@SergeyZelensky-Rostov
Вот
преобразуйте входные данные к тому типу данных с которым собираетесь работать,обязательно!!!! Фильтруйте ввод, это касаемо всего строки обязательно надо проверять на наличие пробелов по краям,и спец символов, если вводиться целое число делайте intval() или (int) и т.д.
Ошибка:
<input type = "number" name = "prevday">
$_POST ['dayprev'];

поле называется prevday, а вы пытаетесь получить значения поля dayprev которое не существует
поэтому $dayprev = 0
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы