Автор Тема: Как настроить курс игровой валюты при обмене с баланса вывода на рекламу  (Прочитано 844 раз)

0 Пользователей и 1 Гость просматривают эту тему.

nikogdaАвтор темы

  • *
  • Оффлайн
  • Награды Более 7 лет на форуме Более 100 сообщений Более 50 созданных тем Топ 10 по созданным темам
  • Дата регистрации: Июль 2016
  • Сообщений: 201
  • Страна: ru
  • Поблагодарили: 4 раз(а)
  • Репутация +0/-0
  • Пол: Мужской
Здравствуйте.

Люди помогите настроить обменник с баланса вывода на рекламу. Больше 20 скриптов пересмотрел - нигде пока не нашел этот модуль(

Я переделал обменник не знаю так вообще или нет, но по крайней мере в БД все прописывается и производится обмен, но не так, как нужно.

И вот что получается, когда я произвожу обмен у меня при обмене 100 серы с баланса вывода зачисляется столько же на баланс для рекламы, а должно всего 1 рубль зачислиться.
То есть должен соблюдаться курс: 100 серебра = 1 рубль
А этого не происходит.


Думаю виновата вот эта строка, но это не точно и также пробовал ставить деление в этой строке на 1000 10000 - не помогает(
      $add_sumswap = ($sonfig_site["percent_swap_rek"] > 0) ? ( ($sonfig_site["percent_swap_rek"] / 100) * $sumswap) + $sumswap : $sumswap;

Сам код:
<?PHP

if(isset($_POST["sumswap"])){

$sumswap = intval($_POST["sumswap"]);

   if($sumswap >= 100){
   
      if($user_data["money_p"] >= $sumswap){
      
      $add_sumswap = ($sonfig_site["percent_swap_rek"] > 0) ? ( ($sonfig_site["percent_swap_rek"] / 100) * $sumswap) + $sumswap : $sumswap;
      
      $ta = time();
      $td = $ta + 60*60*24*15;
      
      $db->Query("UPDATE db_users_b SET money_r = money_r + $add_sumswap, money_p = money_p - $sumswap WHERE id = '$usid'");
      $db->Query("INSERT INTO db_swap_ser (user_id, user, amount_r, amount_p, date_add, date_del) VALUES ('$usid','$usname','$add_sumswap','$sumswap','$ta','$td')");
      
      echo "<center><font color = 'green'>Обмен произведен</font></center><BR />";
      
      }else echo "<center><font color = 'red'>Недостаточно серебра для обмена</font></center><BR />";
   
   }else echo "<center><font color = 'red'>Минимальная сумма для обмена 100 серебра</font></center><BR />";

}

?>
 

whoohaw

  • *
  • *
  • Оффлайн
  • Награды Более 6 лет на форуме !!! За помощь пользователям Более 250 сообщений За финансовую помощь форуму !!! Репутация более 15 За время в онлайне на форуме Более 10 созданных тем
  • Дата регистрации: Апр. 2018
  • Расположение: Тверь
  • Возраст: 35
  • Сообщений: 320
  • Страна: ru
  • Поблагодарили: 27 раз(а)
  • Репутация +17/-1
  • Пол: Мужской
  • Дата рождения:
    1988-09-21
    Социальные сети:
    ВКонтакте
$add_sumswap = ($sonfig_site["percent_swap_rek"] > 0) ? ( ($sonfig_site["percent_swap_rek"] / 100) * $sumswap) + $sumswap : $sumswap;
- это тернарный оператор в php, разбери, как они работают :)

Данный код, я тебе разделю на составляющие. В общем - это аналог if (...) else, только записан в строку выражения.

 (выражение) ? Истина : Ложь;

Что происходит в этом случае?

Если выгрузка из базы по полю percent_swap_rek больше 0, то?
1. Происходит это действие:
 ( ($sonfig_site["percent_swap_rek"] / 100) * $sumswap) + $sumswap
(получаем свои введенные данные с процентом, установленном в базе)
2. $sumswap - Выражение оставит значение без изменения (обмен 100 на 100, или 200 на 200, то есть без процента), если percent_swap_rek равно 0 или меньше 0. Потому что условие выражения не было пройдено.

Теперь посмотри, что у тебя получается. Какой выход из этой ситуации? Что у тебя в базе хранится в колонке percent_swap_rek?
Зная, как работает тернарный оператор - ты сможешь правильно поделить на 100 каждое из выражений. Либо ты сможешь просто произвести деление по полученному результату, независимо от того, как было выполнено выражение. Добавив просто строку:

 $add_sumswap = $add_sumswap/100;
 

nikogdaАвтор темы

  • *
  • Оффлайн
  • Награды Более 7 лет на форуме Более 100 сообщений Более 50 созданных тем Топ 10 по созданным темам
  • Дата регистрации: Июль 2016
  • Сообщений: 201
  • Страна: ru
  • Поблагодарили: 4 раз(а)
  • Репутация +0/-0
  • Пол: Мужской
$add_sumswap = ($sonfig_site["percent_swap_rek"] > 0) ? ( ($sonfig_site["percent_swap_rek"] / 100) * $sumswap) + $sumswap : $sumswap;
- это тернарный оператор в php, разбери, как они работают :)

