Добавление товаров в корзину в зависимости от количества строк в форме - PullRequest
3 голосов
/ 16 мая 2011

Я ищу способ связать количество строк в форме с элементами в простом скрипте корзины / оформления заказа.

Вот сценарий.Пользователи бронируют места на конференции.Существует три уровня ценовой структуры и раздел формы для каждой цены.Когда пользователь впервые переходит на страницу бронирования, его просят добавить количество людей, которых он / она желает забронировать в конференцию при каждой структуре цен.Дополнительные строки могут быть добавлены в каждый раздел формы с помощью JavaScript.Как только имена / данные каждого человека, которого бронируют, были заполнены, пользователь нажимает кнопку «Отправить», которая передает всю информацию в базу данных MySQL и перенаправляет пользователя на страницу оплаты.

Я бынапример, эта страница оплаты состоит из простой корзины покупок / оформления заказа, которая автоматически заполняется количеством людей по каждой ставке, общей суммой за каждую ставку и общей суммой.Затем пользователь может просто нажать кнопку, чтобы завершить платеж PayPal.

Таким образом, часть, на которой я застрял, заключается в том, как автоматически передавать информацию из форм (то есть количество строк (человек) по каждой ставке)) на страницу 'checkout' и какой сценарий я мог бы использовать для создания страницы оформления заказа.

Буду признателен за любую помощь, чтобы получить эту работу,

Спасибо,

Ник

Ответы [ 3 ]

1 голос
/ 25 мая 2011

Я бы использовал 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 вы можете предоставить веб-сервис, который рассчитывает скорость и возвращает подробности через ajax или что-то подобное.

На последней странице вы просто берете результаты этих вычислений (сохраненные в сеансе или против порядка в базе данных) и распечатываете их в своем представлении.

0 голосов
/ 25 мая 2011

вариант идеи Джоша.

Я бы использовал параллельные массивы.

Кажется, Джош также основывает цены на количестве людей (групповые скидки) ... что не моепонимание проблемы, вместо этого вы хотите предложить дифференцированную структуру ценообразования, правильно?

<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']} ";
0 голосов
/ 20 мая 2011

Похоже, у вас есть добавленные пользователи, поэтому позвольте мне коснуться отправки корзины покупок. Я сделал нечто подобное, но создал функцию PHP для обработки добавления каждого элемента, которая по сути повторяла каждый продукт (описание, цена и т. Д.) Внутри формы, а затем просто отправил эту форму в нужное время в 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, чтобы еще больше упростить это, управляя элементами и общим количеством элементов. Если интересно, постараюсь вернуться и поделиться им здесь.

...