根据窗体中的行数将项目添加到购物车
Adding items to shopping cart based on number of rows in a form
我正在寻找一种方法,将表单中的行数链接到简单购物车/结帐脚本中的项目。
这是场景。 用户正在预订会议位置。 有一个三层定价结构,每个价格都有一个窗体部分。 当用户首次导航到预订页面时,系统会要求他/她在每个定价结构中添加他/她希望预订会议的人数。 可以使用javascript将额外的行添加到表单的每个部分。 完成每个预订人员的姓名/详细信息后,用户单击"提交"按钮,将所有信息提交到MySQL数据库并将用户重定向到付款页面。
我希望此付款页面由一个简单的购物车/结帐组成,该购物车/结帐会自动填充每个费率的人数,每个费率的总数以及总计。 然后,用户只需单击一个按钮即可完成PayPal付款。
所以我坚持的部分是如何自动将信息从表单(即每个速率的行数(人))传递到"结帐"页面,以及我可能使用哪个脚本来生成结帐页面。
我将不胜感激任何帮助来使其工作,
谢谢
缺口
我会使用一个 POST 数组,这样,当添加每一行时,它使用类似于格式的东西:
<input name='tickets[][name]' />
<input name='tickets[][email]' />
然后在 PHP 方面,我们可以简单地计算票证的数量,并根据通过 $_POST 生成的数组进行定价
<?php
$tiers = array(
array(
'num_people' => 3,
'price' => 50.00,
),
array(
'num_people' => 10,
'price' => 20.00,
),
array(
'num_people' => 50,
'price' => 10.00,
)
}
$price = $tiers[0]['price'];
$num_people = count($_POST['tickets']);
for($i=count($tiers); $i>=0; $i--){
if ($num_people >= $tiers[$i]['num_people']) {
$pricing = $tiers[$i]['pricing'];
break;
}
}
$total = $price * $num_people;
在javascript方面,你可以公开一个Web服务,它计算速率并通过ajax或类似的东西返回详细信息。
在最后一页上,您只需获取这些计算的结果(存储在会话中或根据数据库中的顺序)并将其打印到视图中。
听起来您已经处理了用户的添加,所以让我谈谈提交购物车。 我做了类似的事情,但创建了一个PHP函数来处理每个项目的添加,它基本上与表单中的每个产品(desc,价格等)相呼应,然后简单地在适当的时间将此表单提交给PayPal。
function FormatPaypal($iItemno, $sItemname, $iQty, $fPrice, $fDiscountAmount, $sCode)
{
global $iUser;
$s1 = sprintf('<input type="hidden" name="item_name_%d" value="%s">', $iItemno, $sItemname);
$s2 = sprintf('<input type="hidden" name="amount_%d" value="%.2f"> ',
$iItemno, $fPrice);
$s3 = sprintf('<input type="hidden" name="quantity_%d" value="%d"> ',
$iItemno, $iQty);
$s4 = sprintf('<input type="hidden" name="discount_amount_%d" value="%.2f">', $iItemno, $fDiscountAmount);
$sCode = sprintf("%s-%d", $sCode, $iUser );
$s5 = sprintf('<input type="hidden" name="item_number_%d" value="%s">', $iItemno, $sCode);
$sReturn = $s1.$s2.$s3.($fDiscountAmount ? $s4 : '').$s5;
echo $s5;
return $sReturn;
}
它被放置在标准PayPal形式中:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" name="frmPaypal"> <input type="hidden" name="cmd" value="_cart">
使用这种方法,我只需要在每次使用时增加$iItemNo。 我目前正在构建一个PHP类,通过管理项目和总项目数来进一步简化这一点,如果有兴趣,我会尽量记得回来并在这里分享。
Josh想法的变体。
我会使用并行数组。
乔希似乎也根据人数(团体折扣)定价......这不是我对问题的理解,而是您想提供差异化的定价结构,对吗?
<input name='tickets[][name]' />
<input name='tickets[][email]' />
<input name='tickets[][rate]' />
$rates = array(
1 => 10,
2 => 50,
3 => 200,
... // more as needed
);
$totals = array('all' => 0);
$people = array();
foreach ($rates as $rate) {
$totals[$rate] = 0;
$people[$rate] = 0;
}
foreach ($tickets as $ticket) {
$totals['all'] += $rates[$ticket['rate']];
$totals[$ticket['rate']] += $rates[$ticket['rate']];
$people[$ticket['rate']]++;
}
foreach ($rates as $rate => $price) {
print "{$totals[$rate]}";
print "{$people[$rate]} people X $ {$price} = {$totals[$rate]}";
}
print "total = {$totals['all']} ";
- 使用方法将扫描的项目添加到总数中
- 如何将项目添加到Highcharts图例中
- 如何将多个项目添加到列表中
- 将项目添加到动态列表
- 如何将一个表单中的项目添加到 Rails 中另一个表单的下拉选项
- Yeoman/Grunt:向项目添加子目录
- 将项目添加到篮式过滤器与Splice ReactJS Javascript
- 通过Jquery将项目添加到HTML Select
- 向每个堆叠条形图项目添加链接
- 微风:将项目添加到复杂类型的数组中
- 运行并向nodejs项目添加单元测试
- React Redux将项目添加到列表中会转移到其他创建的列表中
- 谷歌表单:将项目添加到响应中
- react.js每n个项目添加一个开始标签或结束标签
- jquery appendTo将多个项目添加到一个容器中
- Javascript window.open() 多次将项目添加到购物车
- 在 ReactJs 状态上将项目添加到数组中,并超时以进行自我删除
- 如何将项目添加到选定的追加列表 jQuery
- 动态将项目添加到精彩弹出库
- 无论如何可以将项目添加到 DOM 中的现有列表中