За последние 24 часа нас посетили 17619 программистов и 1732 робота. Сейчас ищет 951 программист ...

Не вяжется функция

Тема в разделе "Прочие вопросы по PHP", создана пользователем Noll, 5 ноя 2015.

  1. Noll

    Noll Новичок

    С нами с:
    1 ноя 2015
    Сообщения:
    50
    Симпатии:
    0
    Уважаемые форумчане!
    Прошу Вас помочь мне в решении проблемы Fatal error: Call to a member function query() on a non-object in /home/-/public_html/competition_ref_fun.php on line 64
    Возможно,неправильные запросы и не получается разобраться..
    Может быть будут у вас какие нибудь идеи или же примеры,исходники по типу?
    Код (PHP):
    1. <?
    2. require("config.php");
    3. function addcompetition_ref($tip, $user,$value,$ref) {
    4. $sql=$db->query("SELECT dstop,dstart,id FROm wrc_competition_ref WHERE tip='$tip' and status='1' and user='$ref' and block='0' limit 1");
    5. if($db->num_rows($sql)>0)
    6.   {
    7.     $row=$db->get_row($sql);
    8.     $dstop = $row["dstop"];
    9.     $dstart = $row["dstart"];
    10.     $id = $row["id"];
    11.     $t = time();
    12.     if($dstop>$t&&$t>$dstart) // Если дата конкурса не закончилась, продолжаем
    13.        {
    14.           $res1=$db->query("select resvalue,id from wrc_compdata_ref where idk='$id' and user='$user' limit 1");
    15.           if($db->num_rows($res1)>0)
    16.              {
    17.                $res1=$db->get_row($res1);
    18.                $resvalue=$res1["resvalue"]+$value;
    19.                $db->query("update wrc_compdata_ref set resvalue='$resvalue' where id='".$res1["id"]."'");
    20.               }else{
    21.                $db->query("insert into wrc_compdata_ref (idk,user,resvalue) values ('$id','$user','$value')");
    22.               }
    23.        }   
    24.    }
    25. }
    26. // Проверка конкурса -----------------------------------------------------------------------------------------------------------------------
    27. function pr_ref_competition() {
    28. $sql=$db->query("select id,dstop,min,mest,p1,p2,p3,p4,p5,user,bank from wrc_competition_ref where status=1 ")or exit(mysql_error());
    29. while($row=$db->get_row($sql))
    30. {
    31.   $id=$row["id"];
    32.   $dstop=$row["dstop"];
    33.   $min=$row["min"];
    34.   $mest=$row["mest"];
    35.   $aUser=$row["user"];
    36.   $aBank=$row["bank"];
    37.   
    38.   if($dstop<time()) // если вышло время, начисляем призы
    39.     {
    40.       $i=1;
    41.         $db->query("update wrc_competition_ref set status='2',bank=0 where id='$id'");
    42.         $sql2=$db->query("select id,user,resvalue,status from wrc_compdata_ref where idk='$id' order by resvalue desc limit $mest");
    43.         while($row2=$db->get_row($sql2))
    44.       {
    45.         $cUser=$row2["user"];
    46.         $cResvalue=$row2["resvalue"];
    47.         $cPriz=$row["p".$i];
    48.         $cStatus=$row2["status"];
    49.         
    50.         if($cResvalue>=$min&&$cStatus==0) 
    51.          { 
    52.           $db->query("update wrc_compdata_ref set status='$cPriz' where id='".$row2["id"]."'"); // пометили что начислили
    53.           $db->query("update tb_users set money=money+'$cPriz' where username='".$cUser."'"); // Начисляем приз
    54.           $aBank-=$cPriz;
    55.          }
    56.         $i++;
    57.       }
    58.       $db->query("update tb_users set money=money+'$aBank' where username='".$aUser."'"); // возвратили неиспользованное 
    59.     }
    60. }
    61. }
    62. // Определяем кто является рефералом в разных скриптах -----------------------------------------------------------------------------------------
    63. function getref($t,$user) {
    64. $sql=$db->query("select referer from tb_users where username='$user' limit 1");
    65. $row=mysqli_fetch_row($sql);
    66. $ref=$row["referer"];
    67. if($t==0) 
    68.   { $sql=$db->query("select username from tb_users where id='$ref' limit 1");
    69.     $row=mysqli_fetch_row($sql);
    70.     $ref = $row["username"];
    71.   }
    72. return $ref;
    73. }
    74. ?>
    Линия 64 с ошибкой подчеркнута:
    // Определяем кто является рефералом в разных скриптах --------------------
    function getref($t,$user) {
    $sql=$db->query("select referer from tb_users where username='$user' limit 1");
     
  2. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    а если перевести на русский ошибку????
     
  3. Noll

    Noll Новичок

    С нами с:
    1 ноя 2015
    Сообщения:
    50
    Симпатии:
    0
    Фатальная ошибка: Вызов звена функции запроса query() на не-объект в...
     
  4. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Функция не видит вашу переменную $db, область видимости не позволяет.
    Вам нужно передать ее в функцию либо сделать global $db; внутри функции или использовать ООП.
     
  5. Noll

    Noll Новичок

    С нами с:
    1 ноя 2015
    Сообщения:
    50
    Симпатии:
    0
    С global у меня появляется синтаксическая ошибка T_Global
    Можете подать пример использования ООП для этого кода?
     
  6. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    Создавай класс тогда (:)
     
  7. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Код (PHP):
    1. function addcompetition_ref($tip, $user,$value,$ref, $db) { 
    и так везде, где ты используешь переменную $db
     
  8. Noll

    Noll Новичок

    С нами с:
    1 ноя 2015
    Сообщения:
    50
    Симпатии:
    0
    Получилось)) Всем спасибо! Правильно вписал global в функцию...