2

我从我的 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号

4

4 回答 4

1

我相信你需要使用类似的东西name="id[]"来获取一个数组

我现在看到每行都有一个提交按钮,这意味着您需要每行制作一个表单,或者将 id 值放在提交按钮本身中。

于 2012-09-13T10:10:02.137 回答
0

看起来<input>缺少围绕该值的一组引号:

value=\"".$rij['id']."\"

应该正确地做到这一点。

但是,如果您对每个输入使用相同的名称,PHP 会将数据覆盖到最后发送的 ID(因为所有隐藏的输入都具有相同的名称)。

您可能需要考虑为每行数据制作一个表格。所以您知道实际发送的是哪一个 - 或使用一些 javascript 提交表单并选择要传递的正确值。

于 2012-09-13T10:10:01.203 回答
0

因为您发布时所有隐藏的输入都具有相同的名称,所以它会给您最后一个 ID,您可以将其作为数组发布

"<input type=\"hidden\" name=\"id[]\" value=".$rij['id']."  />

或通过将 id 传递给提交按钮本身来发布它们。

于 2012-09-13T10:15:28.923 回答
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.
}
于 2012-09-13T10:15:43.567 回答