我从我的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号
答案 0 :(得分:1)
我相信您需要使用类似 name="id[]"
的内容来获取数组
我现在看到你每行都有一个提交按钮,这意味着你需要每行创建一个表单,或者将id值放在提交按钮本身。
答案 1 :(得分:0)
看起来<input>
缺少围绕值的一组引号:
value=\"".$rij['id']."\"
应该正确地做到这一点。
但是,如果您为每个输入使用相同的名称,PHP将覆盖数据到最后发送的ID(因为所有隐藏的输入具有相同的名称)。
您可能需要考虑为每行数据创建一个表单。所以你知道实际发送了哪一个 - 或者使用一些javascript来提交表单并选择正确的值来传递。
答案 2 :(得分:0)
因为你发布的所有隐藏输入都有相同的名称会给你最后一个你可以作为数组发布的id
"<input type=\"hidden\" name=\"id[]\" value=".$rij['id']." />
或通过将id传递给提交按钮本身来发布它们。
答案 3 :(得分:0)
注意:我不确定您是要使用提交还是仅编辑一行来编辑多个行。我的回答只对编辑多行很有帮助。
您正在为每一行写一个输入字段,所有字段都具有相同的名称。这就是为什么最后一个覆盖所有其他人的原因。
您需要相应地命名输入字段。
示例:
<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.
}