选中复选框时的回声标题和数量?

时间:2016-06-01 18:08:07

标签: php forms checkbox

我有一个表单,让用户选择一个项目并输入其数量。我的问题是我如何使用会话在下一页回应它?例如,如果用户选择数量为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 />");
  }  

我得到了列表的标题数组,但数量是空的。在处理数组时我是否遗漏了什么?

再次感谢。

1 个答案:

答案 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 ;