【问题标题】:PHP/HTML: While loop with submit-buttonsPHP/HTML:带有提交按钮的 While 循环
【发布时间】:2017-10-19 10:21:24
【问题描述】:

我有一个选择框,我可以在其中选择一个项目 ID,然后使用提交按钮将其传递给下一个表单。现在它看起来像这样:

这是我的代码:

 <form name="form2" action="formular3.php" method="post">

 <p><strong>Choose Project:</strong></p>
 <select name = "project_id">

 <?php
 while ($row = mysqli_fetch_array($result)) {
     echo "<option value =" . $row['project_id'] . "> Project_ID: " . $row['project_id'] . " - (" . $row['name'] . ")</option>";
 }
 ?>

 </select>

 <input type="submit" value="Send" />

 </form>

现在我想要一个列表,其中每一行都有一个提交按钮。它应该是这样的:

【问题讨论】:

    标签: php html input while-loop submit


    【解决方案1】:

    如果您只为每个表单发送一个选项,请完全删除选择标签。

    更好的方法(注意mysqli_fetch_assoc() 而不是mysqli_fecth_array()

    echo "<form name=\"form2\" action=\"formular3.php\" method=\"post\">";
        while($row=mysqli_fetch_assoc($result)){
            echo "Project_ID: {$row['project_id']} - ({$row['name']}) ";
            echo "<button name=\"project_id\" value=\"{$row['project_id']}\">Send</button>";
        }
    echo "</form>";
    

    这将提交点击按钮中的值,而无需将这么多的表单块写入html。您只需要使用&lt;br&gt;、表格单元格等调整按钮的实际显示。


    我以前的方法可行,但不是 DRY:

    while($row=mysqli_fetch_array($result)){
        echo "<form name=\"form2\" action=\"formular3.php\" method=\"post\">";
            echo "<input type=\"hidden\" name=\"project_id\" value=\"{$row['project_id']}\">";
            echo "Project_ID: {$row['project_id']} - ({$row['name']}) ";
            echo "<input type=\"submit\" value=\"Send\" />";
        echo "</form>";
    }
    

    【讨论】:

    • @k.troy2012 我之前给了你一些次优的建议。请在您的项目中实施我更好的方法。
    【解决方案2】:

    在循环中使用提交按钮,

     <p><strong>Choose Project:</strong></p>
     <select name = "project_id">
    
     <?php
     while ($row = mysqli_fetch_array($result)) {
         echo "<option value =" . $row['project_id'] . "> <input type='submit' value='Send' />Project_ID: " . $row['project_id'] . " - (" . $row['name'] . ")</option>";
     }
     ?>
    
     </select>
    
    
    
     </form>
    

    【讨论】:

    • 看起来不错,但无论我按什么提交按钮,它总是提交列表的第一个项目 ID .. 在这种情况下 project_id = 5
    • 实际上,您在从下拉列表中选择之前提交表单。只需将发送按钮的输入类型从提交到按钮,然后在更改下拉列表时,使用 jquery 提交表单。
    【解决方案3】:

    你需要停止发生当前提交事件并将提交按钮给一个id,使用jquery点击提交你应该发布一个特定的表单。

    提交的点赞会被点击,你会运行这个脚本。

    $(document).on('click', '#submit', function () {
        $(this).closest("form").submit();
    });
    

    【讨论】:

      猜你喜欢
      • 2018-03-19
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      • 2015-05-25
      相关资源
      最近更新 更多