Каков наилучший способ добавить скидки к процессу заказа?
Допустим, веб-сайт продает продукты и хочет разрешить скидки с использованием кодов купонов. Каков наилучший способ структурировать это? Вот что я имею в виду, можете ли вы подтвердить, что это правильный путь? Любые другие предложения, пожалуйста? Как это делают другие?
Вот мое мышление:
В заказе будет указан продукт в качестве позиции заказа. Будет введен ввод кода купона, и при вводе правильного кода в заказ будет добавлена новая позиция с отрицательным значением. Другими словами, теперь заказ будет состоять из двух пунктов:
- Продукт - 10 долларов
- Скидка - 5 $ Итого: 5 $
Это правильный подход к скидкам и купонам?
2 ответа
Есть несколько способов сделать это. Там нет одного решения. Тем не менее, вот несколько ошибок.
- Пользователь удаляет скидку из корзины?
- Пользователь добавляет несколько одинаковых кодов купонов?
- У пользователя есть пустая корзина?
В конце концов, решение, которое применяет скидку по завершении заказа, будет наименее подвержено вышесказанному. Не пытайтесь отслеживать порядок и добавлять флаги в базу данных или сеанс. Это будет бесполезно. Вы действительно хотите сосредоточиться на тестировании, если условия купонов были выполнены. Envision функции, такие как applyCoupons()
или же eligibleForDiscount($coupon)
,
У вас должно быть две реляционные таблицы в базе данных. Купоны имеют разные значения скидок?
Ты можешь иметь coupons
таблицу с идентификатором, кодом, скидкой, и вы можете хранить код купонов через запятую в code
поле, подобное этому (ABC, BBC, CCS) или по одному на строку.
если пользователь вводит идентификатор купона в поле ввода, проверьте его в базе данных, прочитайте discount
и сделайте $final_price = $price * $discount (при условии, что вы сохраните скидку как 0.2 (для 20%) и так далее.
Если вы хотите разделить запятыми коды купонов, сделайте это, чтобы управлять ими:
$discount = 1;
while ( $var = mysql_fetch_assoc($result)) {
$coupon = explode(',', $var['code']);
$count = count($coupon);
for ($i = 0; $i <= $count; $i++) {
if($_POST['input_coupon'] == $coupon[$i]) { $discount = $var['discount'] }
}
и тогда вы $ final_price = $ цена * $ скидка; Вы можете поместить его в запрос AJAX POST и вуаля;
Или используйте одну строку с каждым кодом купона и это проще.
Или выполните запрос JOIN (таблицы, связанные по id), чтобы упростить процесс.