【发布时间】:2015-11-11 15:08:12
【问题描述】:
我遇到了一次更新一行的 PHP 表单的问题。 它适用于第一行没问题,但下一行没有得到所有变量。例如,第 1 行将有 company1,检查已付款,未检查停用,它获取并更新所有变量。但是 company2 的行只获取复选框的 ID 和默认值。出于某种原因,它不会提取整行的信息,而只是提取 ID。任何帮助将不胜感激!
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;
}
第一行的输出:
array(3) { ["paid"]=> string(1) "0" ["ID"]=> string(2) "12" ["submit"]=> string(6) "更新" } 信息存储成功 0(paid) 1(deactivate) 12(id)
下一行的输出:
array(2) { ["ID"]=> string(2) "13" ["submit"]=> string(6) "Update" } 信息存储成功 1(付费) 1(停用) 13(身份证)
两者都有相同的选择集,除了 ID 应该相同。我哪里错了?
【问题讨论】:
-
?ID(GET 方法)并且您正在使用 POST 数组$ID=$_POST['ID']; -
您有一个
<form>循环在<form>内。这行不通。 -
删除了表单中的表单,现在我得到了所有人的相同 ID。最后一行 ID。帖子 $ID 用于隐藏值。走错路了吗?