Доброго времени суток!
Суть вопроса в следующем, есть форма, собирающая данные и передающая их POST методом обработчику, который эти методы вносит в базу и выводит сообщение об успехе или неудаче.
$pokazaniya = $_POST['pokazaniya'];
$app_number = $_POST['appartment_number'];
$house_number = $_POST['house_number'];
$id = $_POST['id'];
$row = mysql_query("select * from `$table` where id='$id' ");
$res = mysql_fetch_array($row);
if(mysql_num_rows($row) > 0){
//если пользователь есть, проверяем пароли
if($house_number != $res['house_number']){ {echo 'данные не совпадают!';}}
elseif ($app_number != $res['app_number']){
{echo 'данные не совпадают!';}
}
else{
// выбираем все значения из таблицы "Contacts"
$qr_result = mysql_query("select * from `$table` where id='$id' ")
or die(mysql_error());
// выводим на страницу сайта заголовки HTML-таблицы
echo '<form action="zapis_v_bazu2.php" method="post" id="myform"></form>';
echo '<table border="1">';
echo '<thead>';
echo '<tr>';
echo '<th>Поле 1</th>';
echo '<th>Поле 2</th>';
echo '<th>Поле 3</th>';
echo '<th>Поле 4</th>';
echo '<th>Поле 5</th>';
echo '<th>Поле 6</th>';
echo '<th>Поле 7</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
// выводим в HTML-таблицу все данные клиентов из таблицы MySQL
while($data = mysql_fetch_array($qr_result)){
echo '<tr>';
echo '<td><input type="text" name="street" value="' . $data['street'] . '" maxlength="10" form="myform" disabled></td>';
echo '<td><input type="text" name="house_number" value="' . $data['house_number'] . '" maxlength="10" form="myform" disabled></td>';
echo '<td><input type="text" name="appartment_number" value="' . $data['app_number'] . '" maxlength="10" form="myform" disabled></td>';
echo '<td><input type="text" name="device_id" value="' . $data['device_id'] . '" maxlength="10" form="myform" disabled></td></td>';
echo '<td><input type="text" name="description" value="' . $data['description'] . '" maxlength="10" form="myform" disabled></td>';
echo '<td><input type="number" name="old_meterage" value="' . $data['old_meterage'] . '" maxlength="10" form="myform" disabled></td>';
echo '<td><input type="text" name="pokazaniya[' .$data['base_id']. ']" maxlength="10" form="myform"></td>';
echo '<input type="text" name="id" value="' . $data['id'] . '" maxlength="10" form="myform" hidden >';
echo '<input type="text" name="house_number" value="' . $data['house_number'] . '" maxlength="10" form="myform" hidden >';
echo '<input type="text" name="appartment_number" value="' . $data['app_number'] . '" maxlength="10" form="myform" hidden >';
echo '<input type="text" name="device_id" value="' . $data['device_id'] . '" maxlength="10" form="myform" hidden ></td>';
echo '<input type="text" name="description" value="' . $data['description'] . '" maxlength="10" form="myform" hidden >';
echo '<input type="number" name="old_meterage" value="' . $data['old_meterage'] . '" maxlength="10" form="myform" hidden >';
echo '';
}
echo '</tbody>';
echo '</table>';
echo '<input type="submit" value="Отправить" form="myform"/> ';
}}
else{
{echo 'такого пользователя нет!';}}
То есть на этой странице формируется таблица индивидуальная для каждого пользователя со статическими полями содержащими инфо из базы данных и полем для ввода информации по прибору.
Однако у одного пользователя может быть несколько приборов, и поэтому полей формы с одинаковым названием тоже может быть несколько, поэтому я присвоил этому полю значение массива.
Следующий обработчик должен получить данные из указанной выше формы по POST методу и на основе них ввести данные показателей для каждого из приборов индивидуально в базу данных и вывести таблицу, содержащую строки (по кол-ву приборов у пользователя), столбцы - по кол-ву данных, переданных формой.
$pokazaniya = $_POST['pokazaniya'];
$app_number = $_POST['appartment_number'];
$house_number = $_POST['house_number'];
$description = $_POST['description'];
$old_meterage = $_POST['old_meterage'];
$device_id = $_POST['device_id'];
$id = $_POST['id'];
$row = mysql_query("select * from `$table` where id='$id' ");
$res = mysql_fetch_array($row);
var_dump($_POST);
foreach($_POST as $POST_array) {
$id_array = $POST_array["id"];
$app_number_array = $POST_array["app_number"];
$house_number_array = $POST_array["house_number"];
$device_id_array = $POST_array["old_meterage"];
$description_array = $POST_array["description"];
$old_meterage_array = $POST_array["old_meterage"];
foreach(@$_POST["pokazaniya"] as $pokazaniya_array) {
echo "<br>'$id_array'";
echo "'$app_number_array'";
echo "'$house_number_array'";
echo "'$device_id_array'";
echo "'$description_array'";
echo "'$old_meterage_array'";
echo "'$pokazaniya_array'";
}}
if(mysql_num_rows($row) > 0){
//если пользователь есть, проверяем пароли
if($house_number != $res['house_number']){ {echo 'данные не совпадают!';}}
elseif ($app_number != $res['app_number']){
{echo 'данные не совпадают!';}
}
else{
$query="UPDATE $table SET new_meterage='$pokazaniya' WHERE device_id='$device_id'";
mysql_query($query) or die (mysql_error());
if(!mysql_query($query))
{echo '<center><p><b>Ошибка при добавлении данных!</b></p></center>';}
else
echo '<table border="1">';
echo '<thead>';
echo '<tr>';
echo '<th>Поле 1</th>';
echo '<th>Поле 2</th>';
echo '<th>Поле 3</th>';
echo '<th>Поле 4</th>';
echo '<th>Поле 5</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
echo '<tr>';
echo "<td>$device_id</td>";
echo "<td>$description</td>";
echo "<td>$old_meterage</td>";
echo "<td>$pokazaniya</td>";
echo "<td>$raznica</td>";
echo '</tr>';
echo '</tbody>';
echo '</table>';
}}
else{
{echo 'такого пользователя нет!';}}
Все сделал благодаря пользователю с ником Evervess!
Форму прописал так :
echo '<td><input type="text" name="devices['.$data['device_id'].'][new_meterage]" maxlength="10" form="myform"></td></tr>';
echo '<td><input type="text" name="devices['.$data['device_id'].'][id]" value="' . $data['id'] . '" maxlength="10" form="myform" hidden></td>';
echo '<td><input type="text" name="devices['.$data['device_id'].'][street]" value="' . $data['street'] . '" maxlength="10" form="myform" hidden></td>';
echo '<td><input type="text" name="devices['.$data['device_id'].'][house_number]" value="' . $data['house_number'] . '" maxlength="10" form="myform" hidden></td>';
echo '<td><input type="text" name="devices['.$data['device_id'].'][appartment_number]" value="' . $data['app_number'] . '" maxlength="10" form="myform" hidden></td>';
echo '<td><input type="text" name="devices['.$data['device_id'].'][device_id]" value="' . $data['device_id'] . '" maxlength="10" form="myform" hidden></td></td>';
echo '<td><input type="text" name="devices['.$data['device_id'].'][description]" value="' . $data['description'] . '" maxlength="10" form="myform" hidden></td>';
echo '<td><input type="number" name="devices['.$data['device_id'].'][old_meterage]" value="' . $data['old_meterage'] . '" maxlength="10" form="myform" hidden></td>';
А перебор массива так:
$row = mysql_query("select * from `$table` where id='$id' ");
foreach($_POST['devices'] as $device_id=>$device_data) {
// В переменной $device_id - айдишник вашего прибора учёта.
// В переменной $device_data - все поля формы для этого конкретного прибора
$pokazaniya = $device_data['new_meterage'];
$app_number = $device_data['appartment_number'];
$house_number = $device_data['house_number'];
$description = $device_data['description'];
$old_meterage = $device_data['old_meterage'];
$device_id = $device_data['device_id'];
$id = $device_data['id'];
$raznica = $pokazaniya - $old_meterage;
$query="UPDATE $table SET new_meterage='$pokazaniya' WHERE device_id='$device_id'";
mysql_query($query) or die (mysql_error());
if(!mysql_query($query))
{echo '<center><p><b>Ошибка при добавлении данных!</b></p></center>';}
else{
echo '<table border="1">';
echo '<thead>';
echo '<tr>';
echo '<th>№ счетчика</th>';
echo '<th>Описание</th>';
echo '<th>Старые показания</th>';
echo '<th>Новые показания</th>';
echo '<th>Разница</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
echo '<tr>';
echo "<td>$device_id</td>";
echo "<td>$description</td>";
echo "<td>$old_meterage</td>";
echo "<td>$pokazaniya</td>";
echo "<td>$raznica</td>";
echo '</tr>';
echo '</tbody>';
echo '</table>';
}
}
Все работает как часы!
Evervess, спасибо!