php - 如何在每个表单都有自己的提交按钮时提交多个 PHP 表单?
问题描述
我使用这样的 php 循环生成了一些表单:
<?php
while ($rowTechmen = $techmenQuery->fetch(PDO::FETCH_ASSOC)) {
?>
<form method="post">
<input type="text" name="textbox1"/>
<button type="submit" name="submit1">Submit</button>
</form>
<?php
}
?>
现在我有一些类似的表单,每个表单都有自己的提交按钮。我不想用一个按钮将它们全部提交。如何获取$_POST
值并使用每个表单中的新值更新我的数据库?
解决方案
要生成表单,请使用变量递增:
<?php
$i = 0;
while ($rowTechmen = $techmenQuery->fetch(PDO::FETCH_ASSOC)) {
?>
<form method="post">
<input type="text" name="textbox"/>
<button type="submit" name="submit_<?php echo $i ?>">Submit</button>
</form>
<?php
$i += 1;
}
?>
然后,如果您需要确定提交了哪个表单,您可以执行以下操作:
// When a form is submitted
if (isset($_POST) && !empty($_POST)) {
// Get the submit number
$submit_name = preg_grep("/submit_/", array_keys($_POST));
$submit_id = ($parts = explode('_', $submit_name[1]))[1];
// Display the data for testing
var_dump($submit_id);
echo $_POST['textbox'];
}
当然,您可以用数据库$i
中的ID替换。使用函数的文档:
推荐阅读
- flutter - 参数类型“String”不能分配给参数类型“Uri”。请问有人可以帮我吗?
- java - 调用 @AfterThrowing 处理程序方法后如何避免记录异常
- javascript - 如何使用浏览器的主水平滚动条在 DIV 部分中滚动
- c# - AutoMapper:使用多个 IValueResolver 时 Resolve() 的调用顺序
- python - Apache Airflow - 连接到 AWS S3 错误
- java - 我如何获得在 main 中使用的方法的值
- firebase - 项目之间的 Firebase 迁移 - 导入命令时目标 Fire Store 数据库不会更改(未显示错误)
- hyperledger-fabric - 是否可以在 levelDB 超级账本结构、Javascript 上添加表
- ros - 我在设置 Ros 主从时遇到问题
- c# - MySQL C# 连接错误,无法连接