【问题标题】:How to assign unique value in hidden fields in a foreach loop如何在 foreach 循环中的隐藏字段中分配唯一值
【发布时间】:2016-03-21 21:17:51
【问题描述】:

所以我的问题是: 我正在做一个 foreach 循环,它会生成一个链接列表。每个链接都包含 JavaScript,用于提交表单。但是,我想为每个链接附加一个变量,以便我可以获取 $_POST 变量以查看单击了哪个链接。

我尝试了一个 foreach 循环,然后是这样的:

foreach ($matches as $match) {
    ?>
    <div class="containerbla">
        <form>
            <h3><a href="javascript:{}" onclick="document.getElementById('matchesform').submit(); return false;"><?php echo $match->name?></a></h3>
            <?php echo $match->id; ?>
            <input type="hidden" name="matchid" value="<?php echo $match->id; ?>">
        </form>
    </div>
    <?php
}

它在下面显示正确的用户名列表和正确的用户 ID。但是当我点击用户时,我总是在隐藏字段中获得最新的用户 ID,提交给我的 view-messages php。

我该如何解决?

【问题讨论】:

  • 使用数组:&lt;input type="hidden" name="matchid[]" value="&lt;?php echo $match-&gt;id" ?&gt;"&gt;
  • 您要提交的“matchesform”在哪里?在此示例中,您以编程方式创建的表单没有 id,因此它们的值不是您单击时提交的值。
  • @RobbieAverill:我试过了,但这对实际检索数组/被点击的值有什么帮助?我尝试了 $_POST['matchid'][0] 仍然得到与 aabove 相同的结果
  • 我明白了 - 我建议您将 javascript 处理程序从 HTML 中取出并单独定义。将数据属性添加到其中包含 ID 的锚点,并在发布数据之前将其附加到数据集。
  • 他正在创建一个输入,它没有被提交的原因是输入的格式错误。要使其正常工作,您必须将输入附加到正确的表单中,请参阅我的答案。

标签: php mysql forms post hidden-field


【解决方案1】:
foreach ($matches as $key=>$match) { ?>

                <div class="containerbla">
                    <form>
                        <h3><a href="javascript:{}" onclick="var poop = document.getElementById('matchesform'); poop.insertAdjacentHTML('<input type=\"hidden\" name=\"poop\" value=\"<?php echo $key; ?>\"/>'); poop.submit(); return false;"><?php echo $match->name?></a></h3>
                        <?php echo $match->id; ?>
                        <input type="hidden" name="matchid" value="<?php echo $match->id; ?>">
                    </form>
                </div>
            <?php
            }

然后你就可以使用$matches[$_POST['poop']];获取索引

我看到您已经创建了一个新输入,但您没有将其放入正确的格式中,这就是它没有被提交的原因。

【讨论】:

  • 啊,我没注意
  • 投了反对票的人——我可能没有注意,但它仍然是正确的答案:P
  • 我之前 +1 让你平衡它。这确实有效,不知道为什么会被否决。
  • 感谢 Pamblam 的回复,我一回家就试试。由于我想成为一名优秀的编码员,您能解释一下为什么我发布的代码不起作用以及为什么我需要按照您建议的方式对其进行编码那里的逻辑是什么,我如何理解这个概念?
  • @FlashNewbie - 我改变的是你的onclick 属性。我添加的代码创建了一个不可见的输入,并在提交表单之前将其放入正确的表单中。您当前的代码使用原始 html 创建一个新输入,然后将其拖放到它所在的页面上。为此,您不能只是将输入放到任何您想要的地方,您必须将输入放到要提交的表单中。
猜你喜欢
  • 1970-01-01
  • 2012-10-30
  • 2012-03-16
  • 1970-01-01
  • 2019-06-17
  • 1970-01-01
  • 2013-04-06
  • 2013-12-09
  • 1970-01-01
相关资源
最近更新 更多