chelton085
Местный
- Сообщения
- 174
- Реакции
- 6
Ребят, помогите выставить условия для двойного неравенства. Уже третий день бьюсь безуспешно. Не могу понять, как знаки выставить. Или, возможно, у меня в целом конструкция не правильная. В общем, если на словах - если выплачено юзеру уже от 120% до 149% депозита - он более не может пополнять счет, пока не выведет ровно 150%.
Я написал вот такую конструкцию, но не могу совладать с ней.
Я написал вот такую конструкцию, но не могу совладать с ней.
PHP:
<?PHP
if ($user_data["insert_sum"]*1.2 <= $user_data["payment_sum"] && $user_data["payment_sum"] <= $user_data["insert_sum"]*1.49) {
?>
<table><div class="clr"></div>
<center><font color="red"><b>Вы должны вывести 150% от суммы депозита, чтобы пополнять счёт снова!</center>
</table>
</div>
<?PHP
return;
}
?>
FarMan
Местный
- Сообщения
- 58
- Реакции
- 9
а зачем тебе первая чать? попробуй так!chelton085 написал(а):Ребят, помогите выставить условия для двойного неравенства. Уже третий день бьюсь безуспешно. Не могу понять, как знаки выставить. Или, возможно, у меня в целом конструкция не правильная. В общем, если на словах - если выплачено юзеру уже от 120% до 149% депозита - он более не может пополнять счет, пока не выведет ровно 150%.
Я написал вот такую конструкцию, но не могу совладать с ней.
PHP:<?PHP if ($user_data["insert_sum"]*1.2 <= $user_data["payment_sum"] && $user_data["payment_sum"] <= $user_data["insert_sum"]*1.49) { ?> <table><div class="clr"></div> <center><font color="red"><b>Вы должны вывести 150% от суммы депозита, чтобы пополнять счёт снова!</center> </table> </div> <?PHP return; } ?>
PHP:
<?PHP
if ($user_data["payment_sum"] <= $user_data["insert_sum"]*1.49) {
?>
<table><div class="clr"></div>
<center><font color="red"><b>Вы должны вывести 150% от суммы депозита, чтобы пополнять счёт снова!</center>
</table>
</div>
<?PHP
return;
}
?>
chelton085
Местный
- Сообщения
- 174
- Реакции
- 6
Если бы мне нужно было бы односторонее условие, было бы все просто. Но идея в другом - чтобы пользователь в процессе мог пополняться, однако доведя выплаты до определенного уровня. он получает ограничение на ввод и должен вывести все 150%. Это хочу внедрить затем, чтобы особо хитрые не пользовались моментом, когда достигается уровень повышенной окупаемости и можно вводить мелкие суммы, окупая их в профит +50% всего за сутки. Вот потому-то мне и нужны два условия, а как их заставить одновременно работать - ума не приложу.FarMan написал(а):а зачем тебе первая чать? попробуй так!
FarMan
Местный
- Сообщения
- 58
- Реакции
- 9
пооробуй вместо && and прописатьchelton085 написал(а):Если бы мне нужно было бы односторонее условие, было бы все просто. Но идея в другом - чтобы пользователь в процессе мог пополняться, однако доведя выплаты до определенного уровня. он получает ограничение на ввод и должен вывести все 150%. Это хочу внедрить затем, чтобы особо хитрые не пользовались моментом, когда достигается уровень повышенной окупаемости и можно вводить мелкие суммы, окупая их в профит +50% всего за сутки. Вот потому-то мне и нужны два условия, а как их заставить одновременно работать - ума не приложу.
FarMan
Местный
- Сообщения
- 58
- Реакции
- 9
FarMan
Местный
- Сообщения
- 58
- Реакции
- 9
к тебя прописано в коде что такое $user_data ?chelton085 написал(а):Если бы мне нужно было бы односторонее условие, было бы все просто. Но идея в другом - чтобы пользователь в процессе мог пополняться, однако доведя выплаты до определенного уровня. он получает ограничение на ввод и должен вывести все 150%. Это хочу внедрить затем, чтобы особо хитрые не пользовались моментом, когда достигается уровень повышенной окупаемости и можно вводить мелкие суммы, окупая их в профит +50% всего за сутки. Вот потому-то мне и нужны два условия, а как их заставить одновременно работать - ума не приложу.
PHP:
$db->Query("SELECT * FROM db_users_b WHERE id = '$usid' LIMIT 1");
$user_data = $db->FetchArray();
- Сообщения
- 280
- Реакции
- 46
Логический оператор AND выполняет условие только в том случае, если все условия истинные. Если хотя бы одно условие ложно, то все условие ложно. Вот почему оператор AND иногда сравнивается с математическим умножением. 451*6845*655*0 = 0. Какие бы не были числа, но если в выражении есть ноль, то все выражение нулевое.chelton085 написал(а):Ребят, помогите выставить условия для двойного неравенства. Уже третий день бьюсь безуспешно. Не могу понять, как знаки выставить. Или, возможно, у меня в целом конструкция не правильная. В общем, если на словах - если выплачено юзеру уже от 120% до 149% депозита - он более не может пополнять счет, пока не выведет ровно 150%.
Я написал вот такую конструкцию, но не могу совладать с ней.
PHP:<?PHP if ($user_data["insert_sum"]*1.2 <= $user_data["payment_sum"] && $user_data["payment_sum"] <= $user_data["insert_sum"]*1.49) { ?> <table><div class="clr"></div> <center><font color="red"><b>Вы должны вывести 150% от суммы депозита, чтобы пополнять счёт снова!</center> </table> </div> <?PHP return; } ?>
Логические операторы && и and имеют тот же смысл!
Логический оператор OR отличается от оператора AND тем, что если в условии есть хоть одно истинное условие, то все условие истинно. Вот почему оператор OR иногда сравнивается с математическим сложением. 0+0+0+1 = 1. Если в выражении много нулей, но есть хотя бы одна единица, то все выражение ненулевое.
chelton085
Местный
- Сообщения
- 174
- Реакции
- 6
Пока оставил эти двойные условия - не получается и всё...Мыкает дико эта хрень..
Скажите, кто внедрял себе опыт? В частности, интересует опыт именно за покупку фруктов.
Я сделал вот так:
И назначил апдейт базы:
Как вариант для единого кол-во опыта за любой вид дерева - отлично работает.
Но хочу внедрить, чтобы кол-во опыта за каждое древо было разным.
Если я делаю такую конструкцию:
То система определяет опять же единое кол-во опыта, но уже с нижней конструкци, то есть делает для всех древ +30 опыта за единицу.
А как сделать, чтобы система добавляла в ехр именно нужное кол-во опыта для каждого из древ - я не могу догнать.
Скажите, кто внедрял себе опыт? В частности, интересует опыт именно за покупку фруктов.
Я сделал вот так:
PHP:
if ($сitem = "a_t"){
$exp = 20;
}
PHP:
$db->Query("UPDATE db_users_b SET exp = exp + '$exp' WHERE id ='$usid' LIMIT 1");
Но хочу внедрить, чтобы кол-во опыта за каждое древо было разным.
Если я делаю такую конструкцию:
PHP:
if ($сitem = "a_t"){
$exp = 20;
if ($сitem = "b_t"){
$exp = 30;
}
А как сделать, чтобы система добавляла в ехр именно нужное кол-во опыта для каждого из древ - я не могу догнать.
FarMan
Местный
- Сообщения
- 58
- Реакции
- 9
chelton085
Местный
- Сообщения
- 174
- Реакции
- 6
Хорошо, тогда встает вопрос с апдейтом:FarMan написал(а):PHP:if ($сitem = "a_t"){ $exp = 20; if ($сitem = "b_t"){ $exp1 = 30; }
PHP:
$db->Query("UPDATE db_users_b SET exp = exp + '$exp' + '$exp1' WHERE id ='$usid' LIMIT 1");
chelton085
Местный
- Сообщения
- 174
- Реакции
- 6
Однако, нет. Если в апдейт вписывать $exp + $exp1 и т.д., то опыт капает за каждый из видов деревьев, не смотря на то, что покупается всего лишь один. То есть, опыт капает соответственно каждому виду, как я указал. Но, как сказал, покупается один вид, а сумма за все идет плюсом.
То бишь, запара теперь в построении конструкции апдейта.
То бишь, запара теперь в построении конструкции апдейта.
FarMan
Местный
- Сообщения
- 58
- Реакции
- 9
сделай 2 запросаchelton085 написал(а):Однако, нет. Если в апдейт вписывать $exp + $exp1 и т.д., то опыт капает за каждый из видов деревьев, не смотря на то, что покупается всего лишь один. То есть, опыт капает соответственно каждому виду, как я указал. Но, как сказал, покупается один вид, а сумма за все идет плюсом.
То бишь, запара теперь в построении конструкции апдейта.
а где нибудь выше опиши переменные
FarMan
Местный
- Сообщения
- 58
- Реакции
- 9
chelton085
Местный
- Сообщения
- 174
- Реакции
- 6
Или лыжи не едут, или асфальт виноват.. У меня ступор...
Вот так вот сделал - и зачсиляет суммарный опыт за все виды...
PHP:
$exp0 = 20;
$exp1 = 30;
$exp2 = 40;
$exp3 = 50;
$exp4 = 60;
PHP:
# Проверяем средства пользователя
$need_money = $sonfig_site["amount_".$citem];
if($need_money <= $user_data["money_b"]){
if($user_data["last_sbor"] == 0 OR $user_data["last_sbor"] > ( time() - 60*20) ){
$to_referer = $need_money * 0.1;
if ($сitem = "a_t"){
$db->Query("UPDATE db_users_b SET exp = exp + '$exp0' WHERE id ='$usid' LIMIT 1");
} else return;
if ($сitem = "b_t"){
$db->Query("UPDATE db_users_b SET exp = exp + '$exp1' WHERE id ='$usid' LIMIT 1");
} else return;
if ($сitem = "c_t"){
$db->Query("UPDATE db_users_b SET exp = exp + '$exp2' WHERE id ='$usid' LIMIT 1");
} else return;
if ($сitem = "d_t"){
$db->Query("UPDATE db_users_b SET exp = exp + '$exp3' WHERE id ='$usid' LIMIT 1");
} else return;
if ($сitem = "e_t"){
$db->Query("UPDATE db_users_b SET exp = exp + '$exp4' WHERE id ='$usid' LIMIT 1");
} else return;
# Добавляем дерево и списываем деньги
$db->Query("UPDATE db_users_b SET money_b = money_b - $need_money, $citem = $citem + 1,
last_sbor = IF(last_sbor > 0, last_sbor, '".time()."') WHERE id = '$usid'");
FarMan
Местный
- Сообщения
- 58
- Реакции
- 9
- Сообщения
- 280
- Реакции
- 46
Чтобы не считало все - выражение должно быть вида:chelton085 написал(а):Или лыжи не едут, или асфальт виноват.. У меня ступор...
PHP:$exp0 = 20; $exp1 = 30; $exp2 = 40; $exp3 = 50; $exp4 = 60;
Вот так вот сделал - и зачсиляет суммарный опыт за все виды...PHP:# Проверяем средства пользователя $need_money = $sonfig_site["amount_".$citem]; if($need_money <= $user_data["money_b"]){ if($user_data["last_sbor"] == 0 OR $user_data["last_sbor"] > ( time() - 60*20) ){ $to_referer = $need_money * 0.1; if ($сitem = "a_t"){ $db->Query("UPDATE db_users_b SET exp = exp + '$exp0' WHERE id ='$usid' LIMIT 1"); } else return; if ($сitem = "b_t"){ $db->Query("UPDATE db_users_b SET exp = exp + '$exp1' WHERE id ='$usid' LIMIT 1"); } else return; if ($сitem = "c_t"){ $db->Query("UPDATE db_users_b SET exp = exp + '$exp2' WHERE id ='$usid' LIMIT 1"); } else return; if ($сitem = "d_t"){ $db->Query("UPDATE db_users_b SET exp = exp + '$exp3' WHERE id ='$usid' LIMIT 1"); } else return; if ($сitem = "e_t"){ $db->Query("UPDATE db_users_b SET exp = exp + '$exp4' WHERE id ='$usid' LIMIT 1"); } else return; # Добавляем дерево и списываем деньги $db->Query("UPDATE db_users_b SET money_b = money_b - $need_money, $citem = $citem + 1, last_sbor = IF(last_sbor > 0, last_sbor, '".time()."') WHERE id = '$usid'");
if ($сitem == "a_t"){$exp = 20;}
if ($сitem == "b_t"){$exp1 = 30;}
(т.е. должно стоять два знака = )
- Сообщения
- 280
- Реакции
- 46
Можно обойтись и без этого..kvozimir написал(а):я не уверен,но не проще разделить каждое дерево отдельным кодом, и прописать к нему опыт?
- Сообщения
- 280
- Реакции
- 46
А можно сделать проще:chelton085 написал(а):Или лыжи не едут, или асфальт виноват.. У меня ступор...
PHP:$exp0 = 20; $exp1 = 30; $exp2 = 40; $exp3 = 50; $exp4 = 60;
Вот так вот сделал - и зачсиляет суммарный опыт за все виды...PHP:# Проверяем средства пользователя $need_money = $sonfig_site["amount_".$citem]; if($need_money <= $user_data["money_b"]){ if($user_data["last_sbor"] == 0 OR $user_data["last_sbor"] > ( time() - 60*20) ){ $to_referer = $need_money * 0.1; if ($сitem = "a_t"){ $db->Query("UPDATE db_users_b SET exp = exp + '$exp0' WHERE id ='$usid' LIMIT 1"); } else return; if ($сitem = "b_t"){ $db->Query("UPDATE db_users_b SET exp = exp + '$exp1' WHERE id ='$usid' LIMIT 1"); } else return; if ($сitem = "c_t"){ $db->Query("UPDATE db_users_b SET exp = exp + '$exp2' WHERE id ='$usid' LIMIT 1"); } else return; if ($сitem = "d_t"){ $db->Query("UPDATE db_users_b SET exp = exp + '$exp3' WHERE id ='$usid' LIMIT 1"); } else return; if ($сitem = "e_t"){ $db->Query("UPDATE db_users_b SET exp = exp + '$exp4' WHERE id ='$usid' LIMIT 1"); } else return; # Добавляем дерево и списываем деньги $db->Query("UPDATE db_users_b SET money_b = money_b - $need_money, $citem = $citem + 1, last_sbor = IF(last_sbor > 0, last_sbor, '".time()."') WHERE id = '$usid'");
Создаешь в базе данных в db_config, например, переменные с опытом для каждого дерева. exp_a_t , exp_b_t и т.д (по количеству видов дерева). Присваиваешь каждому нужное значение опыта (для exp_a_t = 20, exp_b_t = 30 и т.д.).
После покупки дерева прописываешь:
$exp = $sonfig_site["exp_".$citem];
$db->Query("UPDATE db_users_b SET exp = exp + '$exp' WHERE id ='$usid' LIMIT 1");
Вот и все..
chelton085
Местный
- Сообщения
- 174
- Реакции
- 6
ольшое всем спасибо, кто помогал разобраться. Сделал благодаря вам рабочий вид.
Вот такая конструкция работает на ура. Еще раз отдельное спасибо вдогон к + scroliks'у=)
Я самостоятельно дошел до такого же пути, тоже пришел изначально к мысли сделать в таблице ячейки с опытом для каждого дерева. Однако я ошибся вот где - я вынес строку $exp = $sonfig_site["exp_".$citem]; вообще отдельно, выше алгоритма покупки. Потому и не работало. Оказывается, дело-то в простом было - стоило эту строку поставить вместе с командой апдейта - и все заработало. А я мучался 3 дня почти=)
В идеале, можно еще в админку настройки опыта с конфига прикрутить, чтоб были как и все другие настройки. Но на работу это не влияет, так что можно отложить далеко на потом. Чтоб скриптец фермы был вообще фирменным почти=)
PHP:
$exp = $sonfig_site["exp_".$citem];
$db->Query("UPDATE db_users_b SET exp = exp + '$exp' WHERE id ='$usid' LIMIT 1");
Я самостоятельно дошел до такого же пути, тоже пришел изначально к мысли сделать в таблице ячейки с опытом для каждого дерева. Однако я ошибся вот где - я вынес строку $exp = $sonfig_site["exp_".$citem]; вообще отдельно, выше алгоритма покупки. Потому и не работало. Оказывается, дело-то в простом было - стоило эту строку поставить вместе с командой апдейта - и все заработало. А я мучался 3 дня почти=)
В идеале, можно еще в админку настройки опыта с конфига прикрутить, чтоб были как и все другие настройки. Но на работу это не влияет, так что можно отложить далеко на потом. Чтоб скриптец фермы был вообще фирменным почти=)
- Статус
- В этой теме нельзя размещать новые ответы.