簡體   English   中英

根據表單中的行數將商品添加到購物車

[英]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,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表格中:

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

使用這種方法我只需要在每次使用時增加$ iItemNo。 我目前正在構建一個PHP類,通過管理項目和項目總數來進一步簡化這一過程,如果有興趣,我會記得回過頭來分享它。

Josh的想法的變化。

我使用並行數組。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM