Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как вызвать функцию в DLE?

Как вызвать функцию в DLE?


     01.03.2017    Общие вопросы по PHP, Модули, MySQL    1634

вопрос
Доброго времени суток! Пожалуйста помогите!
Целый день пытаюсь разобраться, почему у меня при вызове функции в своем простеньком php скрипте летит ошибка
Fatal error: Call to a member function query() on a non-object in /var/www...

Фрагмент кода, ругается на query, не знает что это такое видимо, не понимаю как это поправить, помогите пожалуйста
case 1:
    one_hero()
...
function one_hero() {
$team1 = "OG";
$hero[$k] = "Rubick";
$query = $db->query("SELECT id FROM ".PREFIX."_fbstats WHERE team1='$team1' AND point1='1' AND (hero1='$hero[$k]' OR hero2='$hero[$k]' OR hero3='$hero[$k]' OR hero4='$hero[$k]' OR hero5='$hero[$k]');");
$fb_num1 = $db->num_rows($query);

Если делать без функции - все работает, что это за проклятье такое?

Ответа пока нет


11 комментариев

nowheremany
Эксперт

nowheremany - 2 марта 2017 09:24 -

Это не проклятье, а стандартное поведение, читайте документацию.
В функции $db локальная переменная, а должна быть глобальная.

function one_hero() {
global $db;
...
}

Благодарность принимаю тут Связь

UsurpatorVaticana
Юзер

UsurpatorVaticana - 2 марта 2017 14:13 -

Огромное спасибо!
Ошибки как не бывало, но проблема не решена.
Селект возвращает 0, хотя должно быть значение

p.s. глобал вчера пробовал писать, но не в функции(
pss пожалуйста дайте последний совет, как заставить работать
psss я понимаю что учить программировать это не про этот сайт, не могли бы просто дать ссылку на ту документацию о которой вы вы говорили, и wmz я бы отправил немного на чай.

nowheremany
Эксперт

nowheremany - 2 марта 2017 20:16 -

Цитата: UsurpatorVaticana
не могли бы просто дать ссылку на ту документацию о которой вы вы говорили


http://php.net/variables.scope

Благодарность принимаю тут Связь

UsurpatorVaticana
Юзер

UsurpatorVaticana - 2 марта 2017 14:23 -

Ой туплю, в функцию надо было передать переменные для селектов, заработало, еще раз спасибо!
ps ссылку на описание работы классов дле все еще жду

Twelvee
Юзер

Twelvee - 2 марта 2017 18:53 -


UsurpatorVaticana
Юзер

UsurpatorVaticana - 2 марта 2017 19:44 -

Список переменных и классов DLE которые вы можете использовать в вашем подключаемом модуле, без дополнительного объявления:
В том числе и DB, почему все же надо его объявлять?

LazyDev
PHP-developer

LazyDev - 2 марта 2017 21:42 -

UsurpatorVaticana, потому что класс вы можете вызвать из любого файла (кроме ajax), не подключая сам файл, это не касается переменной $db которую вы хотите использовать в функции, ее нужно туда передать либо вызвать глобально. Учите, как устроен php

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

nowheremany
Эксперт

nowheremany - 2 марта 2017 20:25 -

Причем здесь классы ДЛЕ? описание их все равно не найдете, читайте исходники,правда целсофт их не комментит

Благодарность принимаю тут Связь

UsurpatorVaticana
Юзер

UsurpatorVaticana - 2 марта 2017 20:59 -

Так речь о классах DLE, или $db и другие взять от куда либо?)

nowheremany
Эксперт

nowheremany - 2 марта 2017 21:20 -

Ваша ошибка не ДЛЕшная, а в синтаксической логике языка )
Я ссылку выше дал. Читайте и развивайтесь )

Благодарность принимаю тут Связь

UsurpatorVaticana
Юзер

UsurpatorVaticana - 2 марта 2017 22:43 -

спасибо за ответы, перевал вам на чай 1wmz

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх