如何提交多个PHP表单,而每个表单都有自己的提交按钮?

如何提交多个PHP表单,而每个表单都有自己的提交按钮?,php,Php,我使用php循环生成了一些表单,如下所示: <?php while ($rowTechmen = $techmenQuery->fetch(PDO::FETCH_ASSOC)) { ?> <form method="post"> <input type="text" name="textbox1"/> <button type="submit" name="submit1">

我使用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
    }
    ?>

提交
现在我有了一些类似的表单,每个表单都有自己的提交按钮。我不想只按一个按钮就全部提交。如何获取
$\u发布
值并使用每个表单中的新值更新数据库?

试试看

<?php
    var_dump($_POST);
    for ($i = 0; $i< 10 ;$i++) {
    ?>
       <form method="post" name="form">
         <input type="text" name="textbox"/>
         <button type="submit" name="submit" value="submit">Submit</button>
         <button type="submit" name="submit" value="delete">Delete</button>
       </form>
    <?php
    }
    ?>

提交
删除

这是一个非常广泛的问题。因此,有很多方法可以实现这一点。因此,我认为最好是教授流程,而不是抛出代码片段

基本上,这一切都是关于使用dom通过js获取值,并通过ajax等将其发送到后端。如果您使用一些js库,如vue,则使用其他http库和绑定会更容易

如果您使用的是基本js和ajax。事情是这样的

1-防止表单提交的默认值

2-当用户使用js单击all-in-one submit(按钮)时,获取表单元素的所有值


3-使用ajax将值发布到url以生成表单,获取值后,使用变量递增:

<?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;
}
?>
当然,您可以用数据库中的ID替换
$i
。所用功能的文档:


您可以有一个带有多个提交按钮的大表单您想全部提交还是只提交其按钮已被单击的表单?这不是“一个”大表单!正如您所见,每个循环生成一个单独的表单。如果您继续拥有多个表单,那么您将逐个提交它们。因此,如果你需要提交所有数据,请将其设置为一个独特的表单。然后我认为你需要Javascript来收集所有表单中的所有数据并提交这些数据。你会如何捕获这些数据?我如何获取post值?@Rohit.007如果你对我之前的评论给出答案,我将删除否决票。我理解,没有
名称,您无法获取变量值,但仍然可以将
随机
键发布到隐藏变量中。无论如何,更新的代码有10个表单,每个按钮不需要不同的命名。谢谢@aimme。问这个问题时,我尽量说得具体一些。虽然你的回答比我的问题更广泛、更笼统。:-)你的解决方案很有效。非常感谢你。虽然我不得不将偏移量更改为[0],但它们是完美的。很高兴它成功了。这可能会更好,因为我对preg\u grep()不太了解。如果答案解决了您的问题,请接受它;)@AymDev与我的建议类似,你否决了我的解决方案,这真的很棒。我感谢您的努力。@Rohit.007您编辑答案时,我刚刚删除了否决票,但您没有提供一个关于如何识别表单的解决方案(这可能很重要,因为对于
来说,您的名字都是
rand()
,没有前缀来识别它们)
// 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'];
}