2009-10-14 88 views
1

好吧,让我从一个例子开始。我有一堆物品,他们可以分为一系列的类别。一个项目可以有多个类别。基本上我所拥有的是按类别分组的复选框列表。同样一件物品可能会出现多次。因此,它可能看起来像:表单中输入的多个值?

蓝色物品: 项目1个 项目2 项目3

红项目: 项目1个 项目4

所以每个项目旁边有一个复选框删除项目类别关联。我应该在输入值中存储什么,以便区分不同类别之间的项目?我的意思是我不能使用商品编号,因为它可能出现在多个类别中。我可以做一些类似“blue-item2”的事情,然后当我的服务器端脚本通过表单分割字符串“ - ”,但似乎有点不妥。

对不起,如果问题有点含糊。如果需要,我可以澄清一点。

回答

9

表单包含以下几个要素:

<input type="checkbox" name="item[blue][0]"> 
<input type="checkbox" name="item[blue][1]"> 
<input type="checkbox" name="item[blue][2]"> 

<input type="checkbox" name="item[red][0]"> 
<input type="checkbox" name="item[red][1]"> 

将导致该$_POST['item']元以下值:

array(
    'blue' => array(0, 1, 2), 
    'red' => array(0, 1), 
); 
+0

那就是做到这一点的方法,arrr – pxl 2009-10-14 10:16:22

1

,您可以利用每个复选框名称标签,并给他们同一类别的同名。就像说你有一个复选框设置为蓝色项目然后 输入类型=“检查”名称=“blueitems []”

你注意到[](数组)在名称,即提供相同的名称同组。现在,您可以通过这种方式访问​​document.getElementsByName [“blueitems []”],您将获得一个数组,并使用索引访问特定元素。

一个类似的例子可以在这里找到。 Example for using name arrays