За последние 24 часа нас посетили 59165 программистов и 1813 роботов. Сейчас ищут 848 программистов ...

Переменная для передачи

Тема в разделе "PHP для новичков", создана пользователем Golovorot, 22 мар 2015.

  1. Golovorot

    Golovorot Активный пользователь

    С нами с:
    24 окт 2012
    Сообщения:
    53
    Симпатии:
    0
    Код (Text):
    1. <?php
    2. //коэффициент для перевода алмазов для ресурсов = 200
    3.     include ("updUser.php");
    4.    
    5.     define ("RUBY_COST", 1000);
    6.    
    7.     $auth_key   = $_POST['hash'];
    8.     $id         = intval($_POST['id']);
    9.     $in         = $_POST["in"];
    10.     $out        = $_POST["out"];
    11.         $lvl            =   $_POST["plvl"];
    12.     $num        = intval($_POST["num"]);
    13.    
    14.     if ($auth_key != h($id)) exit("req=false&error=auth_error");
    15.    
    16.     if ($num < 0) exit ("req=false&error=invalid_num");
    17.    
    18.    
    19.    
    20.     $str = "SELECT resources.gold,resources.diamond,resources.millet FROM resources WHERE id = $id";
    21.     $req = mysql_query($str, $db);
    22.     if (!$req) exit ("req=false&error=mysql_error");
    23.     $arr = mysql_fetch_array($req);
    24.     if ($arr[$in]  < $num) exit ("req=false&error=need_more_resources");
    25.    
    26.     $course = floor(RUBY_COST * ((double)$arr["course"]+1));
    27.     function getRates($in,$out,$course){       
    28.         switch ($in) {
    29.             case "gold":
    30.                 //if ($out == "ruby")   return 1 / $course;
    31.                 if ($out == "millet")   return 0.95;
    32.                 break;
    33.             case "millet":
    34.                 //if ($out == "ruby")       return 0.95 * 1 / floor($course);
    35.                 if ($out == "gold")     return 0.95;
    36.                 break;
    37.                         case "diamond":
    38.                 if ($out == "gold")     return 200 * $lvl;
    39.                 if ($out == "millet")   return 200;
    40.                 break;
    41.             //case "ruby":
    42.                 //if ($out == "gold")   return floor(0.8 * $course);
    43.                 //if ($out == "millet")     return floor(0.8 * (1/0.95 * $course));
    44.                 //break;               
    45.         }
    46.         return 0;
    47.     }
    48.     $dout = getRates($in, $out , $course) * $num;
    49.    
    50.     $str = "UPDATE resources SET resources.$in = $arr[$in] - $num, resources.$out = $arr[$out] + $dout WHERE id=$id";
    51.     $req = mysql_query($str, $db);
    52.     if (!$req) exit ("req=false&error=mysql_error&p=1");
    53.     echo "req=true&$in=".($arr[$in] - $num)."&$out=".($arr[$out] + $dout);
    54.    
    55. ?>
    в строках
    Код (Text):
    1.                  case "diamond":
    2.                 if ($out == "gold")     return 200 * $lvl;
    3.                 if ($out == "millet")   return 200;
    4.                 break;
    нужно умножить на $lvl, а на деле не умножается. Как исправить?
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    а твоя функция знает о существовании $lvl?:)
     
  3. Golovorot

    Golovorot Активный пользователь

    С нами с:
    24 окт 2012
    Сообщения:
    53
    Симпатии:
    0
    а как ей рассказать?
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Ты же передал функции $in,$out,$course.
    Продолжи логический ряд:)
     
  5. Golovorot

    Golovorot Активный пользователь

    С нами с:
    24 окт 2012
    Сообщения:
    53
    Симпатии:
    0
    Спасибо