【问题标题】:Echo Title and Quantity when a checkbox is checked?选中复选框时回显标题和数量?
【发布时间】:2016-10-01 05:57:01
【问题描述】:

我有一个表单让用户选择一个项目并输入它的数量。我的问题是如何使用会话在下一页中回显它?例如,如果用户选择数量为 4 的 OPTION-1,则下一页将回显 Selected:Option1 (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 />");
  }  

我得到了要列出的标题数组,但数量为空。我在处理数组的过程中遗漏了什么吗?

再次感谢。

【问题讨论】:

  • 你为什么使用value="true" 作为type="number" 输入?

标签: php forms checkbox


【解决方案1】:

您不能将$_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 ;

【讨论】:

  • 感谢@barmar。这可能是一个解决方案,但问题是我还在表单中循环了标签,以便表单将显示该特定类别的复选框。所以我的复选框看起来像这样: 所以 mu db 会自动填充它。如何那么我应用 thre 索引呢?
  • 不要尝试将代码放入 cmets。如果问题中有更多详细信息,请编辑问题。
  • 对不起。稍后将在我使用移动设备时对其进行编辑。谢谢
  • 我已添加到我的答案中,显示如何填充名称属性。
猜你喜欢
  • 2014-06-20
  • 1970-01-01
  • 2013-04-26
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多