【问题标题】:How could I store form values in an Array?如何将表单值存储在数组中?
【发布时间】:2014-08-28 17:07:58
【问题描述】:

如何将数据从表单附加到数组?

根据在数据库中找到的数据生成一个列表。每行都有一个零件号和一个数量文本字段供用户编辑:

+--------+----------+
| Part # | QTY      |
+--------+----------+
| 123    | [0]      |
+--------+----------+
| 124    | [2]      |
+--------+----------+
| 125    | [15]     |
+--------+----------+
|        | [Submit] |
+--------+----------+ 

我目前的逻辑是:

If QTY = 0 { 
ignore 
} else {
append values to array object and store array under "parts" session
} 

我遇到的一个问题是提交表单时,它会抓取表单中的最后一部分和数量值。我需要以某种方式使表单的每一行都是唯一的,并将该表单数据输入到数组中。

我打算在用户将所有零件和数量添加到数组后,然后将数组提交到数据库中。

有更简单的方法吗?

编辑:

获取零件编号并通过表单提交数量值。

<input type="text" name="item['.$row['Part'].'][qty]" size="2" value="0"/>

所以它看起来像这样:

123 => 0, 124 => 2, 125 => 15

如果设置了表单中的值,则映射数组。我还使用了array_filter() 函数来摆脱 0 数量的零件:

function show_Names($e)
    {
        return "$e[qty]";
    }
        if(isset($_POST['item'])) {
        $c = array_filter(array_map("show_Names", $_POST['item']));
    }

并以这种方式将其存储在会话中。如果到目前为止没有设置任何内容,请设置一个新会话。如果设置了某些内容,则只需添加到数组中:

if(isset($_SESSION['parts'])) {             
        if(isset($c)) {
        $_SESSION['parts']=$_SESSION['parts']+$c;
        }
    } else {
        if(isset($c)) {
        $_SESSION['parts']=$c;
        }
    }

希望这有助于解决类似问题的其他人。

【问题讨论】:

    标签: php arrays forms


    【解决方案1】:

    在您的文本框名称属性中添加方括号,例如:

    <input type="text" name="part[]" />
    <input type="text" name="qty[]" />
    
    <input type="text" name="part[]" />
    <input type="text" name="qty[]" />
    
    <input type="text" name="part[]" />
    <input type="text" name="qty[]" />
    

    然后您会将所有零件编号和数量放入 $_POST['part'] 和 $_POST['qty']

    【讨论】:

    【解决方案2】:

    是的。通过命名如下字段:

    <input type="text" name="item[0][name]" />
    <input type="text" name="item[0][email]" />
    
    <input type="text" name="item[1][name]" />
    <input type="text" name="item[1][email]" />
    
    <input type="text" name="item[2][name]" />
    <input type="text" name="item[2][email]" />
    

    还有php脚本:

    function show_Names($e)
    {
      return "The name is $e[name] and email is $e[email], thank you";
    }
    
    $c = array_map("show_Names", $_POST['item']);
    print_r($c);
    

    【讨论】:

      猜你喜欢
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      相关资源
      最近更新 更多