我有n个文本框来获取产品名称及其数量。所以我使用PHP数组来获取值并且其工作正常。我尝试了逻辑,如果用户提供重复的产品,然后删除重复的产品,但他们的数量添加了相同的产品。
<form method="post" action ="insert.php">
<input type =text name ="products[]" value = "">
<input type =text name ="quantity[]" value = "">
<!-- ...........
n numbers of textbox to add the products and quantity
--------- -->
<input type ="submit" value="submit"> </form>
insert.php:
$products = $_POST['products'];
$quantity = $_POST['quantity'];
for($i=0;$i<count($products);$i++)
{
$query = "INSERT INTO table_name (`products`,`quantity`) VALUES ('$products[$i]','$quantity[$i]')";
mysql_query($query);
}
阵列就像
$products[0] = "Apple" $quantity[0] = "20"
$products[1] = "Orange" $quantity[1] = "10"
$products[2] = "Apple" $quantity[2] = "30"
这里的产品名称apple是重复的,它发生两次。所以我删除了重复的名称apple,它们的数量值应该像50(20 + 30)
一样添加答案 0 :(得分:1)
首先,我会规范化表格,只需插入product_id(主键),数量并执行以下操作(使用带绑定的变量):
INSERT INTO stock (product_id,quantity) VALUES ($1,$2 ) ON DUPLICATE KEY UPDATE quantity = quantity + $2
如果表格中已有Apples
(id = 2),我们会更新数量
如果你不想规范化这些表并使用你所拥有的相同的表:
制作product
列主键
使用INSERT INTO stock (product,quantity) VALUES ($1,$2 ) ON DUPLICATE KEY UPDATE quantity = quantity + $2
或(但我真的不喜欢):
$distinct = array();
foreach($products as $index=>$product) {
if(!isset($distinct[$product])) {
$distinct[$product] = $quantity[$index];
} else {
$distinct[$product] += $quantity[$index];
}
}
答案 1 :(得分:0)
尝试这样的事情:
$products = $_POST['products'];
$quantity = $_POST['quantity'];
$productQuantity = array();
foreach($products as $key => $product) {
if (!array_key_exists($product, $productQuantity) {
$productQuantity[ $product ] = 0;
}
$productQuantity[ $product ] += $quantity[ $key ];
}
然后你将得到一个数组
$productQuantity['Apple'] => 50
$productQuantity['Orange'] => 10
因此,要将其添加到数据库,您可以执行以下操作:
foreach($productQuantity as $name => $qty) {
$query = "INSERT INTO table_name (`products`,`quantity`) VALUES ('$name','$qty')";
mysql_query($query);
}