我正在创建礼品卡功能,客户可以购买多种不同面额的礼品卡。例如,他们可以购买1 x 50美元的礼品卡和/或3 x 100美元的礼品卡等,其中3
是gcard_qty
,而100美元的礼品卡是gcard_name
。每个面额也与product_id
。
购物车功能将每个product_id
及其gcard_qty
存储为MySQL数据库中的一行,以及唯一代码和其他一些数据(价格等)。但是,当我通过电子邮件发送礼品卡详细信息时,我需要使用他们自己的唯一代码显示所有礼品卡。这意味着3张100美元的礼品卡需要三次显示,并附有修改后的代码,以便可以单独兑换。
以下是我到目前为止循环记录并显示每一行的内容:
while($row = mysql_fetch_array($result))
{
$gcid = $row["gcard_id"];
for ($i = 0; $i < count($gcid); $i++) {
$name = $row["product_name"];
$price = $row["product_price"];
$cardcode = $row["gcard_id"];
$detailsofgiftcards .= $name . " <strong>Code: " . $cardcode . "</strong><br />";
}
}
在回复$detailsofgiftcards
时,我自然只会为每个礼品卡值获得一个唯一代码,如下所示:
礼品卡$ 100.00价值代码:2000478282
礼品卡$ 50.00价值代码:2000478283
我想要的是在每张卡的唯一代码的末尾自动添加短划线和数字,并将每张卡显示为单独的产品,例如:
礼品卡$ 100.00价值代码:2000478282-1
礼品卡$ 100.00价值代码:2000478282-2
礼品卡$ 100.00价值代码:2000478282-3
礼品卡$ 50.00价值代码:2000478283-1
如果只有一张具有该值的礼品卡,则显示代码和-1
,否则显示同一行的多个记录,并以递增的值连接。
我想我需要从以下内容开始:
foreach($rows as $row) {
for($i = 0; $i < $row['gcard_qty']; $i++) {
// ???
}
}
然后我完全迷失了。
答案 0 :(得分:0)
如果我给你的数据结构命名正确,那么你可以这样做:
$gcid = $row["gcard_id"];
for ($i = 0; $i < count($gcid); $i++) {
$name = $row["product_name"];
$price = $row["product_price"];
$cardcode = $row["gcard_id"];
$quantity = $row["gcard_qty"];
for ($j = 1; $j <= quantity; ++$j) {
$detailsofgiftcards .=
$name . " <strong>Code: " . $cardcode . "-$j </strong><br />";
}
}
答案 1 :(得分:0)
这应该足够了:
while($row = mysql_fetch_array($result)){
$name = $row["product_name"];
$price = $row["product_price"];
$cardcode = $row["gcard_id"];
$quantity = $row["gcard_qty"];
for ($cid = 1; $cid <= $quantity; ++$cid) {
$detailsofgiftcards .=
$name . " <strong>Code: " . $cardcode . "-$cid </strong><br />";
}
}
你的内循环出错了。您正在使用count($gcid)
,其中gcid是id字段。因此它将始终运行一次并终止。像我在代码中所做的那样将其更改为数量。
答案 2 :(得分:0)
我的理解是您希望使用额外的“-X”代码将新产品添加到数据库中。看起来像其他答案只是帮助你回应所有“-X”,这可能更符合你的想法......
foreach($rows as $row) {
for($end_id = 1; $end_id <= $row['gcard_qty']; $end_id++) {
$new_cardcode = $row['gcard_id'];
$new_cardcode .= '-'.$end_id;
if($end_id === 1){
//update 'gcard_id' of the current row
} else {
//create a new product entry in database with all the same values as
//$row except with the new cardcode
}
}
}
与你的主要区别在于我们在1而不是0上启动for循环索引,以便我们可以在$ new_cardcode字符串中使用它。