[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка 4 чисел от суммы
nofear999
Нашел лишь вот эту www.designtoeclipse.co.uk/index.php/Leed...pping-bag-total.html статью, но там система скидок на одну сумму только.
А надо вот такое:
свыше 500 грн -2%
свыше 900 грн- 5%
свыше 1200 грн- 7%
свыше 1600 грн-10%

Тоесть чел заказал товар на 500грн, ему в карзине высвечивается надпись, что, вам начислена скидка 2%, далее идет вывод: сумма заказа, скидка в 2%, и конечная сумма за вычитом скидки в 2%. А если он набрал больше то и пишет как выше! Как такое реализовать?

Код примерно такой написал но на одну сумму а вот как написать на 4?

Код
if (($total >= 500) && ($total != 900) && ($total < 900)) {
$procent = 1;
$total2 = ($procent*$total)/100;
$total = $total - $total2;
$disk = 'Скидка 2%';
}
else {
$disk = 'Скидка не досупна';
}
echo ($disk);




Спустя 16 минут, 27 секунд (26.03.2009 - 11:14) sergeiss написал(а):
Ты знаешь... У меня в подписи есть ссылка на описалово по ПХП. Рекомендую скачать и почитать.

А в твоем случае нужна конструкция
PHP
if( ... )
{
...
}
elseif( ... )
{
...
}
// и еще блоки elseif(....) - столько, сколько нужно
else
{
...
}

Спустя 5 минут, 2 секунды (26.03.2009 - 11:19) olgatcpip написал(а):
PHP
if($total>1600) $procent = 10;
else if($total>1200) $procent = 7;
else if($total>900) $procent = 5;
else if($total>500) $procent = 2;
else $procent = 0;

$total2 = ($procent*$total)/100;
$total = $total - $total2;
$disk = 'Скидка '.$procent.'%';



я согласна с sergeiss, читай

Спустя 1 час, 41 минута, 46 секунд (26.03.2009 - 13:01) Kuliev написал(а):
nofear999
Или можешь воспользоваться конструкцией

SWITCH ()

Спустя 1 час, 36 минут, 19 секунд (26.03.2009 - 14:38) delete написал(а):
Цитата (olgatcpip @ 26.03.2009 - 08:19)
PHP
if($total>1600) $procent = 10;
else if($total>1200) $procent = 7;
else if($total>900) $procent = 5;
else if($total>500) $procent = 2;
else $procent = 0;

$total2 = ($procent*$total)/100;
$total = $total - $total2;
$disk = 'Скидка '.$procent.'%';



я согласна с sergeiss, читай

PHP
$procent = 0;
if(
$total>500) $procent = 0.02;
if(
$total>900) $procent = 0.05;
if(
$total>1200) $procent = 0.07;
if(
$total>1600) $procent = 0.1;

$total1 = $total - $procent*$total;
$disk = "Сумма: $total, Скидка: ". $procent*100 ."%, Итого: $total1";

можно и не городить if ... else

Спустя 14 минут, 53 секунды (26.03.2009 - 14:52) nofear999 написал(а):
Почитал, но теперь у меня возникла другая проблема, этот код не выполняется так как не высчитывается скидка в корзине магазина, тоесть общая сумма заказа 500, процент скидки 2%, а вот ИТОГО: конечная сумма не высчитывается, получается что просто пишет Скидка: 2%.
Нашел статью как сделать чтобы высчитывалась ИТОГО: но там мне не помозгам.
ВОТ ЭТА СТАТЬЯ

Что спецы на это скажут, реально его переделать?

Спустя 3 минуты, 2 секунды (26.03.2009 - 14:55) delete написал(а):
В каком смысле не высчитывается? Тут математика уровень школы.

Спустя 5 минут, 25 секунд (26.03.2009 - 15:01) nofear999 написал(а):
В том что это корзина, там разные теги отвечают за каждую функцию.
Тоесть этот код просто выводит Скидка и все!!! Высчитывая ее от общей суммы. А вот чтобы считало ИТОГО: там по другому оказывается делается. Как описано в статье.

Спустя 6 минут, 25 секунд (26.03.2009 - 15:07) delete написал(а):
Знаешь как посчитать Итого если есть общая стоимость заказа и вычисленная скидка?! И при чем вообще теги?

Спустя 9 минут, 21 секунда (26.03.2009 - 15:17) nofear999 написал(а):
Я знаю как посчитать итого, просто делается все по другому, зависит от функций самого скрипта

Спустя 5 минут, 55 секунд (26.03.2009 - 15:23) delete написал(а):
Цитата

Тоесть чел заказал товар на 500грн, ему в карзине высвечивается надпись, что, вам начислена скидка 2%, далее идет вывод: сумма заказа, скидка в 2%, и конечная сумма за вычитом скидки в 2%. А если он набрал больше то и пишет как выше! Как такое реализовать?

Вот вопрос, есть ответ, что еще? Если ты не знаешь как это реализовать в скрипте и скорее всего готовом, так и пиши, выкладывай код

Спустя 3 минуты, 24 секунды (26.03.2009 - 15:26) nofear999 написал(а):
Код на 1 скидку для скрипта в посте 26.03.2009 - 11:52, мне надо его переделать под 4 скидки.
Код
Step 1. Added this to english.php

/**New for global discount*****/

var $_PHPSHOP_GLOBAL_DISCOUNT = 'Global Product Discount';
  var $_PHPSHOP_GLOBAL_DISCOUNT_INFO = 'Enter your global product discount in decimals. This discount will be applied to products in your shopping cart at the time of checkout';

var $_PHPSHOP_GLOBAL_DISCOUNTABOVE = 'Global Product Discount Minimum Cart Value';
  var $_PHPSHOP_GLOBAL_DISCOUNT_ABOVEINFO = 'Enter your global product discount start level in decimals. The discount will be applied when your shopping cart exceeds this amount at the time of checkout';


/**End of New for global discount*****/

Step 2.  ps_config.php added below line  $my_config_array = array(

/***New for global discount***/
     
        "GLOBAL_DISCOUNT"  =>      "conf_GLOBAL_DISCOUNT",
         "GLOBAL_DISCOUNTABOVE"  =>      "conf_GLOBAL_DISCOUNTABOVE",
     
/***End New for Global Discount***/

Step 3. In admin.show_cfg.php around line 120 added this (So that I could have a text box in the Price Configuration of the VM Global Configuration.)

/**New for Global discount**/
     
     <tr>
       <td class="labelcell"><label for="_VM_GLOBAL_DISCOUNT"><?php echo $VM_LANG->_PHPSHOP_GLOBAL_DISCOUNT ?>            </label></td>
       <td><input type="text" name="conf_GLOBAL_DISCOUNT" class="inputbox" value="<?php echo GLOBAL_DISCOUNT ?>" /></td>    
       <td><?php echo mm_ToolTip( $VM_LANG->_PHPSHOP_GLOBAL_DISCOUNT_INFO ) ?></td>
       </tr>
     
       <tr>
       <td class="labelcell"><label for="_VM_GLOBAL_DISCOUNTABOVE"><?php echo $VM_LANG->_PHPSHOP_GLOBAL_DISCOUNTABOVE ?>            </label></td>
       <td><input type="text" name="conf_GLOBAL_DISCOUNTABOVE" class="inputbox" value="<?php echo GLOBAL_DISCOUNTABOVE ?>" /></td>    
       <td><?php echo mm_ToolTip( $VM_LANG->_PHPSHOP_GLOBAL_DISCOUNT_ABOVEINFO ) ?></td>
       </tr>
     
/**End New for Global discount**/

Step 4. In basket.php below $product_rows = Array(); added

// Added for Global Discount
  $disc = GLOBAL_DISCOUNT;
  $disc_2 = $disc/100;
  $disc_1 = 1-$disc_2;
  $discabove = GLOBAL_DISCOUNTABOVE;
  $discadded=0;
  $discstate="";
//End added for global discount

Step 5. basket.php around line 161 just below } // End of for loop through the Cart

I added

/******Add code here to change total by percent if above £value*****/
if ($total>=$discabove) {
        $total = $total*$disc_1;
        $discadded=1;
        $discstate = "YOU HAVE RECIEVED A " . $disc . " % DISCOUNT!!";
        }
/****end discounting mod******/

Step 6. basket.php around line 161 just above $tax_total += $shipping_tax;

I added

/******Add code here to change total by percent if above £value*****/
if ($discadded = 1) {
        $tax_total = $tax_total*$disc_1;
       
        }
/****end discounting mod******/

to adjust the tax just before adding shipping


Step 7. In basket_b2c.html.php around line 70 added this (this flags a message to a user when they update the basket to take value above the preset level for application of discount.

<!-- added for global discount -->
<h3><strong><?php echo $discstate; ?> </strong></h3>

<!-- end added for global discount -->

Спустя 14 минут, 45 секунд (26.03.2009 - 15:41) delete написал(а):
Да... Это код? Это описания последовательных шагов изменения скриптов, если они у тебя имеются зачем вопрос задаешь? там все описано... Почитай сначала книжки, либо на заказ...

Спустя 2 минуты, 30 секунд (26.03.2009 - 15:43) nofear999 написал(а):
Блина да в том то и дело что я почитал весь этот код, он выполняется только на 1 скидки фиксированную!

Спустя 7 минут, 7 секунд (26.03.2009 - 15:50) delete написал(а):
Ну раз ты его понял, тогда там где скидка зафиксирована добавь проверку по сумме, в зависимости от которой будет присвоена скидка!

Спустя 1 час, 22 минуты, 14 секунд (26.03.2009 - 17:13) nofear999 написал(а):
Да в том то и дело что я разобрался что это на выполнение только одной скидки, а если бы я мог дописать до 4х то я бы сюда не писал. В этом то и проблема что и куда дописать! Сможете помочь пожалуйста?

Спустя 59 минут, 43 секунды (26.03.2009 - 18:12) olgatcpip написал(а):
Цитата (delete @ 26.03.2009 - 11:38)
Цитата (olgatcpip @ 26.03.2009 - 08:19)
PHP
if($total>1600) $procent = 10;
else if($total>1200) $procent = 7;
else if($total>900) $procent = 5;
else if($total>500) $procent = 2;
else $procent = 0;

$total2 = ($procent*$total)/100;
$total = $total - $total2;
$disk = 'Скидка '.$procent.'%';



я согласна с sergeiss, читай

PHP
$procent = 0;
if(
$total>500) $procent = 0.02;
if(
$total>900) $procent = 0.05;
if(
$total>1200) $procent = 0.07;
if(
$total>1600) $procent = 0.1;

$total1 = $total - $procent*$total;
$disk = "Сумма: $total, Скидка: ". $procent*100 ."%, Итого: $total1";

можно и не городить if ... else

С else работать быстрее будет. и не будет выполняться лишнее сравнение и присвоение

Спустя 1 час, 35 минут, 9 секунд (26.03.2009 - 19:47) delete написал(а):
Цитата (olgatcpip @ 26.03.2009 - 15:12)
С else работать быстрее будет. и не будет выполняться лишнее сравнение и присвоение

Я поражен Вашими познаниями и тем, как Вы сумели посчитать доли микросекунд.

Спустя 22 минуты, 7 секунд (26.03.2009 - 20:10) twin написал(а):
Доли микросекунд считать надо, это признак хорошего тона а по большому счету профессионализма. Не сорьтесь, свич, как предлогалось, тут будет наверняка оптимальней:
PHP
switch($total)
{
    case 
$total >= 500 && $total <= 900:
    
$procent 0.02;
    break;
    
    case 
$total 900 && $total <= 1200:
    
$procent 0.05;
    break;    
    
    case 
$total 1200 && $total <= 1600:
    
$procent 0.07;
    break;
    
    case 
$total 1600:
    
$procent 0.1;
    break;    
}

Спустя 20 минут, 6 секунд (26.03.2009 - 20:30) Viking написал(а):
а причем тут доли микросекунд? тут достаточно максимальное количество выполняемых операций посчитать, лично мне бессмысленные присвоения и сравнения просто глаза режут
имхо самое оптимальное
PHP
if($total>1600) $procent = 10;
elseif(
$total>1200) $procent = 7;
elseif(
$total>900) $procent = 5;
elseif(
$total>500) $procent = 2;
else $procent = 0;
$total1 = $total - $procent*$total;
$disk = "Сумма: $total, Скидка: ". $procent*100 ."%, Итого: $total1";


Спустя 1 час, 19 минут, 58 секунд (26.03.2009 - 21:50) Kuliev написал(а):
Viking
Немного подправил huh.gif
PHP
<?
$total intval(300);

if(
$total>=1600$procent 10;
elseif(
$total>=1200$procent 7;
elseif(
$total>=900$procent 5;
elseif(
$total>=500$procent 2;
else 
$procent 0;
$total1 $procent*$total/100;
$total2 $total $total1;
echo 
"Сумма: ".$total.", Скидка: "$procent ."% ваша скидка состовляет ".$total1." Итого: ".$total2."";




Спустя 15 минут, 49 секунд (26.03.2009 - 22:05) sergeiss написал(а):
А вообще, меня лично просто умиляет способность форумчан "сделать из мухи слона" smile.gif
Уже пошла вторая страница по вопросу, который решается за 3 секунды.

И еще небольшое примечание (типа, подолью масла в огонь "пустопорожнего обсуждения" smile.gif). Если уж называть переменные, основываясь на английских словах, то надо это делать полностью. Либо - использовать только русские слова, написанные латинскими буквами.
То есть, в данном случае лучше использовать либо $total и $percent, либо $vsego и $procent.

Спустя 22 минуты, 49 секунд (26.03.2009 - 22:28) delete написал(а):
sergeiss
Согласен, лучше бы по теме помогли, написали бы оптимальный и тому подобный код.

p.s. Я НАПИСАЛ СВОЙ ВОЗМОЖНЫЙ ВАРИАНТ, И НИКОГО НЕ ЗАСТАВЛЯЮ У КОГО РЕЖЕТ ГЛАЗА ИЛИ ПОДСЧЕТ ВРЕМЕНИ ИДЕТ ПРИНИМАТЬ ИЛИ ИСПОЛЬЗОВАТЬ! А ХОРОШИМ ТОНОМ ПРОГРАММИСТА ЯВЛЯЕТСЯ ЕГО ГИБКОСТЬ СПОСОБНОСТЬ РЕШИТЬ ЗАДАЧУ НЕ ОДНИМ ШАБЛОННЫМ СПОСОБОМ.

Спустя 1 час, 32 минуты, 9 секунд (27.03.2009 - 00:00) twin написал(а):
Цитата
А вообще, меня лично просто умиляет способность форумчан "сделать из мухи слона"
Ну дык на то и форум... Если слонов нет, то хоть в муху подуть. biggrin.gif

Цитата
p.s. Я НАПИСАЛ СВОЙ ВОЗМОЖНЫЙ ВАРИАНТ, И НИКОГО НЕ ЗАСТАВЛЯЮ У КОГО РЕЖЕТ ГЛАЗА ИЛИ ПОДСЧЕТ ВРЕМЕНИ ИДЕТ ПРИНИМАТЬ ИЛИ ИСПОЛЬЗОВАТЬ! А ХОРОШИМ ТОНОМ ПРОГРАММИСТА ЯВЛЯЕТСЯ ЕГО ГИБКОСТЬ СПОСОБНОСТЬ РЕШИТЬ ЗАДАЧУ НЕ ОДНИМ ШАБЛОННЫМ СПОСОБОМ.
Да боже упаси, ни кто не ставил это в упрек, откуда столько эмоций... А код готовый был уже давно, сейчас просто вялое обсуждение - как сделать лучше. Разумеется гибкость - черта хорошая, но в данном случае как раз она и в том, что задачу надо решить не просто лиш бы работало, а наиболее оптмально. Вот Viking продвинулся дальше всех, стоит посмотреть и поучиться, а не нервничать по пустякам.

Спустя 1 час, 3 минуты, 48 секунд (27.03.2009 - 01:04) nofear999 написал(а):
Народ народ народ, стоп, так что же насчет Вот этого поста что приходится на Дата 26.03.2009 - 12:26 от меня где код в полстраницы форума??? Как там то реализовать пример хоть одного кода приведенного выше???

Я не буду ни чей код осуждать потому как они понятное дело будут все работать а как реализовать теперь один из вариантов ваших кодов в том большом коде то?

Помогите плиз!

Спустя 1 час, 16 минут, 5 секунд (27.03.2009 - 02:20) kirik написал(а):
Может уже не нужно, но я что-то похожее писал для определения ранга на форуме (новичек - 0-100 сообщений, профи - 100-200 сообщений). Вот примерный код

PHP
function returnDiscountPrice($discounts$price)
{
    
$discounts[$price.'_u'] = 'user_set';
    
krsort($discounts);

    while(
$prc each($discounts))
    {
        if(
$prc['value'] == 'user_set')
            return 
current($discounts);
    }
}
// цена => процент скидки
$discounts = array(
        
1600 => 0.1,
        
1200 => 0.07,
        
900 => 0.05,
        
500 => 0.02,
);

// цена
$price 800;

$discount returnDiscountPrice($discounts$price);

echo 
'Сумма: '.$price.', Скидка: '.($discount 100).'% ваша скидка состовляет '.($price $discount).', Итого: '.($price $price $discount);


Все в массиве и не нужно добавлять дополнительный elseif, если понадобится добавить новую скидку.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.