我有一个页面,其中显示了50种产品。每个产品最多可以有4个类别。
这个页面需要一个保存按钮,所以我想知道如何发送3条信息。产品id
、所有4个产品categories
和类别values
。
提交时我得到:
35:Array
88:Array
以下是当前的结构:(请记住,每个产品可以有4个类别,因此将有50个)
<select name="[ PRODUCT ID ][ CATEGORY ONE ]">
<option value="[ CATEGORY ID ]"> CATEGORY NAME </option>
</select>
<select name="[ PRODUCT ID ][ CATEGORY TWO ]">
<option value="[ CATEGORY ID ]"> CATEGORY NAME </option>
</select>
<select name="[ PRODUCT ID ][ CATEGORY THREE ]">
<option value="[ CATEGORY ID ]"> CATEGORY NAME </option>
</select>
<select name="[ PRODUCT ID ][ CATEGORY FOUR ]">
<option value="[ CATEGORY ID ]"> CATEGORY NAME </option>
</select>
这里有两个产品的代码:
<?
if(isset($_POST['productCat'])){
foreach($_POST['productCat'] as $a=>$b){
echo $a.':'.$b.'<br>';
}
}
?>
<form method="post">
<select name="productCat[35][1]">
<option value="[3]">3</option>
<option value="[4]">4</option>
<option value="[5]">5</option>
<option value="[6]">6</option>
<option value="[7]">7</option>
<option value="[8]">8</option>
</select>
<select name="productCat[35][2]">
<option value="[3]">3</option>
<option value="[4]">4</option>
<option value="[5]">5</option>
<option value="[6]">6</option>
<option value="[7]">7</option>
<option value="[8]">8</option>
</select>
<select name="productCat[35][3]">
<option value="[3]">3</option>
<option value="[4]">4</option>
<option value="[5]">5</option>
<option value="[6]">6</option>
<option value="[7]">7</option>
<option value="[8]">8</option>
</select>
<select name="productCat[35][4]">
<option value="[3]">3</option>
<option value="[4]">4</option>
<option value="[5]">5</option>
<option value="[6]">6</option>
<option value="[7]">7</option>
<option value="[8]">8</option>
</select>
<select name="productCat[88][1]">
<option value="[3]">3</option>
<option value="[4]">4</option>
<option value="[5]">5</option>
<option value="[6]">6</option>
<option value="[7]">7</option>
<option value="[8]">8</option>
</select>
<select name="productCat[88][2]">
<option value="[3]">3</option>
<option value="[4]">4</option>
<option value="[5]">5</option>
<option value="[6]">6</option>
<option value="[7]">7</option>
<option value="[8]">8</option>
</select>
<select name="productCat[88][3]">
<option value="[3]">3</option>
<option value="[4]">4</option>
<option value="[5]">5</option>
<option value="[6]">6</option>
<option value="[7]">7</option>
<option value="[8]">8</option>
</select>
<select name="productCat[88][4]">
<option value="[3]">3</option>
<option value="[4]">4</option>
<option value="[5]">5</option>
<option value="[6]">6</option>
<option value="[7]">7</option>
<option value="[8]">8</option>
</select>
<input type="submit" value="Save">
</form>
您应该将jQuery与data-
属性一起使用,这样您就可以轻松地将数据收集到要发布到服务器的对象中。
您可能可以将产品ID存储在GET查询变量中:?prodId=43
<select data-category="1">
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
jQuery部分:
var info = [];
$('select').each(function() {
info.push({
'category': $(this).data('category'),
'value': $(this).val()
});
});
既然你有
<select name="productCat[35][1]">
<select name="productCat[35][2]">
...
<select name="productCat[88][1]">
<select name="productCat[88][2]">
的价值
$_POST['productCat']
实际上是一个数组。像这样的数组:
array( 35 => array( 1 => .., 2 => .., 3 => ..., ... ),
88 => array( 1 => .., 2 => .., 3 => ..., ... )
);
因此,您的调试输出非常合理。
你可以这样访问数组:
$_POST[ 'productCat' ][ 35 ][ 3 ]
$_POST[ 'productCat' ][ 88 ][ 5 ]
通常,如果一个变量(表达式)引用了一个数组,甚至是作为另一个数组一部分的数组,只需附加[...]
即可访问此子数组。
- $_POST['productCat']是脚本返回的全部
- $_POST['productCat'][35]是产品35的所有值
- $_POST['productCat'][35][5]是产品35类别5的选定值