Данный код, я тебе разделю на составляющие. В общем - это аналог if (...) else, только записан в строку выражения.

 (выражение) ? Истина : Ложь;

Что происходит в этом случае?

Если выгрузка из базы по полю percent_swap_rek больше 0, то?
1. Происходит это действие:
Код: [Выделить]
 ( ($sonfig_site["percent_swap_rek"] / 100) * $sumswap) + $sumswap
(получаем свои введенные данные с процентом, установленном в базе)
2. $sumswap - Выражение оставит значение без изменения (обмен 100 на 100, или 200 на 200, то есть без процента), если percent_swap_rek равно 0 или меньше 0. Потому что условие выражения не было пройдено.

Теперь посмотри, что у тебя получается. Какой выход из этой ситуации? Что у тебя в базе хранится в колонке percent_swap_rek?
Зная, как работает тернарный оператор - ты сможешь правильно поделить на 100 каждое из выражений. Либо ты сможешь просто произвести деление по полученному результату, независимо от того, как было выполнено выражение. Добавив просто строку:

 $add_sumswap = $add_sumswap/100;


Как все интересно расписано и трудно для понимания)))
В колонке percent_swap_rek я прописал 0.

Я сделал вот так и все заработало. Надеюсь что правильно.
      $add_sumswap = ($sonfig_site["percent_swap_rek"] > 0) ? ( ($sonfig_site["percent_swap_rek"] / 100) * $sumswap) + $sumswap : $sumswap;
      $add_sumswap = $add_sumswap/100;
 

whoohaw

  • *
  • *
  • Оффлайн
  • Награды Более 6 лет на форуме !!! За помощь пользователям Более 250 сообщений За финансовую помощь форуму !!! Репутация более 15 За время в онлайне на форуме Более 10 созданных тем
  • Дата регистрации: Апр. 2018
  • Расположение: Тверь
  • Возраст: 35
  • Сообщений: 320
  • Страна: ru
  • Поблагодарили: 27 раз(а)
  • Репутация +17/-1
  • Пол: Мужской
  • Дата рождения:
    1988-09-21
    Социальные сети:
    ВКонтакте
ну разбери на примере ))

$data_digital = (1>2) ? ("1 больше, чем 2 - это правда О_о"):("1 больше, чем 2 - это неправда!");
echo $data_digital;
 

nikogdaАвтор темы

  • *
  • Оффлайн
  • Награды Более 7 лет на форуме Более 100 сообщений Более 50 созданных тем Топ 10 по созданным темам
  • Дата регистрации: Июль 2016
  • Сообщений: 201
  • Страна: ru
  • Поблагодарили: 4 раз(а)
  • Репутация +0/-0
  • Пол: Мужской
ну разбери на примере ))

Код: [Выделить]
$data_digital = (1>2) ? ("1 больше, чем 2 - это правда О_о"):("1 больше, чем 2 - это неправда!");
echo $data_digital;

Прочел несколько раз, стараюсь понять и вникнуть в смысл.  В общем  в итоге запутался еще больше ^^.
В очередной раз Спасибо огромное за помощь.
 

whoohaw

  • *
  • *
  • Оффлайн
  • Награды Более 6 лет на форуме !!! За помощь пользователям Более 250 сообщений За финансовую помощь форуму !!! Репутация более 15 За время в онлайне на форуме Более 10 созданных тем
  • Дата регистрации: Апр. 2018
  • Расположение: Тверь
  • Возраст: 35
  • Сообщений: 320
  • Страна: ru
  • Поблагодарили: 27 раз(а)
  • Репутация +17/-1
  • Пол: Мужской
  • Дата рождения:
    1988-09-21
    Социальные сети:
    ВКонтакте
Ну посмотри какое сообщение выводит при таком раскладе )) всегда второе )
Поменяй выражение так, чтобы было правильно, например и выведет первое.

Если выражение истинно, то выполняется код, последующий за знаком ?
Если же выражение ложно, то выполнится код, последующий за разделителем :

Успехов! )
 
Теги: