PHP - 通过 $_POST 检索其他几个隐藏输入的值
PHP - Retrieve via $_POST the hidden input's value between several others
我有一个 table
在 foreach
循环中,每次迭代隐藏的 input
从数据库接收 ID。我的 table 在每一列中都有一个 input
字段,因为我想在 table 中编辑数据库中的数据,为了实现它,我必须提交一个 button
当点击时从隐藏的 input
检索 ID 到另一个文件,然后执行操作。
<form action="../php/Operations.php" method="post">
//...
<?php foreach ($Service->select() as $col) { ?>
<input type="hidden" value="<?php echo $col["id"]; ?>" name="id"/>
//...
问题是 $_POST
值始终是 table 的第一个值,因为有 n 隐藏 input
同名
我想知道是否有办法从单击的行中检索隐藏的 input
值,请记住我没有使用 $_GET
,而是提交button
,
<button type="submit" name="submit" value="update" class="btn_action">Editar</button>
点击后会执行我写的代码:
switch($_REQUEST["submit"]) {
case "update":
$ServiceDatabase->update($_POST["id"]);
break;
//...
谢谢。
要么将每个列包装在单独的表单中,并为每个列设置一个单独的提交按钮,要么将名称属性设为一个数组。即 name="id[<?php echo htmlspecialchars($id); ?>"
如果您想要多个具有相同名称的输入,请对输入名称属性使用 name="id[]"
。 $_POST
然后将包含一个名称数组,其中包含输入元素的所有值。然后你可以遍历这个数组。
示例:
<form method="post">
<input type="hidden" name="id[]" value="foo"/>
<input type="hidden" name="id[]" value="bar"/>
<input type="hidden" name="id[]" value="baz"/>
<input type="submit" />
</form>
PHP
$ids= $_POST['id'];
print_r($ids);
编辑: 您可以像这样更改您的代码,以便每个提交按钮都与一个带有 name="id"
.
的隐藏输入相关联
<?php foreach ($Service->select() as $col) { ?>
<form action="../php/Operations.php" method="post">
<input type="hidden" value="<?php echo $col["id"]; ?>" name="id"/>
<button type="submit" name="submit" value="update" class="btn_action">Editar</button>
</form>
<?php } ?>
已渲染 HTML:
<form action="../php/Operations.php" method="post"><input type="hidden" value="1234" name="id"/><button type="submit" name="submit" value="update" class="btn_action">Editar</button></form>
<form action="../php/Operations.php" method="post"><input type="hidden" value="5678" name="id"/><button type="submit" name="submit" value="update" class="btn_action">Editar</button></form>
<form action="../php/Operations.php" method="post"><input type="hidden" value="9101112" name="id"/><button type="submit" name="submit" value="update" class="btn_action">Editar</button></form>
我建议您使用 ajax 提交数据
只需为按钮创建一个点击事件并获取按钮 ID
在您的 htm 表单中创建一个像这样的 id 属性
<input type="hidden" id="colId<?php echo $col["id"]; ?>" value="<?php echo $col["id"]; ?>" />
你的按钮应该是这样的
<button class="buttonSubmit" id="<?php echo $col["id"]; ?>" >Submit</button>
$(".buttonSubmit").click(function(){
var id = $(this).attr("id");
var hiddeninput = $("colId"+id).val();
// here you can process how would you send the data to a php file
});
我有一个 table
在 foreach
循环中,每次迭代隐藏的 input
从数据库接收 ID。我的 table 在每一列中都有一个 input
字段,因为我想在 table 中编辑数据库中的数据,为了实现它,我必须提交一个 button
当点击时从隐藏的 input
检索 ID 到另一个文件,然后执行操作。
<form action="../php/Operations.php" method="post">
//...
<?php foreach ($Service->select() as $col) { ?>
<input type="hidden" value="<?php echo $col["id"]; ?>" name="id"/>
//...
问题是 $_POST
值始终是 table 的第一个值,因为有 n 隐藏 input
同名
我想知道是否有办法从单击的行中检索隐藏的 input
值,请记住我没有使用 $_GET
,而是提交button
,
<button type="submit" name="submit" value="update" class="btn_action">Editar</button>
点击后会执行我写的代码:
switch($_REQUEST["submit"]) {
case "update":
$ServiceDatabase->update($_POST["id"]);
break;
//...
谢谢。
要么将每个列包装在单独的表单中,并为每个列设置一个单独的提交按钮,要么将名称属性设为一个数组。即 name="id[<?php echo htmlspecialchars($id); ?>"
如果您想要多个具有相同名称的输入,请对输入名称属性使用 name="id[]"
。 $_POST
然后将包含一个名称数组,其中包含输入元素的所有值。然后你可以遍历这个数组。
示例:
<form method="post">
<input type="hidden" name="id[]" value="foo"/>
<input type="hidden" name="id[]" value="bar"/>
<input type="hidden" name="id[]" value="baz"/>
<input type="submit" />
</form>
PHP
$ids= $_POST['id'];
print_r($ids);
编辑: 您可以像这样更改您的代码,以便每个提交按钮都与一个带有 name="id"
.
<?php foreach ($Service->select() as $col) { ?>
<form action="../php/Operations.php" method="post">
<input type="hidden" value="<?php echo $col["id"]; ?>" name="id"/>
<button type="submit" name="submit" value="update" class="btn_action">Editar</button>
</form>
<?php } ?>
已渲染 HTML:
<form action="../php/Operations.php" method="post"><input type="hidden" value="1234" name="id"/><button type="submit" name="submit" value="update" class="btn_action">Editar</button></form>
<form action="../php/Operations.php" method="post"><input type="hidden" value="5678" name="id"/><button type="submit" name="submit" value="update" class="btn_action">Editar</button></form>
<form action="../php/Operations.php" method="post"><input type="hidden" value="9101112" name="id"/><button type="submit" name="submit" value="update" class="btn_action">Editar</button></form>
我建议您使用 ajax 提交数据
只需为按钮创建一个点击事件并获取按钮 ID
在您的 htm 表单中创建一个像这样的 id 属性
<input type="hidden" id="colId<?php echo $col["id"]; ?>" value="<?php echo $col["id"]; ?>" />
你的按钮应该是这样的
<button class="buttonSubmit" id="<?php echo $col["id"]; ?>" >Submit</button>
$(".buttonSubmit").click(function(){
var id = $(this).attr("id");
var hiddeninput = $("colId"+id).val();
// here you can process how would you send the data to a php file
});