如何在php表单中分组多个表单输入以进行发送

  • 本文关键字:表单 php php forms input
  • 更新时间 :
  • 英文 :


我有一个非常简单的产品表单。每个产品都有一个复选框和数量字段,重复创建一个数据数组,如下所示:

<form action="process.php" method="post">
<input type="checkbox" name="product[]" value="product 1" />
<input type="text" name="quantity[]" />
<input type="checkbox" name="product[]" value="product 2" />
<input type="text" name="quantity[]" />
<input type="submit" />
</form>

然后我在php中以以下方式处理此表单:

//php script to retrieve data
$product    = isset($_POST['product'])  ? implode(', ', $_POST['product'])  : 'Not selected'; 
$quantity   = isset($_POST['quantity']) ? implode(', ', $_POST['quantity']) : 'Not mentioned'; 
$messageToSend = <<<END
Products:  $product - $quantity
END;

,输出结果如:Products: product 1, product 2 - 10,2

但是我想要实现的是以下输出:产品:产品1 × 10,产品2 × 2

基本上我想弄清楚的是如何在我检索数据后,在php脚本中拆分和分组每个产品的数据。

非常感谢您的帮助。

  1. 这看起来不完全php。
  2. 你只需要同时遍历两个列表:

    foreach ($quantity as $key => $quant) {
        echo $product[$key].' - x'.$quant;
    }
    

这是一般的想法,但正如评论中提到的,单独这样做并不是真正的解决方案。

注意事项:

  1. 复选框将不会传递一个值,如果他们没有被选中,所以你得到的$product数组将不会是相同的大小,也不会像你想的那样与$quantity数组对齐键值。(尝试以不同的方式命名复选框,例如product[1])。-谢谢tmuguet
  2. 如果没有一个复选框被选中,你将不会得到一个数组,所以将它传递给foreach会产生你提到的错误。

试试这个:

<?php 
foreach($_POST['product'] as $key => $product){
   $quantity = isset($_POST['quantity'][$key])? $_POST['quantity'][$key]:'Not selected';
   $message[] = $product.' - x'.$quantity;
}
echo implode(',', $message);
?>

相关内容

  • 没有找到相关文章

最新更新