Помогите разобраться почему в этом случае не работает функция. Создал новый фаил allpage.php, в index.php заинклюдил его. Но что-то пошло не так, а что не могу понять. allpage.php Код (PHP): if (isset($_SESSION['user'])){ $res = q(" SELECT * FROM `users` WHERE `id` = ".$_SESSION['user']['id']." LIMIT 1 "); $_SESSION['user'] = mysqli_fetch_assoc($res); if ($_SESSION['user']['activate'] != 1 ) { header("Location: index.php?modules=main"); exit(); } } Ошибка: Fatal error: Call to undefined function q() in Z:\home\test1.ru\www\modules\allpage.php on line 3 Сама функция: Код (PHP): function q($query){ global $link; $res = mysqli_query($link,$query); if($res === false ){ $info = debug_backtrace(); $error = date("d.m.Y H:i:s")." ERROR QUERY: ".$query."</br>\n".mysqli_error($link)." in a file ".$info['0']['file']." on line ".$info['0']['line']; file_put_contents('./logs/mysql.log',strip_tags($error)."\n\n",FILE_APPEND); echo $error; exit(); } else { return $res; } } Исправил название темы на более соответствующее. - модераторъ PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Код (PHP): $res = q(" SELECT * FROM `users` WHERE `id` = ".$_SESSION['user']['id']." LIMIT 1 "); PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Re: Не работает функция. нет, это она вызвана. где она определена? ну то есть function q ($param) { /* code */ }
В других случаях нет ошибок, а только в этом. ./libs/default.php Код (PHP): function q($query){ global $link; $res = mysqli_query($link,$query); if($res === false ){ $info = debug_backtrace(); $error = date("d.m.Y H:i:s")." ERROR QUERY: ".$query."</br>\n".mysqli_error($link)." in a file ".$info['0']['file']." on line ".$info['0']['line']; file_put_contents('./logs/mysql.log',strip_tags($error)."\n\n",FILE_APPEND); echo $error; exit(); } else { return $res; } } PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Re: Не работает функция. а, теперь вижу что в первом сообщении есть код функции. ну тогда вопрос: а этот файл подключается тем файлом который падает в фатальную ошибку неопределенной функции?
все подключается через index.php Код (PHP): include_once './modules/allpage.php'; include_once './config.php'; include_once './libs/default.php'; include_once './variables.php'; $link = mysqli_connect(Core::$DB_HOST, Core::$DB_LOGIN, Core::$DB_PASSWORD, Core::$DB_NAME); mysqli_set_charset($link, 'utf8'); include './modules/'.$_GET['modules'].'/'.$_GET['page'].'.php'; include './skins/'.Core::$SKIN.'/index.tpl'; Добавлено спустя 1 минуту 25 секунд: Неужели ошибка в порядке инклюда? PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Re: Не работает функция. Когда возникает ошибка ты какой адрес открываешь? http://test1.ru/... Что дальше?
index.php Я поменял местами инклюд и ошибка пропала До Код (PHP): include_once './modules/allpage.php'; include_once './config.php'; include_once './libs/default.php'; include_once './variables.php'; После Код (PHP): include_once './config.php'; include_once './libs/default.php'; include_once './variables.php'; include_once './modules/allpage.php'; PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Ну да, точно, нельзя обратиться к функции, которая определяется позже. Исключение есть: если вызов и определение функция описаны в одном файле, то можно поставить вызов раньше определения, при условии, что определение функции не окружено никакими условиями. Но если функция описана в подключаемом файле, то он должен быть заинклюден раньше вызова. Так устроен PHP. Добавлено спустя 8 минут 19 секунд: Вот единственный рабочий вариант, когда вызов стоит раньше определения и ошибки НЕ будет: Код (PHP): <?php echo q('text'); // функция определяется позже вызова - всё ok function q($s) { return '[[[ ' . $s . ' ]]]'; } Если поместить функцию в отдельный файл, то будет ошибка. Вот так: index.php Код (PHP): <?php echo q('text'); // функция определяется позже вызова - ошибка Undefined function include 'lib.php'; lib.php Код (PHP): <?php function q($s) { return '[[[ ' . $s . ' ]]]'; } И вот так будет ошибка: Код (PHP): <?php echo q('text'); // функция определяется позже вызова - ошибка Undefined function if (true) { function q($s) { return '[[[ ' . $s . ' ]]]'; } } Но если передвинуть echo q('text'); ниже определения, то всё сработает.