我从mysql数据库中获取数据,并想创建一个列表。在列表中,我想要一个使用post将值发送到下一页的按钮。
$result = mysql_query("SELECT * FROM all");
echo "<table border='"1'">";
echo"<tr>
<th>ID</th>
<th>Naam</th>
<th>Eigenaar</th>
<th>Plaats</th>
<th>Bewerk</th>
</tr>";
?>
<form action="editshop.php" method="post">
<?php
while($rij = mysql_fetch_array($result))
{
?>
<?php
echo "<tr><td>".$rij['id'] . "</td><td> " . $rij['naam'] ."</td><td>";
echo $rij['eigenaar'] . "</td><td>" . $rij['plaats']."</td>" ;
echo"<input type='"hidden'" name='"id'" value=".$rij['id']." /><td><input type='"submit'" /></td>";
echo "</tr>";
}
echo "</form></table>";
表看起来不错,但当我按下按钮,editshops.php打开时,我有echo $_POST["id"];
它总是列表的最后一个id。我只想要和名单上的id相同的号码。在列表中,id显示为良好。我做错了什么(很抱歉,如果这篇文章的布局不好,这是我的第一篇文章,我不知道如何突出代码)更新将循环更改为
<?php
while($rij = mysql_fetch_array($result))
{
?>
<form action="bewerkshop.php" method="post">
<?php
echo "<tr><td>".$rij['id'] . "</td><td> " . $rij['naam'] ."</td><td>";
echo $rij['eigenaar'] . "</td><td>" . $rij['plaats']."</td>" ;
echo"<td><input type='"submit'" name='"id'" value='"".$rij['id']."'" /></td>";
echo "</tr>";
}
echo "</form></table>";
?>
现在一切正常,但按钮的名称是id号,我可以更改它进行编辑吗。所以所有的按钮都说编辑,而不是id号
我认为您需要使用类似name="id[]"
的东西来获得数组
我现在看到每行都有一个提交按钮,这意味着你需要每行制作一个表单,或者把id值放在提交按钮本身。
注意:我不确定您是想通过提交编辑多行还是只编辑一行。我的答案只对编辑多行有用。
您正在为每一行编写一个输入字段,所有字段都具有相同的名称。这就是为什么最后一个覆盖了所有其他的原因。
您需要相应地命名您的输入字段。
示例:
<input name="naam[1]" value="..." />
这里的1是您所在行的ID。
然后,您可以迭代$_POST['naam']并获取值。
foreach ($_POST['naam'] as $id => $value) {
$otherValue = $_POST['otherValue'][$id];
// ...
// do something with it and add some checks if the keys exist.
}
看起来<input>
在值周围缺少一组引号:
value='"".$rij['id']."'"
应该正确地表演这个把戏。
然而,如果您对每个输入使用相同的名称,PHP会将数据覆盖到最后发送的ID(因为所有隐藏的输入都有相同的名称)。
您可能需要考虑为每一行数据创建一个表单。这样您就可以知道实际发送了哪一个,或者使用一些javascript提交表单并选择要传递的正确值。
因为当你发布时,所有隐藏的输入都有相同的名称,它会给你最后一个id,你可以作为数组发布
"<input type='"hidden'" name='"id[]'" value=".$rij['id']." />
或者通过将id传递给提交按钮本身来发布它们。