使用PHP遍历POST请求中的值

问题描述 投票:0回答:3

我有一个允许人们输入关键字的表格。

我希望人们能够一次添加一个关键字,而对于他们之前添加的所有关键字,它们都是表单上的隐藏输入。

这是我当前的代码:

<form method="post" class="domain-form">
    <div class="domain-wrapper">
        <input type="text" name="keyword" id="keyword" class="domain-input" autocapitalize="none" autocorrect="off" spellcheck="false" aria-required="true" aria-invalid="false" placeholder="Type a keyword here...">
    </div>

    <button type="submit" class="button-link button-black getstarted" style="border-top-left-radius:0;border-bottom-left-radius:0;"><span>Add Keyword</span></button>
    <input type="hidden" id="domain" name="domain" value="<?php echo $domain; ?>">

<?php
if (isset($_POST['keyword'])) {
    foreach($_POST['keyword'] as $inputkeyword) {
        echo "<input type=\"hidden\" id=\"keyword\" name=\"keyword\" value=\"$inputkeyword\">";
    }
}
?>

</form>

我在显示Invalid argument supplied for foreach()时出错。

我在做什么错?

php forms post foreach http-post
3个回答
0
投票

您需要修改name结构。名称必须带有[]才能创建数组。

name="keyword[]"

否则它是一个普通输入,并且重复项被覆盖。

这可以在这里的文档https://www.php.net/manual/en/faq.html.php#faq.html.arrays中找到。


0
投票

首先,您应该以表格形式输入动作属性,按钮的名称属性并在输入类型文本中添加name =“ keyword []”,如下所示,然后尝试

<form method="post" action="" class="domain-form">

<input type="text" name="keyword[]" id="keyword" class="domain-input" autocapitalize="none" autocorrect="off" spellcheck="false" aria-required="true" aria-invalid="false" placeholder="Type a keyword here...">

 <button type="submit" name="keyword" class="button-link button-black getstarted" style="border-top-left-radius:0;border-bottom-left-radius:0;"><span>Add Keyword</span></button>

0
投票

您可以使用javascript实现此目的。只需为该输入添加一个“添加关键字”按钮,然后在您创建该按钮并将其添加到DOM时将其添加到单击监听器上即可。

© www.soinside.com 2019 - 2024. All rights reserved.