@redcap152

Почему неправильно работает расчёт в скрипте?

Здравствуйте! По каким-то причинам неправильно работает расчёт в скрипте (считает только оплату по социальному тарифу и то неправильно).
Вот нерабочая версия скрипта:
<head>
    <title></title>
</head>
<?php
error_reporting(E_ALL);
foreach ($_POST as $key => $value)
{
   echo $key . ' = ' . $value . "<br>\n";
}
//Переменные для подключения к базе данных
$dbname = "_zkh";
$dbpassword = "pass";
$dbuser = "_zkh";
$dbhost = "localhost";
$dbtable = "electroel";
//задаём типы переменных
settype($normv, "float");
settype($socv, "float");
settype($daycur, "integer");
settype ($nightcur, "integer");
settype ($dayprev, "integer");
settype ($nightprev, "integer");
settype ($d1, "integer");
settype ($n1, "integer");
settype ($sum, "integer");
settype ($sum2, "integer");
$normv = 5.73; //нормальный тариф
$socv = 3.32; //социальный тариф
if(!empty($_POST['year'])) {$year = $_POST['year'];} else { $year = 0;} 
if(!empty($_POST['month'])) {$month = $_POST['month'];} else { $month = 0;} 
if(!empty($_POST['daycur'])) {$year = $_POST['daycur'];} else { $daycur = 0;} 
if(!empty($_POST['nightcur'])) {$year = $_POST['nightcur'];} else { $nightcur = 0;} 
if(!empty($_POST['dayprev'])) {$dayprev = $_POST['dayprev'];} else { $dayprev = 0;} 
if(!empty($_POST['nightprev'])) {$nightprev = $_POST['nightprev'];} else { $nightprev = 0;} 
$d1 = $daycur - $dayprev;
$n1 = $nightcur - $nightprev;
$sum = $d1 + $n1;
if ($sum >=75) {
  $sum2 = $sum-75; 
  $normpay = $sum2*$normv;
  $socpay= 75*$socv; 
} else {
  $normpay = 0;
  $socpay = $sum *75;
}
echo "d1= ($d1)";

echo "<br>";
echo "n1 = $n1";
echo "<br>";
echo "sum = $sum";
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>";
if ($socpay and $normpay) {
    $sum3 = $socpay + $normpay;
    echo "<p style = 'color:blue; font-weight:700'>Итого :$sum3 руб</p>";
    $to = "abcde12345@abcde123.ru"; 
// емайл получателя 
 $subject = "Расчёты электроэнергия Невская за $month $year года ";
$message = "Плата за электроэнергию по социальному тарифу  за $month $year года: $socpay руб
Плата за электроэнергию по обычному тарифу  за $month $year года : $normpay руб
Итого :$sum3 руб
 Т1 текущий (день): $daycur
 Т2 текущий (ночь): $nightcur
 Т1 предыдущий (день):$dayprev
 Т2 предыдущий (ночь): $dayprev
"; 
// текст сообщения, здесь вы можете вставлять таблицы, рисунки, заголовки, оформление цветом и т.п.
// формат письма html
$mailheaders .= "From: ЖКХ <noreply@redcap52.ru>rn"; 
$mailheaders .= "Reply-To: support@redcap52.ru"; 
// емайл отправителя и емайл для ответа 
 
mail($to, $subject, $message, $mailheaders);
// отправляем письмо 
    // Подключение к базе данных
    $db = mysql_connect($dbhost,$dbuser,$dbpassword) OR DIE("Не могу создать соединение ");
     
    // Выборка базы
    mysql_select_db("",$db);
     
    // Установка кодировки соединения
    mysql_query("SET NAMES 'utf8'",$db);
     
    $result = mysql_query ("INSERT INTO ".$dbtable." (daycur,dayprev,nightcur,nightprev,itog) VALUES ('$daycur','$dayprev' , '$nightcur' , '$nightprev' , '$sum3')");
     
    if ($result = 'true'){
        echo "Информация занесена в базу данных";
    }else{
        echo "Информация не занесена в базу данных";
    
}
}
?>
<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 = "dayprev">
     <p>Предыдущие показания Т2 (ночь):</p>
    <input type = "number" name = "nightprev">
    <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>
</select>
<input type = "submit" value = "Рассчитать">
</form>
<a href = "electroel.php"><p style = "font-weight:700; color:blue">Рассчитать электроэнергию (электронный счётчик)</p></a>
<a href = "electrosimple.php"><p style = "font-weight:700; color:red">Рассчитать электроэнергию (обычный счётчик)</p></a>
<a href = "gaz.php"><p style = "font-weight:700; color:green">Рассчитать газ</p></a>

Вывел переменные, такое ощущение, что $daycur = 0, и поэтому разность отрицательная. А почему так происходит?
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 1
prototype_denis
@prototype_denis
Symfony
Для начала отформатируйте ваш код.

До
if(!empty($_POST['nightcur'])) {$year = $_POST['nightcur'];} else { $nightcur = 0;}


После
if (!empty($_POST['nightcur'])) {
    $year = $_POST['nightcur'];
} else { 
    $nightcur = 0;
}


Ошибку видно?

Поверьте, копипаста страшнее использования устаревших mysql_* функций.
Удачи!
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы