我有一个表单,让用户选择一个项目并输入其数量。我的问题是我如何使用会话在下一页回应它?例如,如果用户选择数量为4的OPTION-1,则下一页将回显已选择:选项1(4)。任何形式的帮助将不胜感激。
这是我的代码:
<label>
<input type="checkbox" name="combos[]" class="drink" value="Title1" data-price="560" />
<input min="0" max="20" type="number" class="quantity" name="comboscount[]" value="true" placeholder="0"/><p>Quantity</p>
</label>
<label>
<input type="checkbox" name="combos[]" class="drink" value="Title2" data-price="322" />
<input min="0" max="20" type="number" class="quantity" name="comboscount[]" value="true" placeholder="0"/><p>Quantity</p>
</label>
<label>
<input type="checkbox" name="combos[]" class="drink" value="Title3" data-price="231" />
<input min="0" max="20" type="number" class="quantity" name="comboscount[]" value="true" placeholder="0"/><p>Quantity</p>
</label>
以下是我在第2页中处理它的方法:
$_SESSION['combos'] = $_POST['combos'];
$_SESSION['comboscount'] = $_POST['comboscount'];
if(empty($_SESSION['combos']))
{
echo "Combos: <br />"."Nothing was selected."."<br /><br />";
}
else
{
echo ("Combos: <br />");
foreach ($_SESSION['combos'] as $key => $val) {
echo $val." (".$_SESSION['comboscount'][$key].")<br />";
}
echo ("<br />");
}
我得到了列表的标题数组,但数量是空的。在处理数组时我是否遗漏了什么?
再次感谢。
答案 0 :(得分:0)
您无法使用$_SESSION['combos']
的密钥作为$_SESSION['comboscount']
的密钥,因为只有已选中的复选框才会提交给服务器。他们将从0
开始获得顺序索引,但未选中的框不会出现在该序列中。另一方面,将提交所有文本框。因此,两个数组的索引将不对应于表单中的匹配元素。
您可以做的是将显式索引放入所有名称,以使它们保持同步。
<label>
<input type="checkbox" name="combos[0]" class="drink" value="Title1" data-price="560" />
<input min="0" max="20" type="number" class="quantity" name="comboscount[0]" value="true" placeholder="0"/><p>Quantity</p>
</label>
<label>
<input type="checkbox" name="combos[1]" class="drink" value="Title2" data-price="322" />
<input min="0" max="20" type="number" class="quantity" name="comboscount[1]" value="true" placeholder="0"/><p>Quantity</p>
</label>
<label>
<input type="checkbox" name="combos[2]" class="drink" value="Title3" data-price="231" />
<input min="0" max="20" type="number" class="quantity" name="comboscount[2]" value="true" placeholder="0"/><p>Quantity</p>
</label>
文本框中的索引是多余的,但查看显式关联有帮助。
创建表单的代码应该能够自动填写索引:
foreach ($items as $index => $item) { ?>
<label>
<input type="checkbox" name="combos[<?php echo $index; ?>]" class="drink" value="<?php echo $item['name']; ?>" data-price="<?php echo $item['price']; ?>" />
<input min="0" max="20" type="number" class="quantity" name="comboscount[<?php echo $index; ?>]" value="true" placeholder="0"/><p>Quantity</p>
</label>
<?php ;