[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Форма для ввода данных
Страницы: 1, 2, 3
dima81
Всё должно располагаться в разных файлах. Форма в одном файле form.php, обработчик в другом - work.php.
Цель: данные вносятся в форму, нажимается кнопка добавить и данные уходят через $_POST в обработчик. Данные представляют из себя величины потребления электроэнергии разными пользователями, вносятся для всех в один день - расчётный день. В обработчике данные обрабатываются и отправляются в таблицы пользователей в базе данных.

Данные в обработчик попадают, что было проверено перенаправлением данных обратно в форму через $_SESSION, просто в файле формы это удобно мне было наблюдать.
Сейчас в обработчике данные, которые должны заноситься в соответствующие таблицы пользователей в БД, обрабатываются и данные например для абонента Вася добавляются только в одну таблицу - одного пользователя Вася, но судя по циклу foreach должны добавляться во все таблицы пользователей Петя, Женя...
Остальные же данные для Пети и Жени не уходят в таблицы этих пользователей.

Так вот данная проблема не проявляется, если код из обработчика перенести в файл формы, только поверял без условия на приём пост запроса, т.е. без

if ($Module == 'insert_vvod' and $_POST['enter']) {

Проверял когда при открытии формы сразу запрос в БД отправлялся.
Хотел проверить с условием, но сейчас не могу проверить, mysql поломался, ещё не сделал.
walerus
Код work.php
<?php

// Обработчик формы
if ( isset( $_POST['enter'] ) && isset( $_SESSION['USER_LOGIN'] ) ){

// Служебные данные
$date = date('Y-m-d');
$date_create = date('Y-m-d--H-i');
$login = $_SESSION['USER_LOGIN'];

/*
$_POST['id_consumer'] - входящий массив данных / hidden
$_POST['consumer_record'] - входящий массив данных / Показания, кВт*ч
$_POST['consumer_id_source'] - входящий массив данных / hidden
$_POST['consumer_debit'] - входящий массив данных / Внесение на счёт, руб
*/



$options = mysqli_fetch_assoc(mysqli_query($connect, "SELECT * FROM `options` ORDER BY id DESC LIMIT 1"));
$tarif_burtasovo = $options['tarif_burtasovo'];
$comission = $options['comission'];

// Если входящие данные - массив
if ( is_array( $_POST['id_consumer'] ) ){

foreach( $_POST['id_consumer'] as $id_consumer => $data_value ){

// $id_consumer - текущий ключ массива, который будет "использован" для остальных массивов
// $data_value - текущие данные массива $_POST["id_consumer"]

// Выбираем данные для текущего пользователя

$consumer = mysqli_fetch_assoc(mysqli_query($connect, "SELECT * FROM `consumer_".$data_value."` ORDER BY id DESC LIMIT 1"));

$consumer_record = $_POST['consumer_record'][$id_consumer];
$consumer_id_source = $_POST['consumer_id_source'][$id_consumer];
$consumer_debit = $_POST['consumer_debit'][$id_consumer];

// Расчет данных
$increment = ($consumer_record - $consumer['record']);
$cost = round(($tarif_burtasovo * $increment),2);
$comission_rub = round(($cost * $comission),2);
$summa = round(($cost + $comission_rub),2);
$credit = round(($summa),2);
$balance = (float) round(($consumer['balance'] + $consumer_debit - $credit),2);

echo "ID потребителя: " . $id_consumer . ' - ' . $data_value . "<br>\n";
echo "Введенные данные потребителя: " . $consumer_record . "<br>\n";
echo "ID источника потребителя: " . $consumer_id_source . "<br>\n";
echo "Внесено средств: " . $consumer_debit . "<br>\n";
echo "Разница показаний: " . $increment . "<br>\n";
echo "Цена: " . $cost . "<br>\n";
echo "Комиссия, руб.: " . $comission_rub . "<br>\n";
echo "Сумма: " . $summa . "<br>\n";
echo "Вычет: " . $credit . "<br>\n";
echo "На счёте: " . $balance . "<br>\n";

// Отправляем в базу
mysqli_query( $connect,
"INSERT INTO
`consumer_"
. $data_value . "`
SET
`date_create` = '"
. $date_create . "',
`login_user` = '"
. $login . "',
`id_source` = '"
. $consumer_id_source . "',
`id_consumer` = '"
. $data_value . "',
`date` = '"
. $date . "',
`tarif` = '"
. $tarif_burtasovo . "',
`record` = '"
. $consumer_record . "',
`comission` = '"
. $comission . "',
`increment` = '"
. $increment . "',
`cost` = '"
. $cost . "',
`summa` = '"
. $summa . "',
`credit` = '"
. $credit . "',
`debit` = '"
. $consumer_debit . "',
`balance` = '"
. $balance . "'
"

);
echo "<hr>\n";
}

echo "Все выполнено.";
die;

}else{
echo "Ошибка входящих данных";
die;
}
}
else{
echo "Ошибка параметров";
die;
}
?>
Только одно не понятно, для чего "клепать" столько таблиц, когда можно в одной все делать ? добавить "уникальное поле" с "consumer_id"... пробуй, проверяй.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.