Вызывающая функция php joomla не работает
Я написал простую страницу PHP, интегрированную с базой данных Joomla. Я написал две функции и назвал их.
если код в функциях написан как нефункциональный (в самом коде), он работает отлично. НО! когда код находится в функции и вызывается со страницы, весь экран становится белым.
код прост... первая функция получает идентификатор пользователя и возвращает сумму чисел в таблице. вторая функция получает имя пользователя и возвращает его идентификационный номер. чтобы убедиться, что функции работают, я отправил им конкретные значения (24 для первой функции и "admin" для второй).
код:
<?php
defined('_JEXEC') or die('Restricted access');
$items = $params->get('items', 10);
$db =& JFactory::getDBO();
function get_sum($uid)
{
$sum = 0;
$query = "SELECT orderpayment_amount
FROM #__j2store_orders
WHERE user_id = '$uid'
ORDER BY id DESC";
$db->setQuery( $query, 0 , $items );
$rows = $db->loadObjectList();
foreach($rows as $row)
{
$sum = $sum + $row->orderpayment_amount;
}
return "$sum";
}
function getTalId($u)
{
$query = "SELECT id
FROM #__users
WHERE username = '$u'
ORDER BY id DESC";
$db->setQuery( $query, 0 , $items );
$rows = $db->loadObjectList();
foreach($rows as $row)
{
return $row->id;
}
}
echo get_sum(42);
echo getTalId('admin');
?>
Я застрял на два дня с этой проблемой. Буду признателен за любую помощь. спасибо.
1 ответ
То, что вы испытываете, это Белый экран смерти.
Скорее всего, вы отключили отчеты об ошибках (что рекомендуется для производства) t Ошибка есть, но она не отображается на экране. Вы можете либо:
- Изменить отчет об ошибках (Система> Глобальная конфигурация> Сервер> Отчет об ошибках: Разработка)
- Проверьте журналы ошибок вашего сервера.
Что касается того, почему это происходит, я бы сказал, что у вас нет доступа к переменной $ db внутри функции (см. Этот ответ).
Если код будет внутри модели класса Jooomla MVC, $db = $this->getDbo()
сделал бы подобное.
Я рекомендую вам использовать классы вместо функций, вы получите некоторые дополнительные вещи, такие как автозагрузка