Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Система скидок
 
 автор: tima2010   (21.10.2011 в 12:24)   письмо автору
 
 

Привет! Делаю систему скидок, в базе есть данные:


limit      | discont
Лимит цены | Скидка %
1000                 1
5000                 3
10000               10


Пишу функцию:

<?php
function discont ($mymoney) {

$res query("SELECT limit, discont FROM ".$mydiscontdb." ORDER BY `limit`"); // old

if (count($res) == 0){
return 
"0";
}

foreach (
$res as $row) {

if (
$mymoney >= $row->limit) { // по идеи здесь нужно каким то образом дописать условие, && $mymoney < следующего лимита если он имеется
    
return $row->discont
}
else {
    return 
"0";
}

}
}
?>


С этим кодом если передать $mymoney = 10000 то получим return меньшей скидки, тоесть 1 % а должно быть 10 %
соответственно, нужно каким то образом дописать условие, && $mymoney < следующего лимита если он имеется

Есть идеи как это провернуть?

  Ответить  
 
 автор: Lotanaen   (21.10.2011 в 12:33)   письмо автору
 
   для: tima2010   (21.10.2011 в 12:24)
 

попробуйте так:


<?php
function discont ($mymoney) {

$res query("SELECT limit, discont FROM ".$mydiscontdb." WHERE `limit`<='$mymoney' ORDER BY `limit` DESC limit 1"); // old

if (count($res) == 0){
return 
"0";
}

foreach (
$res as $row) {

if (
$mymoney >= $row->limit) { // по идеи здесь нужно каким то образом дописать условие, && $mymoney < следующего лимита если он имеется
    
return $row->discont
}
else {
    return 
"0";
}

}
}
?> 

  Ответить  
 
 автор: tima2010   (21.10.2011 в 12:47)   письмо автору
 
   для: Lotanaen   (21.10.2011 в 12:33)
 

Почему то возвращает 0 записей :(

  Ответить  
 
 автор: Lotanaen   (21.10.2011 в 12:50)   письмо автору
 
   для: tima2010   (21.10.2011 в 12:47)
 

а скидка же "от" лимита или "до"? я предложил вариант "от"

  Ответить  
 
 автор: tima2010   (21.10.2011 в 12:51)   письмо автору
 
   для: Lotanaen   (21.10.2011 в 12:50)
 

получается
если у пользователя сумма покупок больше или равна лимиту то ему дается скидка присвоенная к этому лимиту

  Ответить  
 
 автор: Lotanaen   (21.10.2011 в 12:53)   письмо автору
 
   для: tima2010   (21.10.2011 в 12:51)
 

ну так я и предложил - там только в запросе поле лимит нужно в обратные кавычки взять : `limit`

  Ответить  
 
 автор: tima2010   (21.10.2011 в 13:16)   письмо автору
 
   для: Lotanaen   (21.10.2011 в 12:53)
 

Так заработало, почему пока что не понял...


WHERE (limit >=  '$mymoney') ORDER BY `limit` DESC LIMIT 1"

  Ответить  
 
 автор: Lotanaen   (21.10.2011 в 13:20)   письмо автору
 
   для: tima2010   (21.10.2011 в 13:16)
 

так условие скидок не будет соответствовать вашим условия
а разве так не работает :

SELECT `limit`, `discont` FROM ".$mydiscontdb." WHERE `limit`<='$mymoney' ORDER BY `limit` DESC limit 1

  Ответить  
 
 автор: tima2010   (21.10.2011 в 13:24)   письмо автору
 
   для: Lotanaen   (21.10.2011 в 13:20)
 

Да вы правы, условие не верное в моем варианте

Ваш вариант заработал! До этого почему не работал не понял, видимо где то допустил синтаксическую ошибку.

Большое спасибо! запомню возможность выставления условий прямо в запросе.

  Ответить  
 
 автор: Lotanaen   (21.10.2011 в 13:27)   письмо автору
 
   для: tima2010   (21.10.2011 в 13:24)
 

>Ваш вариант заработал! До этого почему не работал не понял, видимо где то допустил синтаксическую ошибку.

я же выше писал вам что в обратные кавычки нужно взять поле лимит в запросе...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования