【问题标题】:Using PHP to loop through values in a POST request使用 PHP 循环 POST 请求中的值
【发布时间】:2019-12-23 04:13:18
【问题描述】:

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

我希望人们能够一次添加一个关键字,并将之前添加的所有关键字添加到表单上的隐藏输入中。

这是我当前的代码:

<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()

我做错了什么?

【问题讨论】:

  • 使用keyword[]
  • 您正在传递一个表单变量并将其作为数组调用。你有多个关键字吗?那么它在哪里渲染呢?

标签: php forms post foreach http-post


【解决方案1】:

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

name="keyword[]"

否则它是一个普通的输入并且重复的内容被覆盖。

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

【讨论】:

    【解决方案2】:

    首先你应该在表单中输入动作属性,按钮的名称属性并在你的输入类型文本中添加 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>
    

    【讨论】:

    • 现在我编辑答案,我忘了提及 name="keyword[]"
    【解决方案3】:

    您可以使用 to javascript 来实现这一点。只需为该输入添加一个“添加关键字”按钮,并在单击按钮时在其上放置一个单击侦听器,您创建并将隐藏的输入附加到 DOM

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      • 2011-01-19
      相关资源
      最近更新 更多