У меня возникла проблема с формой PHP, выполняющей обновление по одной строке за раз. Он будет работать для первой строки без проблем, но в следующих строках не получаются все переменные. Например, строка 1 будет иметь company1, проверена платная и не проверена на деактивацию, и она получает и обновляет все переменные. Но строка company2 получает только ID и значения по умолчанию для флажков. По какой-то причине он не вытаскивает информацию для всей строки, а только идентификатор. Любая помощь будет оценена!PHP SQL Обновление одной строки из формы за один раз
This is my Form (edited):
<html>
<body>
<form action="next.php" method="POST">
<table border="1" align="center">
<tr>
<th>
Name
</th>
<th>
Address
</th>
<th>
Paid
</th>
<th>
Active
</th>
</tr>
<?php
require_once ("connect.php");
require_once ("phpfunctions.php");
error_reporting(0);
$cd=companyDisplay();
$result = mysqli_query($mysqli,$cd);
while($res=mysqli_fetch_array($result))
{
$final[]=$row;
?>
<tr>
<td class="name">
<a href='edit.php?ID="<?php echo $res['ID']; ?>"'>
<?php echo $res['name'];?>
</a>
</td>
<td class="Address">
<?php echo $res['Address'];?>
</td>
<td class="paid">
<?php foreach($final as $k => $v){ ?>
<input type="checkbox" value="0" name="results[<?= $k ?>][paid]"
<?php } ?>
<?php
if($res["paid"]==0)
{
echo "checked";
}
?>>
</td>
<td class="active">
<?php foreach($final as $k => $v){ ?>
<input type="checkbox" value="0" name="results[<?= $k ?>][active]"
<?php } ?>
<?php
if($res["active"]==0)
{
echo "checked";
}
?> >
</td>
<td class="update">
<?php foreach($final as $k => $v){ ?>
<input type="hidden" name="results[<?= $k ?>][ID]" value="<?php echo $res['ID']; ?>">
<?php } ?>
<input type="submit" name="submit" value="Update">
</td>
</tr>
<?php } ?>
</table>
</form>
</body>
</html>
This is my next php page where the variables are posted and the query is run:
<?php
require_once ("connect.php");
require_once ("phpfunctions.php");
error_reporting(0);
var_dump($_POST);
//info to store from index.php
$ID=$_POST['ID'];
$ID= str_replace('"', '', $ID);
$paid=(isset($_POST['paid']))? 0 : 1;
$active = (isset($_POST['active']))? 0 : 1;
//adds updated info to database
$uc=updateCompany($paid,$active,$ID);
$r = mysqli_query($mysqli,$uc);
echo "Information stored successfully";
echo $paid;
echo $active;
echo $ID;
?>
And here is my function:
function updateCompany($paid,$active,$ID)
{
$uc="UPDATE
`company`
SET
`paid`='$paid',
`active`='$active'
WHERE
`ID`='$ID'";
return $uc;
}
Выход для первой строки:
массив (3) {[ "оплачено"] => строка (1) "0" [ "ID"] => строка (2) "12" [ "представить"] => строка (6) "Обновить"} информация, хранящаяся успешно 0 (за дополнительную плату) 1 (деактивировать) 12 (ID)
выход для следующего ряда:
массив (2) {["ID"] => строка (2) "13" ["submit"] => строка (6) "Обновить"} Информация успешно сохранена 1 (оплачена) 1 (деактивировать) 13 (ID)
Оба имеют одинаковый выбор и должны быть одинаковыми, за исключением идентификатора. Где я здесь не так?
'ID' (GET метод) и вы используете массив POST' $ ID = $ _ POST [ 'ID'];? ' –
У вас есть' '
удалил форму внутри формы, теперь я получаю одинаковый идентификатор для всех. Идентификатор последних строк. Post $ ID предназначен для скрытого значения. Неправильный способ этого? – iggulds