【问题标题】:Removing form array element删除表单数组元素
【发布时间】:2015-07-14 09:26:05
【问题描述】:

我有一个具有相同产品但具有不同属性的表单。 表单看起来类似于这样:

<form>
<table>
    <tr>
        <td> Line-1 </td>
        <td> <input type='text' name='ítem[1][Size]'</td>
        <td> <input type='text' name='ítem[1][Color]'</td>
        <td> <input type='text' name='ítem[1][Price]'</td>
    </tr>
    <tr>
        <td> Line-2 </td>
        <td> <input type='text' name='ítem[2][Size]'</td>
        <td> <input type='text' name='ítem[2][Color]'</td>
        <td> <input type='text' name='ítem[2][Price]'</td>
    </tr>
    <tr>
        <td> Line-3 </td>
        <td> <input type='text' name='ítem[3][Size]'</td>
        <td> <input type='text' name='ítem[3][Color]'</td>
        <td> <input type='text' name='ítem[3][Price]'</td>
    </tr>
    <tr>
        <td> Line-4 </td>
        <td> <input type='text' name='ítem[4][Size]'</td>
        <td> <input type='text' name='ítem[4][Color]'</td>
        <td> <input type='text' name='ítem[4][Price]'</td>
    </tr>
    </table>
</form>

PHP 示例代码:

for($i = 0;$i < count($_POST);$i++){
    var_dump($_POST[$i]);
}

错误:

Notice: Undefined offset: 0 in C:\xampp\htdocs\test\testing.php on line 5

如果我要使用 js 动态删除 item[2],在提交时 php 会抛出错误,因为它找不到数字 2。怎么办?

也许我做得不对?

【问题讨论】:

  • 你能告诉我们你在做什么吗?没有代码很难说出任何事情
  • 我们需要看看你的 PHP 代码在做什么。请编辑并发布您的 PHP 表单处理程序。您遇到了什么错误。
  • 因为你违反了数组索引。请把你的错误放在这里?
  • 我不确定我可以写什么其他代码。我有一个表单,它在 php 中使用 post 进行处理,在 php 中,如果我写 foreach(),它会抛出一个错误因为它找不到 2 号所以它不能继续。我会尝试添加 sn-p
  • @Vilius 我假设您使用的是for 而不是foreachforeach 永远不会产生未定义的索引错误。

标签: javascript php jquery arrays forms


【解决方案1】:

在您的 PHP 代码中,按照建议使用 foreach

foreach($_POST['item'] as $item){
    echo $item['Size'] . "<br />";
    echo $item['Color'] . "<br />";
    echo $item['Price'] . "<br />";
    echo "<hr />"
}

编辑:

另一个问题我将如何重新更改行号 删除第 2 行?

这是在 JS 或 JQuery 中完成的。比如:

var i = 1;
$.each($("tr"), function(){
  $(this).next("input[name*='Size']").attr("name", "item[" + i + "][Size]");
  $(this).next("input[name*='Color']").attr("name", "item[" + i + "][Color]");
  $(this).next("input[name*='Price']").attr("name", "item[" + i + "][Price]");
  i++;
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 2015-09-14
    • 1970-01-01
    • 2011-04-08
    相关资源
    最近更新 更多