【问题标题】:Collect data with PHP from dynamically created inputs使用 PHP 从动态创建的输入中收集数据
【发布时间】:2014-06-12 19:28:39
【问题描述】:

我有这个代码:http://jsfiddle.net/Zx8hc/9/

这是一种用户可以动态添加输入文本的表单,他可以根据需要添加和删除任意数量(只有第一个是强制性的)。而且由于他可以添加和删除他喜欢的人,他们的ID可能不是连续的。

我的问题是如何使用 PHP 从新创建的输入中收集数据并将其存储在 vars 中,每个输入都在它自己的 var 中,独立地([input_1] > $input_1,等等)。我的想法是创建一个for 循环并遍历从0n 的所有元素,包含数据的将被存储,不包含数据的则不会。这会是一个合适的方法吗?

很抱歉,我没有任何 PHP 代码可显示,但我什至不知道从哪里开始,所以如果你能帮助我完成这个,请提前非常感谢。

【问题讨论】:

    标签: javascript php


    【解决方案1】:

    我检查了你的小提琴,你有下一个 HTML 作为输入元素。

    <input type="text">
    

    如果要将表单数据发送到服务器,则必须将其包装在表单元素中。下面是一个简单表格的例子

    <form action="url_to_php_file.php" method="post">
        <input type="text" name="age[]" />
        <input type="submit" value="submit" />
    </form>
    

    在这里,您会看到一个&lt;form&gt; 元素,您可以使用该元素将表单数据传递到服务器。它有几个属性。这里,action 是表单内容应该发送到的 URL。选择应该处理表单的 PHP 文件。如果它与显示在同一页面上,只需使用# 作为字段。

    那么method-attribute就是通过POST数据发送表单。另一种选择是使用 GET,但它不安全,因为使用 GET 也会在 URL 中发送表单数据。而 POST 会将其包装在请求中。

    如果您有一个表单元素,则必须有一个按钮来提交表单。通过提交,您将激活触发器以将表单发送到表单的操作属性中描述的地址。这就是 input-submit 元素。

    现在,数据本身。每个输入都必须分配一个name-属性。提交表单时,它的内容将与该名称相关联。如果要将多个数据作为一个名称字段发送,则必须使用数组,即表单名称中的[]

    例如,age 将只保存一个数据条目。而age[] 可以保存多个值。 如果要添加元素,只需克隆所述对象,前提是它没有id。如果您有多个具有相同 id 的元素,您可能会得到不可预测的结果。建议保持 id 的唯一性。

    在您的 PHP 文件中,将 $_POST['name'] 读取为数组。

    ……已编辑。

    【讨论】:

    • 这就是我要做的。谢谢。
    【解决方案2】:

    我建议使用name 标签创建这些新输入。这些名称标签必须是唯一的,例如cool_input1, cool_input_2, ... 或用作数组:cool_input[].
    结果 - 您可以在 php 中获取传入信息并解析从 POST/GET 接收到的数据。

    对于第一个想法,您不需要知道生成的输入的实际数量。您只需使用“POST 中的 foreach 元素”,如果它的名称与您的模式匹配 - 这就是您所需要的。

    【讨论】:

    • 好的,我一回到家就试试。谢谢。
    • 不客气。我仍然建议使用array name - 因为您不需要在 js 或 php 端执行额外的额外步骤。
    • 如何使用 HTML 输入数组的一个例子是here
    • 感谢您提供的额外信息,您挽救了我的生命。 +1顺便说一句,如果其中一个数组是
    • 是的。可以为所有表单元素使用相同的名称。例如:example on JSFiddle(只需检查 html 代码)。对于select,它将按预期工作(将提交选定选项的值)。
    猜你喜欢
    • 1970-01-01
    • 2016-12-23
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    相关资源
    最近更新 更多