Php 根据表单中的行数将项目添加到购物车

Php 根据表单中的行数将项目添加到购物车,php,javascript,forms,paypal,shopping-cart,Php,Javascript,Forms,Paypal,Shopping Cart,我正在寻找一种方法,将表单中的行数链接到一个简单的购物车/结帐脚本中的项目 下面是一个场景。用户正在预订会议地点。有一个三层定价结构,每个价格都有一部分表单。当用户第一次导航到预订页面时,会要求用户在每个定价结构中添加他/她希望在会议中预订的人数。可以使用javascript向表单的每个部分添加额外的行。一旦登记的每个人的姓名/详细信息完成,用户单击“提交”按钮,将所有信息提交到MySQL数据库,并将用户重定向到付款页面 我想这个付款页面,包括一个简单的购物车/结帐,这是自动填写的人数在每一个费

我正在寻找一种方法,将表单中的行数链接到一个简单的购物车/结帐脚本中的项目

下面是一个场景。用户正在预订会议地点。有一个三层定价结构,每个价格都有一部分表单。当用户第一次导航到预订页面时,会要求用户在每个定价结构中添加他/她希望在会议中预订的人数。可以使用javascript向表单的每个部分添加额外的行。一旦登记的每个人的姓名/详细信息完成,用户单击“提交”按钮,将所有信息提交到MySQL数据库,并将用户重定向到付款页面

我想这个付款页面,包括一个简单的购物车/结帐,这是自动填写的人数在每一个费率,总每一个费率,以及一个总。用户只需点击一个按钮即可完成PayPal支付

因此,我一直关注的部分是如何自动将信息从表单(即每种速率的行数(人))传递到“签出”页面,以及我可以使用哪个脚本生成签出页面

我很感激你能帮我解决这个问题

谢谢


尼克

听起来你已经处理了用户的添加,所以让我来谈谈提交购物车。我做了类似的事情,但创建了一个PHP函数来处理每个项目的添加,它基本上在表单中响应每个产品(desc、price等),然后在适当的时间将此表单提交给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($iItemno、$sItemname、$iQty、$fPrice、$fDiscountAmount、$sCode)
{
全球$iUser;
$s1=sprintf(“”,$iItemno,$sItemname);
$s2=sprintf(“”,
$iItemno,$fPrice);
$s3=sprintf(“”,
$iItemno,$iQty);
$s4=sprintf(“”,$iItemno,$fDiscountAmount);
$sCode=sprintf(“%s-%d”,$sCode,$iUser);
$s5=sprintf(“”,$iItemno,$sCode);
$sReturn=$s1.$s2.$s3.($fDiscountAmount?$s4:“”)。$s5;
echo$s5;
返回$sReturn;
}
它被放在标准PayPal表单中:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" name="frmPaypal"> <input type="hidden" name="cmd" value="_cart">


使用此方法,每次使用时只需增加$iItemNo。我目前正在构建一个PHP类,通过管理项目和项目总数来进一步简化这个过程,如果有兴趣,我会尽量记住回来并在这里分享

我会使用POST数组,这样在添加每一行时,它都会使用类似于以下格式的内容:

<input name='tickets[][name]' />
<input name='tickets[][email]' />

然后在PHP方面,我们可以简单地计算票数,并根据通过$\u 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;

乔希想法的变体

我会使用并行阵列

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']} ";

$rates=数组(
1 => 10,
2 => 50,
3 => 200,
…//根据需要提供更多
);
$totals=数组('all'=>0);
$people=array();
foreach($费率为$费率){
$totals[$rate]=0;
$people[$rate]=0;
}
foreach($tickets作为$ticket){
$totals['all']+=$rates[$ticket['rate']];
$totals[$ticket['rate']+=$rates[$ticket['rate']];
$people[$ticket['rate']]++;
}
foreach($费率=>$价格){
打印“{$totals[$rate]}”;
打印“{$people[$rate]}人X${$price}={$totals[$rate]}”;
}
打印“总计={$totals['all']}”;

@Neal到目前为止,我已经实现了一个可以动态添加行的表单,在提交时,它会重定向到一个带有SimpleCart页面的页面,在该页面中,用户必须手动添加每个预订费率的人数。我希望这一部分是自动化的,以便支付页面上购物车中的金额根据表单各部分中添加的行数自动生成。理想情况下,我也希望有一种方法可以将预订链接到PayPal支付(和/或将支付信息添加到MySQL),使用唯一标识符,或类似的方法。感谢您的回答。不幸的是,我现在不在家,所以不能测试它们。我将在周末这样做。尼克诺冒犯了你,但是ew?我很想否决投票,但我想那是浪费。