@redcap152

Почему записи в базу данных не происходит?

<head>
    <title>Расчёт электроэнергии</title>
</head>
<?php
//Переменные для подключения к базе данных
$dbname = "login";
$dbpassword = "pass";
$dbuser = "db";
$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; //социальный тариф
$year = $_POST ['year'];
$month = $_POST ['month'];
$daycur = $_POST ['daycur'];
$nightcur = $_POST ['nightcur'];
$dayprev = $_POST ['dayprev'];
$nightprev = $_POST ['nightprev'];
$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;
}
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 = "mail@yandex.ru"; 
// емайл получателя 
 $subject = "Расчёты электроэнергия  за $month $year года ";
$message = "Плата за электроэнергию по социальному тарифу  за $month $year года: $socpay руб
Плата за электроэнергию по обычному тарифу  за $month $year года : $normpay руб
Итого :$sum3 руб
 Т1 текущий (день): $daycur
 Т2 текущий (ночь): $nightcur
 Т1 предыдущий (день):$dayprev
 Т2 предыдущий (ночь): $dayprev
"; 
// текст сообщения, здесь вы можете вставлять таблицы, рисунки, заголовки, оформление цветом и т.п.
// формат письма html
$mailheaders .= "From: ЖКХ <noreply@mail.ru>rn"; 
$mailheaders .= "Reply-To: support@mail.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>
<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>

Есть такой код на PHP. Почему-то, когда нажимаю кнопку "Рассчитать", то не происходит записи в базу данных, хотя появляется надпись "Информация занесена в базу данных".
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik Куратор тега PHP
А что делать тогда?


Первым делом, первой строкой error_reporting(E_ALL); включить вывод ошибок в браузер , а дальше смотреть ошибки, предупреждения, которые выдаёт php, искать в google и в официальной документации ответы и исправлять.

$year = $_POST ['year']; - неверно.
OR DIE - не рекомендуется.
В sql запросе:
1) названия таблиц в обратные кавычки
2) Переменные без обработки не подставлять в запрос (sql инъекция)
3) Запрос к базе желательно оформить так
$query = 'INSERT INTO ..... ';
if(!mysql_query($query)){
  echo mysql_errno() . ": " . mysql_error();


Ну и так далее и тому подобное
Ответ написан
Ваш ответ на вопрос

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

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